これはシンプルな web2py 管理プラグインです。
これは、広範な検索、アクション、履歴、カスタム ナビゲーション リンク、ページネーション、およびさまざまなカスタマイズを特徴とする web2py SQLFORM.smartgrid によって提供される機能を多用しています。
セキュリティを非常に重視しており、グループと権限の両方を使用してきめ細かいアクセス制御を行っています。
ここで、インストールプロセスのスクリーンキャストを見つけることができます。
注: インストールが非常に簡単になりました。インストール後、最初にログインしたユーザーが自動的に w2a_root に配置されるため、プラグインをインストールして /yourapp/web2admin にアクセスするだけです。
または
master ブランチには常に最新の安定バージョンが含まれます (開発は別のブランチで行われます)。
いずれかのインストール手順を使用して、web2py アプリのプラグイン コンテンツを上書きするだけです。
プラグインをインストールしてください ;)
ユーザーが w2a_root グループに属している場合、そのユーザーは権限の追加や他のユーザーのグループの変更を含む完全な権限を持ちます。
ユーザーが w2a_manager グループに属している場合、そのユーザーは認証テーブルを除くすべてのテーブルに対するすべての権限を持ちます (他のユーザーの権限は変更できません)。
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)。この値は、「tablename.fieldname」:length の辞書である plugins.web2admin.maxtextlengths を使用してフィールドごとに上書きできます。テキストを切り詰める必要がある場合は、指定された 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
複数の db オブジェクトが定義されている場合は、データベース オブジェクトのタプルである plugins.web2admin.dbs パラメータを追加するだけです。デフォルトでは、リストには db という名前の要素が 1 つだけあるため、何らかの理由で唯一のオブジェクトの名前が異なる場合は、次のように指定してください: 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]
}
複数の項目に対してアクションを実行するには、項目にチェックを入れてヘッダーからアクションを選択します。
デフォルトでは、削除とクローンという 2 つのアクションが定義されています。
新しいアクションを定義するには、テーブル名と 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)
数値フィールドの場合、最小値と最大値が取得され、間隔は 4 つのサブ間隔に分割されます。サポートされているフィールドの種類: datetime、date、string、text、integer、double、boolean。