103 lines
2.5 KiB
Python
103 lines
2.5 KiB
Python
from django.contrib import admin
|
|
from django.utils.translation import gettext as _
|
|
|
|
from .models import Member, Job, JobMember, JobGroup
|
|
from .forms import MyMemberForm, MyJobForm, MyJobGroupForm
|
|
|
|
|
|
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() == 'A':
|
|
return queryset.filter(role='A')
|
|
elif self.value() == 'P':
|
|
return queryset.filter(role='P')
|
|
|
|
|
|
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.all()
|
|
|
|
|
|
class InactiveMemberInline(JobMemberInline):
|
|
verbose_name = "Mitglied"
|
|
verbose_name_plural = "Inaktive Mitglieder Liste"
|
|
|
|
def get_queryset(self, request):
|
|
return JobMember.inactive_member.all()
|
|
|
|
|
|
class JobInline(admin.TabularInline):
|
|
model = Job
|
|
extra = 0
|
|
|
|
|
|
class MyMemberAdmin(admin.ModelAdmin):
|
|
form = MyMemberForm
|
|
model = Member
|
|
list_display = ['nickname', 'firstname', 'surname', 'mailaccount', 'role']
|
|
inlines = (JobOverviewInline,)
|
|
|
|
search_fields = ['firstname', 'surname', 'nickname', 'mailaccount']
|
|
list_filter = [MemberRoleFilter]
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
obj.author = request.user
|
|
super().save_model(request, obj, form, change)
|
|
|
|
|
|
admin.site.register(Member, MyMemberAdmin)
|
|
|
|
|
|
class MyJobAdmin(admin.ModelAdmin):
|
|
form = MyJobForm
|
|
model = Job
|
|
list_display = ['name']
|
|
inlines = (ActiveMemberInline, InactiveMemberInline)
|
|
|
|
search_fields = ['name']
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
obj.author = request.user
|
|
super().save_model(request, obj, form, change)
|
|
|
|
|
|
admin.site.register(Job, MyJobAdmin)
|
|
|
|
|
|
class MyJobGroupAdmin(admin.ModelAdmin):
|
|
form = MyJobGroupForm
|
|
model = JobGroup
|
|
list_display = ['name']
|
|
inlines = (JobInline, )
|
|
|
|
search_fields = ['name']
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
obj.author = request.user
|
|
super().save_model(request, obj, form, change)
|
|
|
|
|
|
admin.site.register(JobGroup, MyJobGroupAdmin)
|