예제 #1
0
    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)
예제 #2
0
from django.contrib import admin
from apps.admin import admin_site
from .models import ChangeLib, Kind

admin_site.register(ChangeLib)
admin_site.register(Kind)
예제 #3
0
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)
예제 #4
0
        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)
예제 #5
0
from django.contrib import admin

# Register your models here.
from apps.admin import admin_site
from .models import Notice

admin_site.register(Notice)
예제 #6
0

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)
예제 #7
0
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)
예제 #8
0
        '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)
예제 #9
0
    ]
    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)
예제 #10
0
        ),
        (
            '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)
예제 #11
0
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)
예제 #12
0
    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)
예제 #13
0
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)
예제 #14
0
from django.contrib import admin

# Register your models here.
from apps.admin import admin_site
from .models import Customer
admin_site.register(Customer)
예제 #15
0
from apps.admin import admin_site
from .models import Work, ReplyWork, SubReplyWork

admin_site.register(Work)
admin_site.register(ReplyWork)
admin_site.register(SubReplyWork)
예제 #16
0
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)
예제 #17
0
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)