นี่คือปลั๊กอินการดูแลระบบ web2py ที่เรียบง่าย
มีการใช้งานคุณลักษณะต่างๆ ที่ได้รับจาก web2py SQLFORM.smartgrid อย่างหนัก โดยมีการค้นหา การดำเนินการ ประวัติ ลิงก์การนำทางที่กำหนดเอง การแบ่งหน้า และการปรับแต่งต่างๆ มากมาย
ให้ความสำคัญกับความปลอดภัยเป็นอย่างมาก และใช้ทั้งกลุ่มและการอนุญาตสำหรับการควบคุมการเข้าถึงแบบละเอียด
ที่นี่ คุณจะพบ screencast ของกระบวนการติดตั้ง
หมายเหตุ: การติดตั้งง่ายขึ้นมาก หลังจากติดตั้ง ผู้ใช้ที่เข้าสู่ระบบคนแรกจะถูกใส่ใน w2a_root โดยอัตโนมัติ ดังนั้นเพียงติดตั้งปลั๊กอินและเข้าถึง /yourapp/web2admin
หรือ
สาขาหลักจะมีเวอร์ชันเสถียรล่าสุดเสมอ (การพัฒนาจะดำเนินการในสาขาอื่น)
เพียงใช้ขั้นตอนการติดตั้งใดๆ และเขียนทับเนื้อหาปลั๊กอินในแอป 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) ค่านี้สามารถเขียนทับสำหรับแต่ละฟิลด์ได้โดยใช้ Plugins.web2admin.maxtextlengths ซึ่งเป็นพจนานุกรมของ 'tablename.fieldname':length หากข้อความต้องถูกตัดทอน lenพิเศษ('...') = 3 จะถูกลบออกจาก length.fiel ที่ระบุ
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 ดังนั้นหากด้วยเหตุผลใดก็ตาม เฉพาะออบเจ็กต์เดียวที่มีชื่อแตกต่างออกไป โปรดเพิ่มระบุดังนี้: 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]
}
การดำเนินการสามารถดำเนินการได้หลายรายการโดยการตรวจสอบและเลือกการดำเนินการจากส่วนหัว
ตามค่าเริ่มต้น มีการกำหนดการกระทำไว้สองประการ: ลบและโคลน
ในการกำหนดการดำเนินการใหม่ คุณต้องสร้างฟังก์ชันที่ใช้เป็นอาร์กิวเมนต์ชื่อตารางและรายการรหัส และตั้งค่าพารามิเตอร์ปลั๊กอินของปลั๊กอิน 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 ใช้เพื่อแสดงคอลัมน์ใหม่ซึ่งสามารถลิงก์ไปยังหน้าอื่นได้ อาร์กิวเมนต์ของลิงก์จะต้องเป็นพจนานุกรมที่เชื่อมโยงชื่อตารางกับรายการ 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)
สำหรับฟิลด์ตัวเลข ค่าต่ำสุดและสูงสุดจะได้รับ และช่วงเวลาจะถูกแบ่งออกเป็นสี่ช่วงย่อย ประเภทฟิลด์ที่รองรับ: วันที่เวลา วันที่ สตริง ข้อความ จำนวนเต็ม สองเท่า บูลีน