Files
fet2020/fet2020/members/admin.py
2021-01-15 15:42:30 +00:00

194 lines
5.1 KiB
Python

from django.contrib import admin
from django.utils.translation import gettext as _
from .models import Member, Job, JobGroup, JobMember
from .forms import MemberForm, JobForm, JobGroupForm
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())
class JobMemberInline(admin.TabularInline):
model = JobMember
extra = 0
class JobOverviewInline(JobMemberInline):
verbose_name = "Tätigkeit"
verbose_name_plural = "Tätigkeitsübersicht"
class ActiveMemberInline(JobMemberInline):
verbose_name = "Mitglied"
verbose_name_plural = "Aktive Mitglieder Liste"
def get_queryset(self, request):
return JobMember.active_member.get_queryset()
class InactiveMemberInline(JobMemberInline):
verbose_name = "Mitglied"
verbose_name_plural = "Inaktive Mitglieder Liste"
def get_queryset(self, request):
return JobMember.inactive_member.get_queryset()
class JobInline(admin.TabularInline):
model = Job
extra = 0
class MemberAdmin(admin.ModelAdmin):
form = MemberForm
model = Member
fieldsets = (
(
None,
{
"fields": (
(
"firstname",
"surname",
),
"nickname",
"username",
"mailaccount",
"role",
"description",
"image",
"birthday",
"phone",
"address",
)
},
),
)
inlines = (JobOverviewInline,)
list_display = ["nickname", "firstname", "surname", "mailaccount", "role"]
ordering = [
"firstname",
]
search_fields = ["firstname", "surname", "nickname", "mailaccount"]
list_filter = [MemberRoleFilter]
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)
class JobAdmin(admin.ModelAdmin):
form = JobForm
model = Job
inlines = (ActiveMemberInline, InactiveMemberInline)
list_display = [
"name",
]
ordering = [
"name",
]
search_fields = [
"name",
]
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)
class JobGroupAdmin(admin.ModelAdmin):
form = JobGroupForm
model = JobGroup
inlines = (JobInline,)
list_display = [
"name",
"is_pinned",
]
ordering = [
"name",
]
search_fields = [
"name",
]
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.site.register(Member, MemberAdmin)
admin.site.register(Job, JobAdmin)
admin.site.register(JobGroup, JobGroupAdmin)