Este es un sencillo complemento de administración de web2py.
Utiliza en gran medida las funciones proporcionadas por web2py SQLFORM.smartgrid que incluye búsqueda extensa, acciones, historial, enlaces de navegación personalizados, paginación y varias personalizaciones.
Se toma muy en serio la seguridad y utiliza grupos y permisos para un control de acceso detallado.
AQUÍ puede encontrar un screencast del proceso de instalación.
NOTA: la instalación ahora es mucho más fácil, después de la instalación, el primer usuario que inició sesión se coloca automáticamente en w2a_root, así que simplemente instale el complemento y acceda a /yourapp/web2admin.
o
La rama maestra siempre contendrá la última versión estable (el desarrollo se realizará en otra rama).
Simplemente utilice cualquiera de los procedimientos de instalación y sobrescriba el contenido del complemento en su aplicación web2py.
Instale el complemento;)
Si un usuario está en el grupo w2a_root, entonces tiene todos los derechos, incluido agregar permisos o cambiar los grupos de otros usuarios.
Si un usuario está en el grupo w2a_manager, entonces tiene todos los permisos para todas las tablas excepto las tablas de autenticación (no se pueden cambiar permisos para otros usuarios).
El primer usuario que inicie sesión y ejecute el código web2admin se colocará automáticamente en el grupo w2a_root.
Otorgue permisos específicos a usuarios particulares para tablas específicas:
Acceda a http://localhost:8000/yourapp/web2admin o http://localhost:8000/yourapp/plugin_web2admin
Pegue las siguientes líneas de configuración en su archivo modelo (por ejemplo, db.py) para cambiar el comportamiento de web2admin:
Cambiar el logo (marca) de la aplicación de administración plugins.web2admin.logo = 'SuperApp'
plugins.web2admin.logo = IMG(_src=URL('static', 'images/google-buzz.png')) + 'SupperApp'
Configure el número de elementos por página:
plugins.web2admin.items_per_page = 5 (default 20)
Agregue enlaces adicionales en la 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 es un diccionario que asigna 'tablename.fieldname' a la etiqueta del encabezado correspondiente, por ejemplo:
plugins.web2admin.headers = {'student.last_name': T('Surname')}
plugins.web2admin.orderby es un diccionario que se utiliza para establecer el orden predeterminado de las filas de la tabla:
plugins.web2admin.orderby = {'student': db.student.last_name}
plugins.web2admin.groupby es un diccionario que se utiliza para configurar la agrupación de las filas de la tabla. Puede agrupar registros con el mismo valor para el campo especificado (esto es específico del back-end y no está en Google NoSQL):
plugins.web2admin.groupby = {'student': db.student.last_name}
plugins.web2admin.maxtextlength establece la longitud máxima de texto que se mostrará para cada valor de campo, en la vista de cuadrícula (predeterminado 20). Este valor se puede sobrescribir para cada campo usando plugins.web2admin.maxtextlengths, un diccionario de 'tablename.fieldname':length. Si el texto debe truncarse, se resta un len('...') = 3 adicional de la longitud especificada.fiel
plugins.web2admin.maxtextlength ={'student': 10}
plugins.web2admin.maxtextlengths ={'test.name': 5}
plugins.web2admin.field_id es un diccionario que especifica el campo de la tabla que se utilizará como ID, por ejemplo:
plugins.web2admin.field_id = {'student', db.stuident.id}
plugins.web2admin.showbuttontext interruptor booleano para mostrar/ocultar el texto del botón:
plugins.web2admin.showbuttontext = False
Si hay varios objetos de base de datos definidos, todo lo que hay que hacer es agregar un parámetro plugins.web2admin.dbs que sea una tupla de objetos de bases de datos. De forma predeterminada, la lista tiene solo un elemento llamado db, por lo que si, por cualquier motivo, el único objeto tiene un nombre diferente, agregue, especifíquelo de esta manera: plugins.web2admin.dbs = (my_special_db,) <-- tenga en cuenta la coma.
plugins.web2admin.dbs = (db, other_db, session_db)
Debería aparecer un menú de Bases de datos en la barra de navegación superior para habilitar la selección de bases de datos.
Puede restringir los campos que se mostrarán para tablas específicas configurando plugins.web2admin.fields en un diccionario de nombres de tablas y una lista de campos de esas tablas:
plugins.web2admin.fields={
'test': [db.test.id, db.test.name],
'student':[db.student.id, db.student.first_name]
}
Se pueden ejecutar acciones en varios elementos marcándolos y seleccionando una acción del encabezado.
Por defecto hay dos acciones definidas: eliminar y clonar.
Para definir una nueva acción debes crear una función que tome como argumentos un nombre de tabla y una lista de ids, y establecer el parámetro del complemento plugins.web2admin.actions en un diccionario que tenga como claves los nombres de las acciones y como valores las funciones de las acciones:
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}
Si desea deshabilitar las acciones predeterminadas o no desea realizar ninguna acción (si no creó ninguna), puede configurar el parámetro plugins.web2admin.default_actions en un diccionario vacío.
plugins.web2admin.default_actions={}
plugins.web2admin.links se utiliza para mostrar nuevas columnas que pueden ser enlaces a otras páginas. El argumento de enlaces debe ser un diccionario que vincule un nombre de tabla a una lista de dict(header='name',body=lambda row: A(...)) donde header es el encabezado de la nueva columna y body es una función que toma una fila y devuelve un valor. En el ejemplo, el valor es un ayudante 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 es una expresión de unión izquierda opcional que se utiliza para crear ...select(left=...). Tiene el valor de un diccionario que vincula el nombre de la tabla y la expresión de unión, por ejemplo:
plugins.web2admin.left = {'student': db.student.on(db.test.id)}
plugins.web2admin.filters es una lista de campos mediante los cuales se creará un filtro rápido en la barra de menú derecha, por ejemplo:
plugins.web2admin.filters = (db.test.date, db.test.passed, db.test.mark, db.test.name, db.student.last_name)
Para campos numéricos se obtienen los valores mínimo y máximo y el intervalo se divide en cuatro subintervalos. Tipos de campos admitidos: fecha y hora, fecha, cadena, texto, entero, doble, booleano.