Ini adalah plugin administrasi web2py sederhana.
Ini banyak menggunakan fitur yang disediakan oleh web2py SQLFORM.smartgrid yang menampilkan pencarian ekstensif, tindakan, riwayat, tautan navigasi khusus, penomoran halaman, dan berbagai penyesuaian.
Ini menangani keamanan dengan sangat serius dan menggunakan grup dan izin untuk kontrol akses yang lebih baik.
DI SINI Anda dapat menemukan screencast proses instalasi.
CATATAN: instalasi menjadi jauh lebih mudah, setelah instalasi, pengguna pertama yang login secara otomatis dimasukkan ke dalam w2a_root jadi cukup instal plugin dan akses /yourapp/web2admin.
atau
Cabang master akan selalu memuat versi stabil terbaru (pengembangan akan dilakukan di cabang lain).
Cukup gunakan salah satu prosedur instalasi dan timpa konten plugin di aplikasi web2py Anda.
Instal pluginnya;)
Jika seorang pengguna berada di grup w2a_root maka ia mempunyai hak penuh termasuk menambah izin atau mengubah grup pengguna lain.
Jika pengguna berada di grup w2a_manager maka ia memiliki semua izin untuk semua tabel kecuali tabel autentikasi (tidak ada perubahan izin untuk pengguna lain).
Pengguna login pertama yang menjalankan kode web2admin akan secara otomatis ditempatkan di grup w2a_root.
Berikan izin terperinci kepada pengguna tertentu untuk tabel tertentu:
Akses http://localhost:8000/yourapp/web2admin atau http://localhost:8000/yourapp/plugin_web2admin
Tempel baris konfigurasi berikut di file model Anda (misalnya db.py) untuk mengubah perilaku web2admin:
Ubah logo (merek) aplikasi admin plugins.web2admin.logo = 'SuperApp'
plugins.web2admin.logo = IMG(_src=URL('statis', 'images/google-buzz.png')) + ' SupperApp'
Konfigurasikan jumlah item per halaman:
plugins.web2admin.items_per_page = 5 (default 20)
Tambahkan tautan tambahan di sidebar:
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 adalah kamus yang memetakan 'tablename.fieldname' ke dalam label header yang sesuai, misalnya:
plugins.web2admin.headers = {'student.last_name': T('Surname')}
plugins.web2admin.orderby adalah kamus yang digunakan untuk mengatur urutan default baris tabel:
plugins.web2admin.orderby = {'student': db.student.last_name}
plugins.web2admin.groupby adalah kamus yang digunakan untuk mengatur pengelompokan baris tabel. Anda dapat mengelompokkan data dengan nilai yang sama untuk bidang tertentu (ini khusus untuk back-end, dan tidak ada di Google NoSQL):
plugins.web2admin.groupby = {'student': db.student.last_name}
plugins.web2admin.maxtextlength menyetel panjang teks maksimum yang akan ditampilkan untuk setiap nilai bidang, dalam tampilan kisi (default 20). Nilai ini dapat ditimpa untuk setiap bidang menggunakan plugins.web2admin.maxtextlengths, kamus 'namatabel.namabidang':panjang. Jika teks harus dipotong maka tambahan len('...') = 3 dikurangi dari panjang yang ditentukan.fiel
plugins.web2admin.maxtextlength ={'student': 10}
plugins.web2admin.maxtextlengths ={'test.name': 5}
plugins.web2admin.field_id adalah kamus yang menentukan field tabel yang akan digunakan sebagai ID, misalnya:
plugins.web2admin.field_id = {'student', db.stuident.id}
plugins.web2admin.showbuttontext boolean beralih ke menampilkan/menyembunyikan teks tombol:
plugins.web2admin.showbuttontext = False
Jika ada beberapa objek db yang ditentukan, yang perlu dilakukan hanyalah menambahkan parameter plugins.web2admin.dbs yang merupakan kumpulan objek database. Secara default daftar hanya memiliki satu elemen bernama db, jadi jika, karena alasan apa pun, satu-satunya objek diberi nama berbeda, harap tambahkan tentukan seperti ini: plugins.web2admin.dbs = (my_special_db,) <-- ingat koma.
plugins.web2admin.dbs = (db, other_db, session_db)
Menu Basis Data akan muncul di bilah navigasi atas untuk mengaktifkan pemilihan basis data.
Anda dapat membatasi bidang yang akan ditampilkan untuk tabel tertentu dengan mengatur plugins.web2admin.fields ke kamus nama tabel dan daftar bidang dari tabel tersebut:
plugins.web2admin.fields={
'test': [db.test.id, db.test.name],
'student':[db.student.id, db.student.first_name]
}
Tindakan dapat dijalankan pada beberapa item dengan mencentangnya dan memilih tindakan dari header.
Secara default ada dua tindakan yang ditentukan: hapus dan kloning.
Untuk menentukan tindakan baru, Anda harus membuat fungsi yang menggunakan nama tabel dan daftar id sebagai argumen, dan mengatur parameter plugin plugins.web2admin.actions ke kamus yang memiliki kunci nama tindakan dan sebagai nilai fungsi tindakan:
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}
Jika Anda ingin menonaktifkan tindakan default atau tidak menginginkan tindakan sama sekali (jika Anda tidak membuatnya), Anda dapat mengatur parameter plugins.web2admin.default_actions ke kamus kosong.
plugins.web2admin.default_actions={}
plugins.web2admin.links digunakan untuk menampilkan kolom baru yang dapat menjadi link ke halaman lain. Argumen link harus berupa kamus yang menghubungkan nama tabel ke daftar dict(header='name',body=lambda baris: A(...)) dengan header adalah header kolom baru dan body adalah fungsi yang mengambil satu baris dan mengembalikan nilai. Dalam contoh, nilainya adalah pembantu 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 adalah ekspresi gabungan kiri opsional yang digunakan untuk membangun ...pilih(kiri=...). Ini memiliki nilai kamus yang menghubungkan nama tabel dan ekspresi gabungan, misalnya:
plugins.web2admin.left = {'student': db.student.on(db.test.id)}
plugins.web2admin.filters adalah daftar bidang yang akan digunakan untuk membuat filter cepat di bilah menu kanan, misalnya:
plugins.web2admin.filters = (db.test.date, db.test.passed, db.test.mark, db.test.name, db.student.last_name)
Untuk bidang numerik, nilai min dan maks diperoleh dan intervalnya dibagi menjadi empat subinterval. Jenis bidang yang didukung: datetime, date, string, text, integer, double, boolean.