這是一個簡單的 web2py 管理外掛。
它大量使用 web2py SQLFORM.smartgrid 提供的功能,具有廣泛的搜尋、操作、歷史記錄、自訂導航連結、分頁和各種自訂功能。
它非常重視安全性,並使用群組和權限來進行細粒度的存取控制。
您可以在這裡找到安裝過程的截圖影片。
注意:安裝變得更容易,安裝後第一個登入的使用者會自動放入 w2a_root,因此只需安裝外掛程式並存取 /yourapp/web2admin。
或者
主分支將始終包含最新的穩定版本(開發將在另一個分支上完成)。
只需使用任何安裝過程並覆蓋 web2py 應用程式中的插件內容。
安裝插件;)
如果使用者位於 w2a_root 群組中,則它擁有完整的權限,包括新增權限或變更其他使用者的群組。
如果使用者位於 w2a_manager 群組中,則它擁有除 auth 表之外的所有表的所有權限(其他使用者沒有更改權限)。
第一個執行 web2admin 程式碼的登入使用者將自動置於 w2a_root 群組中。
為特定使用者授予特定表的細粒度權限:
請瀏覽 http://localhost:8000/yourapp/web2admin 或 http://localhost:8000/yourapp/plugin_web2admin
將以下設定行貼上到模型檔案(例如 db.py)中以變更 web2admin 行為:
更改管理應用程式的標誌(品牌)plugins.web2admin.logo = 'SuperApp'
plugins.web2admin.logo = IMG(_src=URL('static', 'images/google-buzz.png')) + ' SupperApp'
配置每頁的項目數:
plugins.web2admin.items_per_page = 5 (default 20)
在側邊欄中新增額外的連結:
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 是一個字典,它將 'tablename.fieldname' 映射到相應的標題標籤,例如:
plugins.web2admin.headers = {'student.last_name': T('Surname')}
plugins.web2admin.orderby 是一個字典,用來設定表格行的預設排序:
plugins.web2admin.orderby = {'student': db.student.last_name}
plugins.web2admin.groupby 是一個字典,用來設定表格行的分組。您可以將指定欄位具有相同值的記錄分組(這是後端特定的,不在 Google NoSQL 上):
plugins.web2admin.groupby = {'student': db.student.last_name}
plugins.web2admin.maxtextlength 設定網格視圖中每個欄位值顯示的文字的最大長度(預設為 20)。可以使用plugins.web2admin.maxtextlengths(“tablename.fieldname”:length 的字典)覆蓋每個欄位的該值。如果必須截斷文本,則從指定的 length.fiel 中減去額外的 len('...') = 3
plugins.web2admin.maxtextlength ={'student': 10}
plugins.web2admin.maxtextlengths ={'test.name': 5}
plugins.web2admin.field_id 是一個字典,指定要用作 ID 的表格字段,例如:
plugins.web2admin.field_id = {'student', db.stuident.id}
plugins.web2admin.showbuttontext 布林開關顯示/隱藏按鈕文字:
plugins.web2admin.showbuttontext = False
如果定義了多個資料庫對象,所需要做的就是新增一個plugins.web2admin.dbs參數,該參數是資料庫物件的元組。預設情況下,該清單只有一個名為db 的元素,因此,無論出於何種原因,如果唯一的物件名稱不同,請新增下列指定:plugins.web2admin.dbs = (my_special_db,) <-- 請注意逗號。
plugins.web2admin.dbs = (db, other_db, session_db)
資料庫選單應出現在頂部導覽列中以啟用資料庫選擇。
您可以透過將plugins.web2admin.fields設定為表格名字典和這些表中的欄位清單來限制要為特定表顯示的欄位:
plugins.web2admin.fields={
'test': [db.test.id, db.test.name],
'student':[db.student.id, db.student.first_name]
}
透過檢查多個項目並從標題中選擇一個操作,可以對多個項目執行操作。
預設定義了兩個操作:刪除和克隆。
要定義新操作,您必須建立一個函數,該函數將表名和 id 列表作為參數,並將 plugins.web2admin.actions 外掛參數設為字典,該字典以操作名稱作為鍵,以操作函數為值:
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}
如果您想要停用預設操作或根本不需要任何操作(如果您沒有建立任何操作),則可以將plugins.web2admin.default_actions 參數設為空字典。
plugins.web2admin.default_actions={}
plugins.web2admin.links 用於顯示可以連結到其他頁面的新欄位。 links 參數必須是字典,將表名連結到 dict(header='name',body=lambda row: A(...)) 列表,其中 header 是新列的標題,body 是一個函數,它接受一行並傳回一個值。在範例中,該值是 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 是一個可選的左連接表達式,用於建立 ...select(left=...)。它具有連結表名和連接表達式的字典值,例如:
plugins.web2admin.left = {'student': db.student.on(db.test.id)}
plugins.web2admin.filters 是一個欄位列表,透過這些欄位將在右側選單欄中建立快速過濾器,例如:
plugins.web2admin.filters = (db.test.date, db.test.passed, db.test.mark, db.test.name, db.student.last_name)
對於數字字段,獲取最小值和最大值,並將間隔分為四個子間隔。支援的欄位類型:日期時間、日期、字串、文字、整數、雙精確度、布林值。