Source code for documents.admin

"""Registers admin interfaces for the documents module"""
from django.contrib import admin
from django.utils.translation import gettext_lazy as _

from documents import forms
from documents.models import (
    AnnualDocument,
    AssociationDocument,
    EventDocument,
    GeneralMeeting,
    Minutes,
    MiscellaneousDocument,
)
from documents.services import is_owner
from utils.translation import TranslatedModelAdmin


[docs]class MinutesInline(admin.StackedInline): """Inline for minutes of a general meeting""" model = Minutes form = forms.MinutesForm extra = 0
[docs]@admin.register(GeneralMeeting) class GeneralMeetingAdmin(TranslatedModelAdmin): """Manage the general meetings""" form = forms.GeneralMeetingForm inlines = [ MinutesInline, ] list_filter = ("datetime",)
[docs]class LectureYearFilter(admin.SimpleListFilter): """Filter the memberships on those started or ended in a lecture year""" title = _("lecture year") parameter_name = "lecture_year"
[docs] def lookups(self, request, model_admin): if AnnualDocument.objects.count() > 0: first_year = AnnualDocument.objects.order_by("year").first().year last_year = AnnualDocument.objects.order_by("year").last().year return [ (year, "{}-{}".format(year, year + 1)) for year in range(last_year, first_year - 1, -1) ] return []
[docs] def queryset(self, request, queryset): if not self.value(): return queryset year = int(self.value()) return queryset.filter(year=year)
[docs]@admin.register(AnnualDocument) class AnnualDocumentAdmin(TranslatedModelAdmin): """Manage the annual documents""" form = forms.AnnualDocumentForm list_filter = ( LectureYearFilter, "created", "last_updated", )
[docs]@admin.register(AssociationDocument) class AssociationDocumentAdmin(TranslatedModelAdmin): """Manage the association documents""" form = forms.AssociationDocumentForm list_filter = ( "created", "last_updated", )
[docs]@admin.register(EventDocument) class EventDocumentAdmin(TranslatedModelAdmin): """Manage the event documents""" form = forms.EventDocumentForm list_filter = ( "created", "last_updated", )
[docs] def has_change_permission(self, request, document=None): """Only allow access to the change form if the user is an owner""" if document is not None and not is_owner(request.member, document): return False return super().has_change_permission(request, document)
[docs] def has_delete_permission(self, request, document=None): """Only allow delete access if the user is an owner""" if document is not None and not is_owner(request.member, document): return False return super().has_delete_permission(request, document)
[docs]@admin.register(MiscellaneousDocument) class MiscellaneousDocumentAdmin(TranslatedModelAdmin): """Manage the miscellaneous documents""" form = forms.MiscellaneousDocumentForm list_filter = ( "created", "last_updated", )