The document change admin page is unusable. The django treebeard library can change the form used by one provided but this one is really slow. And it is collapsing the configuration made with the other fields and readonly fields declared on the DocumentAdmin class. In a first time we remove the form usage, it seems useless. Later we have to provide more information on this admin page.
206 lines
4.5 KiB
Python
206 lines
4.5 KiB
Python
"""Admin classes and registrations for core app."""
|
|
|
|
from django.contrib import admin
|
|
from django.contrib.auth import admin as auth_admin
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from treebeard.admin import TreeAdmin
|
|
|
|
from . import models
|
|
|
|
|
|
class TemplateAccessInline(admin.TabularInline):
|
|
"""Inline admin class for template accesses."""
|
|
|
|
autocomplete_fields = ["user"]
|
|
model = models.TemplateAccess
|
|
extra = 0
|
|
|
|
|
|
@admin.register(models.User)
|
|
class UserAdmin(auth_admin.UserAdmin):
|
|
"""Admin class for the User model"""
|
|
|
|
fieldsets = (
|
|
(
|
|
None,
|
|
{
|
|
"fields": (
|
|
"id",
|
|
"admin_email",
|
|
"password",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
_("Personal info"),
|
|
{
|
|
"fields": (
|
|
"sub",
|
|
"email",
|
|
"full_name",
|
|
"short_name",
|
|
"language",
|
|
"timezone",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
_("Permissions"),
|
|
{
|
|
"fields": (
|
|
"is_active",
|
|
"is_device",
|
|
"is_staff",
|
|
"is_superuser",
|
|
"groups",
|
|
"user_permissions",
|
|
),
|
|
},
|
|
),
|
|
(_("Important dates"), {"fields": ("created_at", "updated_at")}),
|
|
)
|
|
add_fieldsets = (
|
|
(
|
|
None,
|
|
{
|
|
"classes": ("wide",),
|
|
"fields": ("email", "password1", "password2"),
|
|
},
|
|
),
|
|
)
|
|
inlines = (TemplateAccessInline,)
|
|
list_display = (
|
|
"id",
|
|
"sub",
|
|
"full_name",
|
|
"admin_email",
|
|
"email",
|
|
"is_active",
|
|
"is_staff",
|
|
"is_superuser",
|
|
"is_device",
|
|
"created_at",
|
|
"updated_at",
|
|
)
|
|
list_filter = ("is_staff", "is_superuser", "is_device", "is_active")
|
|
ordering = (
|
|
"is_active",
|
|
"-is_superuser",
|
|
"-is_staff",
|
|
"-is_device",
|
|
"-updated_at",
|
|
"full_name",
|
|
)
|
|
readonly_fields = (
|
|
"id",
|
|
"sub",
|
|
"email",
|
|
"full_name",
|
|
"short_name",
|
|
"created_at",
|
|
"updated_at",
|
|
)
|
|
search_fields = ("id", "sub", "admin_email", "email", "full_name")
|
|
|
|
|
|
@admin.register(models.Template)
|
|
class TemplateAdmin(admin.ModelAdmin):
|
|
"""Template admin interface declaration."""
|
|
|
|
inlines = (TemplateAccessInline,)
|
|
|
|
|
|
class DocumentAccessInline(admin.TabularInline):
|
|
"""Inline admin class for template accesses."""
|
|
|
|
autocomplete_fields = ["user"]
|
|
model = models.DocumentAccess
|
|
extra = 0
|
|
|
|
|
|
@admin.register(models.Document)
|
|
class DocumentAdmin(TreeAdmin):
|
|
"""Document admin interface declaration."""
|
|
|
|
fieldsets = (
|
|
(
|
|
None,
|
|
{
|
|
"fields": (
|
|
"id",
|
|
"title",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
_("Permissions"),
|
|
{
|
|
"fields": (
|
|
"creator",
|
|
"link_reach",
|
|
"link_role",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
_("Tree structure"),
|
|
{
|
|
"fields": (
|
|
"path",
|
|
"depth",
|
|
"numchild",
|
|
"duplicated_from",
|
|
"attachments",
|
|
)
|
|
},
|
|
),
|
|
)
|
|
inlines = (DocumentAccessInline,)
|
|
list_display = (
|
|
"id",
|
|
"title",
|
|
"link_reach",
|
|
"link_role",
|
|
"created_at",
|
|
"updated_at",
|
|
)
|
|
readonly_fields = (
|
|
"attachments",
|
|
"creator",
|
|
"depth",
|
|
"duplicated_from",
|
|
"id",
|
|
"numchild",
|
|
"path",
|
|
)
|
|
search_fields = ("id", "title")
|
|
|
|
|
|
@admin.register(models.Invitation)
|
|
class InvitationAdmin(admin.ModelAdmin):
|
|
"""Admin interface to handle invitations."""
|
|
|
|
fields = (
|
|
"email",
|
|
"document",
|
|
"role",
|
|
"created_at",
|
|
"issuer",
|
|
)
|
|
readonly_fields = (
|
|
"created_at",
|
|
"is_expired",
|
|
"issuer",
|
|
)
|
|
list_display = (
|
|
"email",
|
|
"document",
|
|
"created_at",
|
|
"is_expired",
|
|
)
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
obj.issuer = request.user
|
|
obj.save()
|