Это простой плагин администрирования web2py.
Он активно использует функции, предоставляемые web2py SQLFORM.smartgrid, включая обширный поиск, действия, историю, настраиваемые навигационные ссылки, нумерацию страниц и различные настройки.
Он очень серьезно относится к безопасности и использует как группы, так и разрешения для детального контроля доступа.
ЗДЕСЬ вы можете найти скриншот процесса установки.
ПРИМЕЧАНИЕ. Установка стала намного проще: после установки первый вошедший в систему пользователь автоматически помещается в 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:
Измените логотип (бренд) приложения администратора плагины.web2admin.logo = 'SuperApp'
плагины.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)),
]
плагины.web2admin.headers — это словарь, который сопоставляет «имя_таблицы.имя_поля» с соответствующей меткой заголовка, например:
plugins.web2admin.headers = {'student.last_name': T('Surname')}
плагины.web2admin.orderby — это словарь, который используется для установки порядка строк таблицы по умолчанию:
plugins.web2admin.orderby = {'student': db.student.last_name}
плагины.web2admin.groupby — это словарь, который используется для группировки строк таблицы. Вы можете группировать записи с одинаковым значением для указанного поля (это зависит от серверной части и не используется в Google NoSQL):
plugins.web2admin.groupby = {'student': db.student.last_name}
Plugins.web2admin.maxtextlength устанавливает максимальную длину текста, отображаемого для каждого значения поля в виде сетки (по умолчанию 20). Это значение можно перезаписать для каждого поля с помощью плагинов.web2admin.maxtextlengths, словаря «имя_таблицы.имя_поля»:длина. Если текст необходимо усечь, то из указанной длины вычитается дополнительный len('...') = 3.
plugins.web2admin.maxtextlength ={'student': 10}
plugins.web2admin.maxtextlengths ={'test.name': 5}
плагины.web2admin.field_id — это словарь, определяющий поле таблицы, которое будет использоваться в качестве идентификатора, например:
plugins.web2admin.field_id = {'student', db.stuident.id}
плагины.web2admin.showbuttontext логический переключатель для отображения/скрытия текста кнопки:
plugins.web2admin.showbuttontext = False
Если определено несколько объектов базы данных, все, что нужно сделать, это добавить параметр plugins.web2admin.dbs, который представляет собой кортеж объектов базы данных. По умолчанию в списке есть только один элемент с именем db, поэтому, если по какой-либо причине единственный объект имеет другое имя, добавьте его следующим образом: плагины.web2admin.dbs = (my_special_db,) <-- обратите внимание на запятую.
plugins.web2admin.dbs = (db, other_db, session_db)
В верхней панели навигации должно появиться меню «Базы данных» , чтобы включить выбор базы данных.
Вы можете ограничить отображение полей для определенных таблиц, установив для плагинов.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}
Если вы хотите отключить действия по умолчанию или вообще не хотите выполнять никаких действий (если вы их не создавали), вы можете установить для параметра плагинов.web2admin.default_actions пустой словарь.
plugins.web2admin.default_actions={}
Plugins.web2admin.links используется для отображения новых столбцов, которые могут быть ссылками на другие страницы. Аргумент ссылок должен быть словарем, связывающим имя таблицы со списком dict(header='name',body=lambda row: A(...)), где заголовок – это заголовок нового столбца, а тело – это функция, которая принимает строку и возвращает значение. В примере значением является вспомогательный элемент 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))),
]}
плагины.web2admin.left — это необязательное выражение левого соединения, используемое для построения ...select(left=...). Он имеет значение словаря, связывающего имя таблицы и выражение соединения, например:
plugins.web2admin.left = {'student': db.student.on(db.test.id)}
плагины.web2admin.filters — это список полей, по которым будет создан быстрый фильтр в правой строке меню, например:
plugins.web2admin.filters = (db.test.date, db.test.passed, db.test.mark, db.test.name, db.student.last_name)
Для числовых полей получаются минимальные и максимальные значения, а интервал разбивается на четыре подинтервала. Поддерживаемые типы полей: дата-время, дата, строка, текст, целое число, двойное число, логическое значение.