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

@@ -40,7 +40,7 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'taggit',
'taggit',
'ckeditor',
'ckeditor_uploader',
'rest_framework',
@@ -160,5 +160,5 @@ CKEDITOR_CONFIGS = {
},
],
}
}

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,8 +74,10 @@ 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)
admin.site.register(Job, MyJobAdmin)
admin.site.register(Job, MyJobAdmin)

View File

@@ -16,4 +16,4 @@ class MyJobForm(forms.ModelForm):
model = Job
fields = ['name', 'body', 'image']
widgets = {'body': CKEditorUploadingWidget(config_name='default')}
widgets = {'body': CKEditorUploadingWidget(config_name='default')}

View File

@@ -68,4 +68,4 @@ class JobMember(models.Model):
class Meta:
unique_together = [['member', 'job']]
jobmember = models.Manager()
jobmember = models.Manager()

View File

@@ -5,4 +5,4 @@ from . import views
urlpatterns = [
path('', views.index, name='index'),
]
]

View File

@@ -15,4 +15,4 @@ def index(request):
"jobmember": jobmember
}
return render(request, 'member/index.html', context)
return render(request, 'member/index.html', context)