Il s'agit d'un simple plugin d'administration web2py.
Il utilise largement les fonctionnalités fournies par web2py SQLFORM.smartgrid, avec une recherche étendue, des actions, un historique, des liens de navigation personnalisés, une pagination et diverses personnalisations.
Il prend la sécurité très au sérieux et utilise à la fois les groupes et les autorisations pour un contrôle d'accès précis.
ICI vous pouvez trouver un screencast du processus d'installation.
REMARQUE : l'installation est devenue beaucoup plus facile, après l'installation, le premier utilisateur connecté est automatiquement placé dans w2a_root, il suffit donc d'installer le plugin et d'accéder à /yourapp/web2admin.
ou
La branche master contiendra toujours la dernière version stable (le développement se fera sur une autre branche).
Utilisez simplement l'une des procédures d'installation et écrasez le contenu du plugin dans votre application web2py.
Installez le plugin ;)
Si un utilisateur fait partie du groupe w2a_root, il dispose de tous les droits, y compris l'ajout d'autorisations ou la modification des groupes d'autres utilisateurs.
Si un utilisateur fait partie du groupe w2a_manager, il dispose de toutes les autorisations pour toutes les tables à l'exception des tables d'authentification (aucune autorisation de modification pour les autres utilisateurs).
Le premier utilisateur connecté qui exécute le code web2admin sera automatiquement placé dans le groupe w2a_root.
Accordez des autorisations précises à des utilisateurs particuliers pour des tables spécifiques :
Accédez à http://localhost:8000/yourapp/web2admin ou http://localhost:8000/yourapp/plugin_web2admin
Collez les lignes de configuration suivantes dans votre fichier modèle (par exemple db.py) pour modifier le comportement de web2admin :
Changer le logo (marque) de l'application d'administration plugins.web2admin.logo = 'SuperApp'
plugins.web2admin.logo = IMG(_src=URL('static', 'images/google-buzz.png')) + ' SupperApp'
Configurez le nombre d'éléments par page :
plugins.web2admin.items_per_page = 5 (default 20)
Ajoutez des liens supplémentaires dans la barre latérale :
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 est un dictionnaire qui mappe 'tablename.fieldname' dans l'étiquette d'en-tête correspondante, par exemple :
plugins.web2admin.headers = {'student.last_name': T('Surname')}
plugins.web2admin.orderby est un dictionnaire utilisé pour définir l'ordre par défaut des lignes du tableau :
plugins.web2admin.orderby = {'student': db.student.last_name}
plugins.web2admin.groupby est un dictionnaire utilisé pour définir le regroupement des lignes du tableau. Vous pouvez regrouper les enregistrements avec la même valeur pour le champ spécifié (ceci est spécifique au back-end et n'est pas sur Google NoSQL) :
plugins.web2admin.groupby = {'student': db.student.last_name}
plugins.web2admin.maxtextlength définit la longueur maximale du texte à afficher pour chaque valeur de champ, dans la vue grille (20 par défaut). Cette valeur peut être écrasée pour chaque champ à l'aide de plugins.web2admin.maxtextlengths, un dictionnaire de 'tablename.fieldname':length. Si le texte doit être tronqué, un len('...') = 3 supplémentaire est soustrait de la longueur spécifiée.fiel
plugins.web2admin.maxtextlength ={'student': 10}
plugins.web2admin.maxtextlengths ={'test.name': 5}
plugins.web2admin.field_id est un dictionnaire précisant le champ de la table à utiliser comme ID, par exemple :
plugins.web2admin.field_id = {'student', db.stuident.id}
plugins.web2admin.showbuttontext commutateur booléen pour afficher/masquer le texte du bouton :
plugins.web2admin.showbuttontext = False
Si plusieurs objets de base de données sont définis, il suffit d'ajouter un paramètre plugins.web2admin.dbs qui est un tuple d'objets de base de données. Par défaut, la liste n'a qu'un seul élément nommé db, donc si, pour une raison quelconque, le seul objet est nommé différemment, veuillez l'ajouter comme ceci : plugins.web2admin.dbs = (my_special_db,) <-- faites attention à la virgule.
plugins.web2admin.dbs = (db, other_db, session_db)
Un menu Bases de données devrait apparaître dans la barre de navigation supérieure pour permettre la sélection de bases de données.
Vous pouvez restreindre les champs à afficher pour des tables spécifiques en définissant plugins.web2admin.fields sur un dictionnaire de noms de tables et une liste de champs de ces tables :
plugins.web2admin.fields={
'test': [db.test.id, db.test.name],
'student':[db.student.id, db.student.first_name]
}
Les actions peuvent être exécutées sur plusieurs éléments en les vérifiant et en sélectionnant une action dans l'en-tête.
Par défaut, deux actions sont définies : supprimer et cloner.
Pour définir une nouvelle action vous devez créer une fonction qui prend comme arguments un nom de table et une liste d'identifiants, et définir le paramètre du plugin plugins.web2admin.actions sur un dictionnaire ayant comme clés les noms d'action et comme valeurs les fonctions d'action :
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 vous souhaitez désactiver les actions par défaut ou si vous ne souhaitez aucune action (si vous n'en avez créé aucune), vous pouvez définir le paramètre plugins.web2admin.default_actions sur un dictionnaire vide.
plugins.web2admin.default_actions={}
plugins.web2admin.links est utilisé pour afficher de nouvelles colonnes qui peuvent être des liens vers d'autres pages. L'argument links doit être un dictionnaire reliant un nom de table à une liste de dict(header='name',body=lambda row: A(...)) où header est l'en-tête de la nouvelle colonne et body est une fonction qui prend une ligne et renvoie une valeur. Dans l'exemple, la valeur est un assistant 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 est une expression de jointure gauche facultative utilisée pour construire ...select(left=...). Il a la valeur d'un dictionnaire reliant le nom de la table et l'expression de jointure, par exemple :
plugins.web2admin.left = {'student': db.student.on(db.test.id)}
plugins.web2admin.filters est une liste de champs par lesquels un filtre rapide sera créé dans la barre de menu de droite, par exemple :
plugins.web2admin.filters = (db.test.date, db.test.passed, db.test.mark, db.test.name, db.student.last_name)
Pour les champs numériques, les valeurs min et max sont obtenues et l'intervalle est divisé en quatre sous-intervalles. Types de champs pris en charge : datetime, date, chaîne, texte, entier, double, booléen.