TurboGears - Acesso de administrador

O TurboGears fornece a extensão tgext.admin, que é fornecida por tgext.crud e sprox. Este Sprox é um pacote usado para a criação de widgets da web diretamente do esquema do banco de dados. Isso pode ser usado para criar páginas de administração simples automaticamente e é o kit de ferramentas que alimenta a página / admin nos aplicativos de início rápido recentemente.

Por padrão, o administrador fornecerá acesso autogerado a todos os modelos importados em seus modelos de projeto / __ init__.py.

Como criar um administrador TurboGears

O administrador TurboGears padrão é criado como um objeto da classe AdminController -

from tgext.admin.controller import AdminController

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

Isso cria um administrador para todos os modelos com a configuração de administrador padrão do TurboGears.

Através do gerenciador, um usuário foi criado durante a fase de configuração. Agora, é possível obter acesso ao Administrador do TurboGears emhttp://localhost:8080/adminNa primeira vez que esta página for acessada, ela solicitará autenticação. Você pode simplesmente fornecer o nome de usuário e a senha do usuário que o comando setup-app criou para nós -

Username: manager
Password: managepass

Para fazer o login no projeto de início rápido, adicione as seguintes funções à 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)

Faça login no aplicativo de 'início rápido' após iniciar o servidor e visitar http://localhost:8080/logine, em seguida, insira as credenciais de gerente conforme exibido acima. O navegador exibirá uma página de administração como a mostrada abaixo -

A página mostra todos os modelos criados neste aplicativo. Você pode clicar em qualquer modelo para ver a lista de entradas nele -

O botão 'Novo' no topo deste datagrid permite que o registro seja adicionado. Da mesma forma, botões de ação para editar e excluir um registro também são fornecidos na coluna de ações deste datagrid. Uma caixa de pesquisa também é exibida para selecionar registros condicionalmente.