readonly_fields = SearchableModelAdmin.readonly_fields + ['citation_html'] inlines = [ AttributeesInline, CitationsInline, RelatedQuotesInline, RelatedTopicsInline, BitesInline, ] # https://docs.djangoproject.com/en/3.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.date_hierarchy date_hierarchy = 'date' # https://docs.djangoproject.com/en/3.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_per_page list_per_page = 10 def get_queryset(self, request) -> 'QuerySet[models.Quote]': """ Return the queryset of quotes to be displayed in the admin. https://docs.djangoproject.com/en/3.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_queryset """ qs = models.Quote.objects.prefetch_related('attributees', 'tags__topic') ordering = self.get_ordering(request) if ordering and ordering != models.Quote.get_meta().ordering: qs = qs.order_by(*ordering) return qs admin_site.register(models.Quote, QuoteAdmin)
from django.contrib import admin from apps.admin import admin_site from .models import ChangeLib, Kind admin_site.register(ChangeLib) admin_site.register(Kind)
class SourcesInline(TabularInline): """Inline admin for sources.""" model = models.Source extra = 0 fields = [ 'verified', 'hidden', 'date_is_circa', 'creators', 'url', 'date', 'publication_date', ] admin_site.register(models.Source, SourceAdmin) admin_site.register(models.Affidavit, ChildSourceAdmin) admin_site.register(models.Article, ChildSourceAdmin) admin_site.register(models.Book, ChildSourceAdmin) admin_site.register(models.Correspondence, ChildSourceAdmin) admin_site.register(models.Document, ChildSourceAdmin) admin_site.register(models.Film, ChildSourceAdmin) admin_site.register(models.Interview, ChildSourceAdmin) admin_site.register(models.Entry, ChildSourceAdmin) admin_site.register(models.Piece, ChildSourceAdmin) admin_site.register(models.Section, ChildSourceAdmin) admin_site.register(models.Speech, ChildSourceAdmin) admin_site.register(models.Webpage, ChildSourceAdmin)
for field in ('start_date', 'end_date'): if field in fields: fields.remove(field) fields.append(field) return fields class AffiliationAdmin(ModelAdmin): """Admin for affiliations.""" list_display = ['entity', 'affiliated_entity', 'start_date', 'end_date'] search_fields = list_display autocomplete_fields = ['entity', 'affiliated_entity'] ordering = ['start_date', 'entity'] inlines = [RolesInline] class AffiliationsInline(TabularInline): """Inline admin for affiliations.""" model = models.Affiliation fk_name = 'affiliated_entity' autocomplete_fields = AffiliationAdmin.autocomplete_fields inlines = AffiliationAdmin.inlines show_change_link = True extra = 1 admin_site.register(models.Affiliation, AffiliationAdmin) admin_site.register(models.Role, RoleAdmin)
from django.contrib import admin # Register your models here. from apps.admin import admin_site from .models import Notice admin_site.register(Notice)
class SupportiveFactsInline(StackedInline): """Inline admin for a postulation's supportive facts.""" verbose_name = 'supportive fact' verbose_name_plural = 'supportive facts' model = models.PostulationSupport fk_name = 'supported_fact' extra = 0 class PostulationAdmin(ModelAdmin): """Admin for postulations.""" model = models.Postulation list_display = ['pk', 'summary'] list_filter = ['related_entities', 'related_occurrences'] search_fields = model.searchable_fields inlines = [ CitationsInline, PostulationEntitiesInline, OccurrencesInline, SupportedPostulationsInline, SupportiveFactsInline, ] admin_site.register(models.Postulation, PostulationAdmin)
class CitationsInline(GenericTabularInline): """Inline admin for citations.""" model = models.Citation autocomplete_fields = ['source'] # TODO: fix JSON widget so pages can be included in the inline editor exclude = ['computations', 'pages'] readonly_fields = ['pk'] verbose_name = 'citation' verbose_name_plural = 'citations' # https://django-grappelli.readthedocs.io/en/latest/customization.html#inline-sortables sortable_field_name = 'position' def get_extra(self, request, model_instance: Optional['ModelWithSources'] = None, **kwargs): """Return the number of extra/blank rows to include.""" if model_instance and model_instance.citations.count(): return 0 return 1 def get_queryset(self, request) -> QuerySet: """Return the queryset of citations to display in an inline admin.""" return super().get_queryset(request) admin_site.register(models.Citation, CitationAdmin)
'tags_string', ] list_filter = [RelatedTopicFilter] list_per_page = 20 readonly_fields = ['pretty_computations'] search_fields = ['key', 'aliases', 'description'] ordering = ['key'] inlines = [ ParentTopicsInline, ChildTopicsInline, TopicRelationsInline, # RelatedOccurrencesInline, ] def get_urls(self): """Return the list of URLs used by the topic admin.""" urls = super().get_urls() custom_urls = [ path( 'related_topic_search/', self.admin_site.admin_view( TagSearchView.as_view(model_admin=self)), name='related_topic_search', ), ] return custom_urls + urls admin_site.register(models.Topic, TopicAdmin)
] list_editable = ['slug'] list_filter = [ 'verified', HasDateFilter, HasQuotesFilter, EntityFilter, TopicFilter, LocationFilter, HasSourceFilter, HasMultipleCitationsFilter, ] list_per_page = 10 ordering = ['date'] readonly_fields = SearchableModelAdmin.readonly_fields search_fields = model.searchable_fields # https://docs.djangoproject.com/en/3.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.date_hierarchy date_hierarchy = 'date' class OccurrenceChainAdmin(ModelAdmin): """Admin for occurrence chains.""" base_model = models.OccurrenceChain inlines = [OccurrencesInline] admin_site.register(models.Occurrence, OccurrenceAdmin) admin_site.register(models.OccurrenceChain, OccurrenceChainAdmin)
), ( 'Optional Information', { CLASSES_KEY: ('wide', ), FIELDS_KEY: (FIRST_NAME_FIELD, LAST_NAME_FIELD) }, ), ( PERMISSIONS_LABEL, { FIELDS_KEY: (IS_SUPERUSER_FIELD, 'groups', 'permissions') }, ), ) search_fields = [ FIRST_NAME_FIELD, LAST_NAME_FIELD, USERNAME_FIELD, EMAIL_FIELD ] ordering = [LAST_NAME_FIELD, FIRST_NAME_FIELD] filter_horizontal = () admin_site.register(User, UserAdmin) admin_site.register(SocialApp, SocialAppAdmin) admin_site.register(SocialToken, SocialTokenAdmin) admin_site.register(SocialAccount, SocialAccountAdmin)
class LocationFilter(AutocompleteFilter): """List filter for filtering locations by parent location.""" title = 'location' field_name = models.Place.FieldNames.location class LocationAdmin(ModelAdmin): """Admin for locations.""" model = models.Place list_display = [model.FieldNames.name, 'string'] list_filter = [LocationFilter] search_fields = [model.FieldNames.name] ordering = [ model.FieldNames.name, f'{model.FieldNames.location}__{model.FieldNames.name}', ] form = PlaceForm add_form = PlaceForm admin_site.register(models.Place, LocationAdmin) admin_site.register(models.Venue, LocationAdmin) admin_site.register(models.City, LocationAdmin) admin_site.register(models.County, LocationAdmin) admin_site.register(models.State, LocationAdmin) admin_site.register(models.Region, LocationAdmin) admin_site.register(models.Country, LocationAdmin) admin_site.register(models.Continent, LocationAdmin)
list_per_page = 10 def get_fields(self, request, model_instance=None): """Return reordered fields to be displayed in the admin.""" fields = super().get_fields(request, model_instance) ordered_field_names = ( 'date_is_circa', 'date', 'type', 'image', 'hidden', 'verified', ) for field_name in ordered_field_names: if field_name in fields: fields.remove(field_name) fields.insert(0, field_name) return fields class VideoAdmin(ModelAdmin): """Admin for videos.""" list_display = ['title', 'url'] search_fields = ['title'] readonly_fields = ['duration'] admin_site.register(Image, ImageAdmin) admin_site.register(Video, VideoAdmin)
from django.contrib import admin # Register your models here. from apps.admin import admin_site from .models import User, Support admin_site.register(Support) admin_site.register(User)
from django.contrib import admin # Register your models here. from apps.admin import admin_site from .models import Customer admin_site.register(Customer)
from apps.admin import admin_site from .models import Work, ReplyWork, SubReplyWork admin_site.register(Work) admin_site.register(ReplyWork) admin_site.register(SubReplyWork)
from apps.admin import ModelAdmin, admin_site from apps.sources import models class CollectionAdmin(ModelAdmin): """Admin for document collections.""" search_fields = ['name', 'repository__name', 'repository__location__name'] autocomplete_fields = ['repository'] class RepositoryAdmin(ModelAdmin): """Admin for document repositories.""" search_fields = ['name', 'location__name'] autocomplete_fields = ['location'] admin_site.register(models.Collection, CollectionAdmin) admin_site.register(models.Repository, RepositoryAdmin)
from apps.admin import ModelAdmin, StackedInline, admin_site from apps.sources import models class PublicationAdmin(ModelAdmin): """Admin for publications.""" list_display = ['__str__', 'description'] search_fields = ['name'] class ArticlesInline(StackedInline): """Inline admin for articles.""" model = models.Article extra = 1 admin_site.register(models.Publication, PublicationAdmin) admin_site.register(models.Journal, PublicationAdmin) admin_site.register(models.Newspaper, PublicationAdmin) admin_site.register(models.Magazine, PublicationAdmin)