from django.contrib import admin from .forms import ( ActiveMemberForm, InactiveMemberForm, JobForm, JobGroupForm, JobInlineForm, MemberForm, ) from .models import Job, JobGroup, JobMember, Member class MemberRoleFilter(admin.SimpleListFilter): title = "Rolle" parameter_name = "role" def lookups(self, request, model_admin): return ( ("A", "Aktiv"), ("P", "Pension"), ) def queryset(self, request, queryset): if self.value() in Member.MemberRole: return queryset.filter(role=self.value()) return queryset class JobMemberInline(admin.TabularInline): model = JobMember extra = 0 class JobOverviewInline(JobMemberInline): verbose_name = "Tätigkeit" verbose_name_plural = "Tätigkeitsübersicht" def get_queryset(self, request): return JobMember.members.get_all_jobs() class ActiveMemberInline(JobMemberInline): form = ActiveMemberForm verbose_name = "Mitglied" verbose_name_plural = "Aktive Mitglieder Liste" def get_queryset(self, request): return JobMember.active_member.get_queryset() class InactiveMemberInline(JobMemberInline): form = InactiveMemberForm verbose_name = "Mitglied" verbose_name_plural = "Inaktive Mitglieder Liste" def get_queryset(self, request): return JobMember.inactive_member.get_queryset() class JobInline(admin.TabularInline): form = JobInlineForm model = Job extra = 0 show_change_link = True @admin.register(Member) class MemberAdmin(admin.ModelAdmin): form = MemberForm model = Member fieldsets = ( ( None, { "fields": ( ( "firstname", "surname", ), "nickname", "mailaccount", "role", "image", "description", ), }, ), ) inlines = (JobOverviewInline,) list_display = ["nickname", "firstname", "surname", "mailaccount", "role"] list_filter = [MemberRoleFilter] ordering = ["firstname"] search_fields = ["firstname", "surname", "nickname", "mailaccount"] def add_view(self, request, form_url="", extra_context=None): extra_context = extra_context or {} extra_context["help_text"] = "Fette Schriften sind Pflichtfelder." return super().add_view( request, form_url, extra_context=extra_context, ) def change_view(self, request, object_id, form_url="", extra_context=None): extra_context = extra_context or {} extra_context["help_text"] = "Fette Schriften sind Pflichtfelder." return super().change_view( request, object_id, form_url, extra_context=extra_context, ) def save_model(self, request, obj, form, change): obj.author = request.user super().save_model(request, obj, form, change) @admin.register(Job) class JobAdmin(admin.ModelAdmin): form = JobForm model = Job list_display = ["name", "job_group"] ordering = ["name"] search_fields = ["name"] fieldsets = ( ( None, { "fields": ( "name", "job_group", ), }, ), ( "Permalink", { "fields": ( "shortterm", "slug", ), }, ), ) inlines = (ActiveMemberInline, InactiveMemberInline) readonly_fields = ["slug"] def add_view(self, request, form_url="", extra_context=None): extra_context = extra_context or {} extra_context["help_text"] = "Fette Schriften sind Pflichtfelder." return super().add_view( request, form_url, extra_context=extra_context, ) def change_view(self, request, object_id, form_url="", extra_context=None): extra_context = extra_context or {} extra_context["help_text"] = "Fette Schriften sind Pflichfelder." return super().change_view( request, object_id, form_url, extra_context=extra_context, ) def save_model(self, request, obj, form, change): obj.author = request.user super().save_model(request, obj, form, change) @admin.register(JobGroup) class JobGroupAdmin(admin.ModelAdmin): form = JobGroupForm model = JobGroup list_display = ["name"] ordering = ["name"] search_fields = ["name"] fieldsets = ( ( None, { "fields": ( "name", "description", ), }, ), ( "Permalink", { "fields": ( "shortterm", "slug", ), }, ), ) inlines = (JobInline,) readonly_fields = ["slug"] def add_view(self, request, form_url="", extra_context=None): extra_context = extra_context or {} extra_context["help_text"] = "Fette Schriften sind Pflichtfelder." return super().add_view( request, form_url, extra_context=extra_context, ) def change_view(self, request, object_id, form_url="", extra_context=None): extra_context = extra_context or {} extra_context["help_text"] = "Fette Schriften sind Pflichfelder." return super().change_view( request, object_id, form_url, extra_context=extra_context, ) def save_model(self, request, obj, form, change): obj.author = request.user super().save_model(request, obj, form, change)