194 lines
5.1 KiB
Python
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)
|