Este é um plugin simples de administração web2py.
Ele usa intensamente os recursos fornecidos pelo web2py SQLFORM.smartgrid, apresentando extensa pesquisa, ações, histórico, links de navegação personalizados, paginação e várias personalizações.
Ele leva a segurança muito a sério e usa grupos e permissões para controle de acesso refinado.
AQUI você pode encontrar um screencast do processo de instalação.
NOTA: a instalação ficou muito mais fácil, após a instalação o primeiro usuário logado é automaticamente colocado em w2a_root então basta instalar o plugin e acessar /yourapp/web2admin.
ou
O branch master sempre conterá a última versão estável (o desenvolvimento será feito em outro branch).
Basta usar qualquer um dos procedimentos de instalação e substituir o conteúdo do plugin em seu aplicativo web2py.
Instale o plugin ;)
Se um usuário estiver no grupo w2a_root, ele terá todos os direitos, incluindo adicionar permissões ou alterar os grupos de outros usuários.
Se um usuário estiver no grupo w2a_manager, ele terá todas as permissões para todas as tabelas, exceto tabelas de autenticação (sem alteração de permissões para outros usuários).
O primeiro usuário logado que executar o código web2admin será automaticamente colocado no grupo w2a_root.
Conceda permissões refinadas a usuários específicos para tabelas específicas:
Acesse http://localhost:8000/yourapp/web2admin ou http://localhost:8000/yourapp/plugin_web2admin
Cole as seguintes linhas de configuração em seu arquivo de modelo (por exemplo, db.py) para alterar o comportamento do web2admin:
Altere o logotipo (marca) do aplicativo de administração plugins.web2admin.logo = 'SuperApp'
plugins.web2admin.logo = IMG(_src=URL('static', 'images/google-buzz.png')) + 'SupperApp'
Configure o número de itens por página:
plugins.web2admin.items_per_page = 5 (default 20)
Adicione links extras na barra lateral:
plugins.web2admin.custom_sidebar_title = "My Links"
plugins.web2admin.custom_sidebar_links = [
A('External link', _href='http://www.youhe.ro', _target='_blank'),
A('Back to homepage', _href=URL('default', 'index', args=0)),
]
plugins.web2admin.headers é um dicionário que mapeia 'tablename.fieldname' no rótulo do cabeçalho correspondente, por exemplo:
plugins.web2admin.headers = {'student.last_name': T('Surname')}
plugins.web2admin.orderby é um dicionário usado para definir a ordem padrão para as linhas da tabela:
plugins.web2admin.orderby = {'student': db.student.last_name}
plugins.web2admin.groupby é um dicionário usado para definir o agrupamento das linhas da tabela. Você pode agrupar registros com o mesmo valor para o campo especificado (isso é específico do back-end e não está no Google NoSQL):
plugins.web2admin.groupby = {'student': db.student.last_name}
plugins.web2admin.maxtextlength define o comprimento máximo do texto a ser exibido para cada valor de campo, na visualização em grade (padrão 20). Este valor pode ser substituído para cada campo usando plugins.web2admin.maxtextlengths, um dicionário de 'tablename.fieldname':length. Se o texto precisar ser truncado, um len('...') = 3 extra será subtraído do comprimento especificado.fiel
plugins.web2admin.maxtextlength ={'student': 10}
plugins.web2admin.maxtextlengths ={'test.name': 5}
plugins.web2admin.field_id é um dicionário que especifica o campo da tabela a ser usado como ID, por exemplo:
plugins.web2admin.field_id = {'student', db.stuident.id}
plugins.web2admin.showbuttontext opção booleana para mostrar/ocultar o texto do botão:
plugins.web2admin.showbuttontext = False
Se houver vários objetos de banco de dados definidos, tudo o que há a fazer é adicionar um parâmetro plugins.web2admin.dbs que é uma tupla de objetos de banco de dados. Por padrão, a lista tem apenas um elemento chamado db, então se, por qualquer motivo, o único objeto tiver um nome diferente, adicione e especifique assim: plugins.web2admin.dbs = (my_special_db,) <-- lembre-se da vírgula.
plugins.web2admin.dbs = (db, other_db, session_db)
Um menu Bancos de dados deve aparecer na barra de navegação superior para permitir a seleção do banco de dados.
Você pode restringir os campos a serem exibidos para tabelas específicas definindo plugins.web2admin.fields como um dicionário de nomes de tabelas e uma lista de campos dessas tabelas:
plugins.web2admin.fields={
'test': [db.test.id, db.test.name],
'student':[db.student.id, db.student.first_name]
}
As ações podem ser executadas em vários itens, verificando-os e selecionando uma ação no cabeçalho.
Por padrão existem duas ações definidas: excluir e clonar.
Para definir uma nova ação você deve criar uma função que receba como argumentos um nome de tabela e uma lista de ids, e definir o parâmetro plugin plugins.web2admin.actions para um dicionário tendo como chaves os nomes das ações e como valores as funções das ações:
def hello_action(table, ids):
if table != 'student':
session.flash = 'Not available'
else:
session.flash = '%s, %s' %(table, ids)
plugins.web2admin.actions = {'hello': hello_action}
Se desejar desabilitar as ações padrão ou não desejar nenhuma ação (se você não criou nenhuma), você pode definir o parâmetro plugins.web2admin.default_actions como um dicionário vazio.
plugins.web2admin.default_actions={}
plugins.web2admin.links é usado para exibir novas colunas que podem ser links para outras páginas. O argumento links deve ser um dicionário ligando um nome de tabela a uma lista de dict(header='name',body=lambda row: A(...)) onde header é o cabeçalho da nova coluna e body é uma função que leva uma linha e retorna um valor. No exemplo, o valor é um auxiliar A(...).
plugins.web2admin.links = {'student':[
dict(header=T('hello'), body=lambda row: A('click me', _href=URL('default', 'hello', args=row.id))),
dict(header=T('foo'), body=lambda row: A('bar', _href=URL('default', 'foo', args=row.id))),
]}
plugins.web2admin.left é uma expressão opcional de junção à esquerda usada para construir ...select(left=...). Possui o valor de um dicionário ligando o nome da tabela e a expressão de junção, por exemplo:
plugins.web2admin.left = {'student': db.student.on(db.test.id)}
plugins.web2admin.filters é uma lista de campos pelos quais um filtro rápido será criado na barra de menu direita, por exemplo:
plugins.web2admin.filters = (db.test.date, db.test.passed, db.test.mark, db.test.name, db.student.last_name)
Para campos numéricos os valores mínimo e máximo são obtidos e o intervalo é dividido em quatro subintervalos. Tipos de campo suportados: data e hora, data, string, texto, número inteiro, duplo, booleano.