TurboGears - Administratorzugriff

TurboGears bietet die Erweiterung tgext.admin, die von tgext.crud und sprox unterstützt wird. Dieses Sprox ist ein Paket, das zum Erstellen von Web-Widgets direkt aus dem Datenbankschema verwendet wird. Dies kann zum automatischen Erstellen einfacher Verwaltungsseiten verwendet werden und ist das Toolkit, mit dem die Seite / admin in den neu gestarteten Anwendungen betrieben wird.

Standardmäßig bietet der Administrator einen automatisch generierten Zugriff auf alle in Ihre Projektmodelle / __ init__.py importierten Modelle.

So erstellen Sie TurboGears Admin

Der Standard-TurboGears-Administrator wird als Objekt der AdminController-Klasse erstellt.

from tgext.admin.controller import AdminController

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

Dadurch wird ein Administrator für alle Modelle mit der Standard-TurboGears-Administratorkonfiguration erstellt.

Über den Manager wurde während der Einrichtungsphase ein Benutzer erstellt. Jetzt ist es möglich, auf den TurboGears Admin unter zuzugreifenhttp://localhost:8080/adminBeim ersten Zugriff auf diese Seite wird nach einer Authentifizierung gefragt. Sie können einfach den Benutzernamen und das Kennwort des Benutzers angeben, den der Befehl setup-app für uns erstellt hat.

Username: manager
Password: managepass

Fügen Sie der RootController-Klasse (controller / root.py) die folgenden Funktionen hinzu, um sich beim Schnellstartprojekt anzumelden.

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)

Melden Sie sich nach dem Starten des Servers und durch einen Besuch bei der Schnellstartanwendung an http://localhost:8080/loginGeben Sie dann die oben angezeigten Manager-Anmeldeinformationen ein. Der Browser zeigt eine Administrationsseite wie die unten gezeigte an -

Die Seite zeigt alle in dieser Anwendung erstellten Modelle. Sie können auf ein beliebiges Modell klicken, um die Liste der darin enthaltenen Einträge anzuzeigen.

Über die Schaltfläche "Neu" über diesem Datagrid kann der Datensatz hinzugefügt werden. Ebenso werden in der Aktionsspalte dieses Datagrids Aktionsschaltflächen zum Bearbeiten und Löschen eines Datensatzes bereitgestellt. Ein Suchfeld wird ebenfalls angezeigt, um Datensätze bedingt auszuwählen.