TurboGears - Accesso amministratore

TurboGears fornisce l'estensione tgext.admin, che è fornita da tgext.crud e sprox. Questo Sprox è un pacchetto utilizzato per la creazione di widget web direttamente dallo schema del database. Può essere utilizzato per creare automaticamente semplici pagine di amministrazione ed è il toolkit che alimenta la pagina / admin nelle nuove applicazioni avviate rapidamente.

Per impostazione predefinita, l'amministratore fornirà un accesso generato automaticamente a tutti i modelli importati nei modelli di progetto / __ init__.py.

Come creare TurboGears Admin

L'amministratore di TurboGears predefinito viene creato come oggetto della classe AdminController -

from tgext.admin.controller import AdminController

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

Questo crea un amministratore per tutti i modelli con la configurazione amministratore predefinita di TurboGears.

Tramite il manager è stato creato un utente in fase di setup. Ora è possibile accedere a TurboGears Admin all'indirizzohttp://localhost:8080/adminLa prima volta che si accede a questa pagina, verrà richiesta l'autenticazione. Puoi semplicemente fornire il nome utente e la password dell'utente che il comando setup-app ha creato per noi -

Username: manager
Password: managepass

Per accedere al progetto avviato rapidamente, aggiungi le seguenti funzioni alla classe 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)

Accedi all'applicazione "avvio rapido" dopo aver avviato il server e visitando http://localhost:8080/logine quindi immettere le credenziali del gestore come mostrato sopra. Il browser visualizzerà una pagina di amministrazione come quella mostrata di seguito -

La pagina mostra tutti i modelli creati in questa applicazione. Puoi fare clic su qualsiasi modello per visualizzare l'elenco delle voci in esso contenute -

Il pulsante "Nuovo" in cima a questo datagrid consente di aggiungere il record. Allo stesso modo, i pulsanti di azione per modificare ed eliminare un record sono forniti anche nella colonna delle azioni di questo datagrid. Viene inoltre visualizzata una casella di ricerca per selezionare i record in modo condizionale.