TurboGears: acceso de administrador

TurboGears proporciona la extensión tgext.admin, que funciona con tgext.crud y sprox. Este Sprox es un paquete que se utiliza para la creación de widgets web directamente desde el esquema de la base de datos. Esto se puede usar para crear automáticamente páginas de administración simples y es el kit de herramientas que impulsa la página / admin en las aplicaciones recién iniciadas.

De forma predeterminada, el administrador proporcionará un acceso generado automáticamente a todos los modelos importados en los modelos de su proyecto / __ init__.py.

Cómo crear un administrador de TurboGears

El administrador de TurboGears predeterminado se crea como un objeto de la clase AdminController:

from tgext.admin.controller import AdminController

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

Esto crea un administrador para todos los modelos con la configuración de administrador de TurboGears predeterminada.

A través del administrador, se ha creado un usuario durante la fase de configuración. Ahora, es posible obtener acceso al administrador de TurboGears enhttp://localhost:8080/adminLa primera vez que acceda a esta página, le pedirá autenticación. Simplemente puede proporcionar el nombre de usuario y la contraseña del usuario que el comando setup-app creó para nosotros:

Username: manager
Password: managepass

Para iniciar sesión en el proyecto de inicio rápido, agregue las siguientes funciones a la clase 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)

Inicie sesión en la aplicación de 'inicio rápido' después de iniciar el servidor y visitando http://localhost:8080/loginy luego ingrese las credenciales de administrador como se muestra arriba. El navegador mostrará una página de administración como la que se muestra a continuación:

La página muestra todos los modelos creados en esta aplicación. Puede hacer clic en cualquier modelo para ver la lista de entradas en él:

El botón 'Nuevo' en la parte superior de esta cuadrícula de datos permite agregar el registro. De manera similar, los botones de acción para editar y eliminar un registro también se proporcionan en la columna de acciones de esta cuadrícula de datos. También se muestra un cuadro de búsqueda para seleccionar registros de forma condicional.