Added filters and search fields for members, jobs

Member are searchable by name, nickname, mailaccount
Jobs are searchable by name
Menbers can be filtered by Active,Pension,All
NOT WORKING YET: Inline Widget JobMember filter for inactive jobs
This commit is contained in:
2020-06-09 14:00:29 +02:00
parent 7c09d76035
commit e94d19602b
6 changed files with 58 additions and 7 deletions

View File

@@ -2,17 +2,66 @@ from django.contrib import admin
from .models import Member, Job, JobMember
from .forms import MyMemberForm, MyJobForm
from django.utils.translation import gettext as _
class ActiveJobFilter(admin.SimpleListFilter):
title = _('Aktiv im Job')
parameter_name = 'is_active'
def lookups(self, request, model_admin):
return (
('yes', _('Yes')),
('no', _('No')),
)
def queryset(self, request, queryset):
if self.value() == 'yes':
return queryset.filter(job_end__isnull=True)
if self.value() == 'no':
return queryset
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')
if self.value() == 'P':
return queryset.filter(role='P')
class JobMemberInline(admin.TabularInline):
list_filter = [ActiveJobFilter]
model = JobMember
extra = 1
#def get_queryset(self, request):
# qs = super().get_queryset(request)
# return qs.filter(job_end__isnull=False)
class MyMemberAdmin(admin.ModelAdmin):
form = MyMemberForm
model = Member
list_display = ['name', 'nickname', 'mailaccount', 'role', 'body', 'image']
inlines = (JobMemberInline,)
search_fields = ['name','nickname','mailaccount']
list_filter = [MemberRoleFilter]
def save_model(self, request, obj, form, change):
obj.author = request.user
super().save_model(request, obj, form, change)
@@ -25,6 +74,8 @@ class MyJobAdmin(admin.ModelAdmin):
list_display = ['name', 'body', 'image']
inlines = (JobMemberInline,)
search_fields = ['name']
def save_model(self, request, obj, form, change):
obj.author = request.user
super().save_model(request, obj, form, change)