TurboGears - Accès administrateur

TurboGears fournit l'extension tgext.admin, qui est alimentée par tgext.crud et sprox. Ce Sprox est un package utilisé pour la création de widgets Web directement à partir du schéma de base de données. Cela peut être utilisé pour créer automatiquement des pages d'administration simples et c'est la boîte à outils qui alimente la page / admin dans les applications nouvellement démarrées rapidement.

Par défaut, l'administrateur fournira un accès généré automatiquement à tous les modèles importés dans vos modèles de projet / __ init__.py.

Comment créer un administrateur TurboGears

L'administrateur TurboGears par défaut est créé en tant qu'objet de la classe AdminController -

from tgext.admin.controller import AdminController

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

Cela crée un administrateur pour tous les modèles avec la configuration d'administration par défaut de TurboGears.

Via le gestionnaire, un utilisateur a été créé lors de la phase de configuration. Désormais, il est possible d'accéder à l'administrateur TurboGears à l'adressehttp://localhost:8080/adminLors du premier accès à cette page, il demandera une authentification. Vous pouvez simplement fournir le nom d'utilisateur et le mot de passe de l'utilisateur que la commande setup-app a créé pour nous -

Username: manager
Password: managepass

Afin de vous connecter au projet à démarrage rapide, ajoutez les fonctions suivantes à la 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)

Connectez-vous à l'application 'quickstarted' après le démarrage du serveur et en visitant http://localhost:8080/loginpuis entrez les informations d'identification du gestionnaire comme indiqué ci-dessus. Le navigateur affichera une page d'administration comme celle illustrée ci-dessous -

La page affiche tous les modèles créés dans cette application. Vous pouvez cliquer sur n'importe quel modèle pour voir la liste des entrées -

Le bouton «Nouveau» en haut de cette grille de données permet d'ajouter l'enregistrement. De même, des boutons d'action pour modifier et supprimer un enregistrement sont également fournis dans la colonne actions de cette grille de données. Une zone de recherche s'affiche également pour sélectionner les enregistrements de manière conditionnelle.