class DeityAdmin(TypedEntityAdmin): """Admin for persons.""" model = models.Deity exclude = [*TypedEntityAdmin.exclude] form = DeityForm add_form = DeityForm class GroupAdmin(TypedEntityAdmin): """Admin for groups.""" model = models.Group exclude = [*TypedEntityAdmin.exclude] form = GroupForm add_form = GroupForm class OrganizationAdmin(TypedEntityAdmin): """Admin for organizations.""" model = models.Person form = OrganizationForm add_form = OrganizationForm admin_site.register(models.Entity, EntityAdmin) admin_site.register(models.Person, PersonAdmin) admin_site.register(models.Group, GroupAdmin) admin_site.register(models.Organization, OrganizationAdmin)
from apps.admin.model_admin import ModelAdmin, admin_site from apps.entities import models CATEGORY_NAME_FIELD = 'name' ALIASES_FIELD = 'aliases' class CategoryAdmin(ModelAdmin): """Admin for entity categories.""" list_display = [ 'pk', CATEGORY_NAME_FIELD, 'part_of_speech', ALIASES_FIELD, 'weight', ] search_fields = [CATEGORY_NAME_FIELD, ALIASES_FIELD] list_editable = [ CATEGORY_NAME_FIELD, 'part_of_speech', ALIASES_FIELD, 'weight' ] ordering = ['name'] admin_site.register(models.Category, CategoryAdmin)
class Meta: model = StaticPage fields = '__all__' class StaticPageAdmin(FlatPageAdmin): """Admin for static pages.""" form = StaticPageForm fieldsets = ( (None, { 'fields': ('url', 'title', 'content', 'sites') }), ( ('Advanced options', ), { 'classes': ('collapse', ), 'fields': ( 'enable_comments', 'registration_required', 'template_name', ), }, ), ) admin_site.register(StaticPage, StaticPageAdmin) admin_site.register(FlatPage, FlatPageAdmin)
"""Return an iterable of tuples (value, verbose value).""" return (YES, YES), (NO, NO) def queryset(self, request, queryset): """Return the filtered queryset.""" if self.value() == YES: return queryset.filter(name__icontains='pdf') if self.value() == NO: return queryset.exclude(name__icontains='pdf') class SourceFileAdmin(ModelAdmin): """Admin for source files.""" list_display = ['name', PAGE_OFFSET_FIELD, 'link', 'uploaded_at', 'id'] search_fields = ['file', 'name'] inlines = [SourcesInline] list_filter = [PdfFilter] ordering = ['name', 'uploaded_at', 'id'] def get_fields(self, request, model_instance=None): """Return reordered fields to be displayed in the admin.""" fields = super().get_fields(request, model_instance) if fields and PAGE_OFFSET_FIELD in fields: fields.remove(PAGE_OFFSET_FIELD) fields.append(PAGE_OFFSET_FIELD) return fields admin_site.register(models.SourceFile, SourceFileAdmin)
urls = super().get_urls() custom_urls = [ path( 'tag_search/', self.admin_site.admin_view(TagSearchView.as_view(model_admin=self)), name='tag_search', ), path( 'entity_search/', self.admin_site.admin_view(EntitySearchView.as_view(model_admin=self)), name='entity_search', ), path( 'entity_category_search/', self.admin_site.admin_view( EntityCategorySearchView.as_view(model_admin=self) ), name='entity_category_search', ), ] return custom_urls + urls class SearchAdmin(ModelAdmin): """Admin for user searches.""" list_display = ['pk'] admin_site.register(models.Search, SearchAdmin)
from apps.admin.model_admin import ModelAdmin, admin_site from apps.entities import models from apps.entities.forms import IdeaForm class IdeaAdmin(ModelAdmin): """Admin for ideas.""" model = models.Idea add_form = IdeaForm admin_site.register(models.Idea, IdeaAdmin)
from apps.admin.model_admin import ModelAdmin, admin_site from apps.chat import models class ChatAdmin(ModelAdmin): """Model admin for searchable models.""" model: models.Chat fields = ['content'] admin_site.register(models.Chat, ChatAdmin)