Files
fet2020/fet2020/members/admin.py

233 lines
6.1 KiB
Python

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)