Custom Django admin interface.
Project description
paper-admin
Custom Django admin interface.
Requirements
- Python >= 3.6
- Django >= 2.1
Installation
Add paper_admin
to your INSTALLED_APPS setting before django.contrib.admin
.
INSTALLED_APPS = [
'paper_admin',
'paper_admin.patches.django_solo', # optional
'paper_admin.patches.mptt', # optional
'paper_admin.patches.post_office', # optional
# ...
'django.contrib.admin',
# ...
]
Patches
Некоторые сторонние библиотеки переопределяют стандартные
шаблоны Django и в рамках интерфейса paper_admin
выглядят инородно. Поэтому приходится применять патчи.
В состав paper_admin
включены следующие патчи:
-
paper_admin.patches.django_solo
Исправляет хлебные крошки в django-solo. -
paper_admin.patches.mptt
Адаптация django-mptt. Предоставляет классSortableMPTTModelAdmin
для оформления сортируемого дерева.
Note: как правило, патчи должны быть указаны в INSTALLED_APPS
до библиотек,
которые они исправляют.
Sortable admin objects
from paper_admin.admin.sortable import SortableAdminMixin, SortableTabularInline
class TablularInline(SortableTabularInline):
sortable = 'order'
# ...
class MyModelAdmin(SortableAdminMixin, admin.ModelAdmin):
sortable = 'order'
# ...
Tabs
Поля формы можно разделить на вкладки:
class TablularInlines(admin.TabularInline):
tab = 'inlines-tab'
@admin.register(Page)
class PageAdmin(admin.ModelAdmin):
fieldsets = (
(_('First Section'), {
'tab': 'common-tab',
'classes': ('card-info', ),
'description': _('Some fieldset help text'),
'fields': (
# ...
),
}),
(_('Second Section'), {
'tab': 'common-tab',
'fields': (
# ...
)
}),
(_('Links'), {
'tab': 'links-tab',
'fields': (
# ...
)
}),
)
tabs = [
('common-tab', _('General')),
('links-tab', _('Links')),
('inlines-tab', _('Inlines')),
]
inlines = (TablularInlines, )
Colorize table rows
@admin.register(Page)
class PageAdmin(admin.ModelAdmin):
def get_row_classes(self, request, obj):
classes = super().get_row_classes(request, obj)
if obj.status == 'OK':
classes.append('table-success')
return classes
Additional widgets
SwitchInput
Стилизованый чекбокс.
Menu
Меню в сайдбаре настраивается путем заполнения списка
PAPER_MENU
в settings.py
.
PAPER_MENU = [
dict(
label=_('Dashboard'),
url='admin:index',
icon='fa fa-fw fa-lg fa-area-chart',
),
dict(
app='app',
icon='fa fa-fw fa-lg fa-home',
models=[
'Tag',
'Category',
'SubCategory',
]
),
'-',
'auth',
'sites',
]
Каждый элемент списка PAPER_MENU
может быть представлен
одним из четырех видов:
- имя приложения (app_label)
- путь к модели (app_label.model_name)
- словарь
- строка-разделитель ("-")
Доступные ключи для формирования пункта меню с помощью словаря:
label
:str
- заголовок пункта менюurl
:str
- ссылка или именованный URLicon
:str
- CSS-классы иконкиclasses
:str
- CSS-классы пункта менюperms
:str/list
- права, необходимые для отображения пункта (либо строка "superuser")app
:str
- имя приложения. Добавляется к именам моделей в modelsmodels
:list
- дочерние пункты меню. Может содержать имена моделей или вложенные словари.
Settings
Option | Description | Example value |
---|---|---|
PAPER_ENVIRONMENT_NAME |
Текст на плашке текущего окружения | 'development' |
PAPER_ENVIRONMENT_COLOR |
Цвет фона плашки текущего окружения | '#FFFF00' |
PAPER_SUPPORT_PHONE |
Контактный телефон в подвале | '+1 234 567 8900' |
PAPER_SUPPORT_EMAIL |
Контактный email в подвале | 'office@example.com' |
PAPER_SUPPORT_COMPANY |
Название компании в подвале | 'Web Studio Inc.' |
PAPER_SUPPORT_WEBSITE |
Ссылка на сайт компании в подвале | 'https://webstudio.com/' |
PAPER_MENU |
Меню в сайдбаре |
Development and Testing
After cloning the Git repository, you should install this in a virtualenv and set up for development:
virtualenv .venv
source .venv/bin/activate
pip install -r ./requirements_dev.txt
pre-commit install
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for paper_admin-1.1.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc9eabb382978e96589eb26dc9a7ea50b2f1b490a08837acca5ef202966dc15b |
|
MD5 | 7e538d703fe8b49dc04324f46480b96c |
|
BLAKE2b-256 | 5bd74a20c7fb742097fb2ac572ea7b21521a56b867458154ef6dfd4dfd92aa60 |