TurboGears - dostęp administracyjny

TurboGears udostępnia rozszerzenie tgext.admin, które jest obsługiwane przez tgext.crud i sprox. Ten Sprox to pakiet służący do tworzenia widgetów internetowych bezpośrednio ze schematu bazy danych. Może być używany do automatycznego tworzenia prostych stron administracyjnych i jest zestawem narzędzi obsługującym stronę / admin w nowo uruchamianych aplikacjach.

Domyślnie administrator zapewni automatycznie generowany dostęp do wszystkich modeli zaimportowanych do modeli projektu / __ init__.py.

Jak utworzyć administratora TurboGears

Domyślny administrator TurboGears jest tworzony jako obiekt klasy AdminController -

from tgext.admin.controller import AdminController

class RootController(BaseController):
   admin = AdminController(model, DBSession, config_type = TGAdminConfig)

Tworzy to administratora dla wszystkich modeli z domyślną konfiguracją administratora TurboGears.

Za pośrednictwem menedżera użytkownik został utworzony na etapie konfiguracji. Teraz można uzyskać dostęp do administratora TurboGears pod adresemhttp://localhost:8080/adminGdy ta strona jest otwierana po raz pierwszy, poprosi o uwierzytelnienie. Możesz po prostu podać nazwę użytkownika i hasło użytkownika, które utworzyło dla nas polecenie setup-app -

Username: manager
Password: managepass

Aby zalogować się do projektu szybkiego startu, dodaj następujące funkcje do klasy RootController (controllers / root.py).

from hello.lib.base import BaseController
from tg import expose, flash, redirect, request,url, lurl
from tg import redirect, validate
from hello import model
from hello.model import DBSession
from tgext.admin.tgadminconfig import BootstrapTGAdminConfig as TGAdminConfig
from tgext.admin.controller import AdminController
from tg.exceptions import HTTPFound

class RootController(BaseController):
   admin = AdminController(model, DBSession, config_type =  TGAdminConfig)
   
   @expose('hello.templates.index')
   def index(self):
      return dict(page = 'index')
   
   @expose('hello.templates.login')
   def login(self, came_from = lurl('/'), failure = None,    login = ''):
	
      if failure is not None:
         if failure == 'user-not-found':
            flash(_('User not found'), 'error')
         elif failure == 'invalid-password':
            flash(_('Invalid Password'), 'error')
			
      login_counter = request.environ.get('repoze.who.logins', 0)
		
      if failure is None and login_counter > 0:
         flash(_('Wrong credentials'), 'warning')
		 
      return dict(page = 'login', login_counter = str(login_counter), 
         came_from = came_from, login = login)
   @expose()
	
   def post_login(self, came_from = lurl('/')):
      if not request.identity:
         
         login_counter = request.environ.get('repoze.who.logins', 0) + 1
            redirect('/login', params = dict(came_from = came_from,
            __logins = login_counter))
		
         userid = request.identity['repoze.who.userid']
         flash(('Welcome back, %s!') % userid)
			
         return HTTPFound(location = came_from)

Zaloguj się do aplikacji „quickstarted” po uruchomieniu serwera i odwiedzeniu strony http://localhost:8080/logina następnie wprowadź poświadczenia menedżera, jak pokazano powyżej. Przeglądarka wyświetli stronę administratora, taką jak ta pokazana poniżej -

Strona pokazuje wszystkie modele utworzone w tej aplikacji. Możesz kliknąć dowolny model, aby zobaczyć listę wpisów w nim -

Przycisk „Nowy” na górze tego datagridu umożliwia dodanie rekordu. Podobnie przyciski akcji do edycji i usuwania rekordu są również dostępne w kolumnie akcji tego datagridu. Wyświetlane jest również pole wyszukiwania umożliwiające warunkowe wybieranie rekordów.