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:
@@ -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 = {
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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')}
|
||||
|
||||
@@ -68,4 +68,4 @@ class JobMember(models.Model):
|
||||
class Meta:
|
||||
unique_together = [['member', 'job']]
|
||||
|
||||
jobmember = models.Manager()
|
||||
jobmember = models.Manager()
|
||||
|
||||
@@ -5,4 +5,4 @@ from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path('', views.index, name='index'),
|
||||
]
|
||||
]
|
||||
|
||||
@@ -15,4 +15,4 @@ def index(request):
|
||||
"jobmember": jobmember
|
||||
}
|
||||
|
||||
return render(request, 'member/index.html', context)
|
||||
return render(request, 'member/index.html', context)
|
||||
|
||||
Reference in New Issue
Block a user