Dies ist ein einfaches web2py-Verwaltungs-Plugin.
Es nutzt intensiv die von web2py SQLFORM.smartgrid bereitgestellten Funktionen mit umfangreicher Suche, Aktionen, Verlauf, benutzerdefinierten Navigationslinks, Paginierung und verschiedenen Anpassungen.
Es nimmt die Sicherheit sehr ernst und nutzt sowohl Gruppen als auch Berechtigungen für eine differenzierte Zugriffskontrolle.
HIER finden Sie einen Screencast des Installationsvorgangs.
HINWEIS: Die Installation ist jetzt viel einfacher. Nach der Installation wird der erste angemeldete Benutzer automatisch in w2a_root eingetragen. Installieren Sie also einfach das Plugin und greifen Sie auf /yourapp/web2admin zu.
oder
Der Hauptzweig enthält immer die neueste stabile Version (die Entwicklung erfolgt in einem anderen Zweig).
Verwenden Sie einfach einen der Installationsvorgänge und überschreiben Sie den Plugin-Inhalt in Ihrer web2py-App.
Installiere das Plugin ;)
Wenn sich ein Benutzer in der Gruppe w2a_root befindet, verfügt er über alle Rechte, einschließlich des Hinzufügens von Berechtigungen oder des Änderns der Gruppen anderer Benutzer.
Wenn sich ein Benutzer in der Gruppe w2a_manager befindet, verfügt er über alle Berechtigungen für alle Tabellen außer Authentifizierungstabellen (keine Änderungsberechtigungen für andere Benutzer).
Der erste angemeldete Benutzer, der den web2admin-Code ausführt, wird automatisch in die Gruppe w2a_root eingefügt.
Erteilen Sie bestimmten Benutzern differenzierte Berechtigungen für bestimmte Tabellen:
Greifen Sie auf http://localhost:8000/yourapp/web2admin oder http://localhost:8000/yourapp/plugin_web2admin zu
Fügen Sie die folgenden Konfigurationszeilen in Ihre Modelldatei (z. B. db.py) ein, um das Verhalten von web2admin zu ändern:
Ändern Sie das Logo (Marke) der Admin-App-Plugins.web2admin.logo = 'SuperApp'
Plugins.web2admin.logo = IMG(_src=URL('static', 'images/google-buzz.png')) + ' SupperApp'
Konfigurieren Sie die Anzahl der Elemente pro Seite:
plugins.web2admin.items_per_page = 5 (default 20)
Fügen Sie zusätzliche Links in der Seitenleiste hinzu:
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 ist ein Wörterbuch, das „tablename.fieldname“ der entsprechenden Header-Beschriftung zuordnet, zum Beispiel:
plugins.web2admin.headers = {'student.last_name': T('Surname')}
Plugins.web2admin.orderby ist ein Wörterbuch, das zum Festlegen der Standardreihenfolge für die Tabellenzeilen verwendet wird:
plugins.web2admin.orderby = {'student': db.student.last_name}
plugins.web2admin.groupby ist ein Wörterbuch, das zum Festlegen der Gruppierung für die Tabellenzeilen verwendet wird. Sie können Datensätze mit demselben Wert für das angegebene Feld gruppieren (dies ist Backend-spezifisch und nicht in Google NoSQL verfügbar):
plugins.web2admin.groupby = {'student': db.student.last_name}
plugins.web2admin.maxtextlength legt die maximale Textlänge fest, die für jeden Feldwert in der Rasteransicht angezeigt werden soll (Standard 20). Dieser Wert kann für jedes Feld mit „plugins.web2admin.maxtextlengths“, einem Wörterbuch von „tablename.fieldname“:length, überschrieben werden. Wenn Text abgeschnitten werden muss, wird ein zusätzliches len('...') = 3 von der angegebenen Länge.feld abgezogen
plugins.web2admin.maxtextlength ={'student': 10}
plugins.web2admin.maxtextlengths ={'test.name': 5}
„plugins.web2admin.field_id“ ist ein Diktat, das das Feld der Tabelle angibt, das als ID verwendet werden soll, zum Beispiel:
plugins.web2admin.field_id = {'student', db.stuident.id}
plugins.web2admin.showbuttontext boolescher Schalter zum Anzeigen/Ausblenden des Schaltflächentextes:
plugins.web2admin.showbuttontext = False
Wenn mehrere Datenbankobjekte definiert sind, müssen Sie lediglich einen Parameter „plugins.web2admin.dbs“ hinzufügen, der ein Tupel von Datenbankobjekten ist. Standardmäßig enthält die Liste nur ein Element mit dem Namen db. Wenn das einzige Objekt aus irgendeinem Grund einen anderen Namen hat, fügen Sie es bitte wie folgt hinzu: Plugins.web2admin.dbs = (my_special_db,) <-- Beachten Sie das Komma.
plugins.web2admin.dbs = (db, other_db, session_db)
In der oberen Navigationsleiste sollte ein Datenbankmenü erscheinen, um die Datenbankauswahl zu ermöglichen.
Sie können die anzuzeigenden Felder für bestimmte Tabellen einschränken, indem Sie „plugins.web2admin.fields“ auf ein Wörterbuch mit Tabellennamen und eine Liste von Feldern aus diesen Tabellen festlegen:
plugins.web2admin.fields={
'test': [db.test.id, db.test.name],
'student':[db.student.id, db.student.first_name]
}
Aktionen können für mehrere Elemente ausgeführt werden, indem Sie diese markieren und eine Aktion aus der Kopfzeile auswählen.
Standardmäßig sind zwei Aktionen definiert: Löschen und Klonen.
Um eine neue Aktion zu definieren, müssen Sie eine Funktion erstellen, die als Argumente einen Tabellennamen und eine Liste von IDs verwendet, und den Plugin-Parameter „plugins.web2admin.actions“ auf ein Wörterbuch setzen, das die Aktionsnamen als Schlüssel und die Aktionsfunktionen als Werte enthält:
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}
Wenn Sie die Standardaktionen deaktivieren möchten oder überhaupt keine Aktionen wünschen (sofern Sie keine erstellt haben), können Sie den Parameter „plugins.web2admin.default_actions“ auf ein leeres Wörterbuch setzen.
plugins.web2admin.default_actions={}
„plugins.web2admin.links“ wird verwendet, um neue Spalten anzuzeigen, die Links zu anderen Seiten sein können. Das Links-Argument muss ein Wörterbuch sein, das einen Tabellennamen mit einer Liste von dict(header='name',body=lambda row: A(...)) verknüpft, wobei header der Header der neuen Spalte und body eine Funktion ist, die Folgendes übernimmt eine Zeile und gibt einen Wert zurück. Im Beispiel ist der Wert ein A(...)-Helfer.
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 ist ein optionaler Left-Join-Ausdruck, der zum Erstellen von ...select(left=...) verwendet wird. Es hat den Wert eines Wörterbuchs, das den Tabellennamen und den Join-Ausdruck verknüpft, zum Beispiel:
plugins.web2admin.left = {'student': db.student.on(db.test.id)}
Plugins.web2admin.filters ist eine Liste von Feldern, nach denen in der rechten Menüleiste ein Schnellfilter erstellt wird, z. B.:
plugins.web2admin.filters = (db.test.date, db.test.passed, db.test.mark, db.test.name, db.student.last_name)
Für numerische Felder werden die Mindest- und Höchstwerte ermittelt und das Intervall in vier Teilintervalle aufgeteilt. Unterstützte Feldtypen: datetime, date, string, text, integer, double, boolean.