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.sessions',
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
'taggit',
|
'taggit',
|
||||||
'ckeditor',
|
'ckeditor',
|
||||||
'ckeditor_uploader',
|
'ckeditor_uploader',
|
||||||
'rest_framework',
|
'rest_framework',
|
||||||
@@ -160,5 +160,5 @@ CKEDITOR_CONFIGS = {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,17 +2,66 @@ from django.contrib import admin
|
|||||||
from .models import Member, Job, JobMember
|
from .models import Member, Job, JobMember
|
||||||
from .forms import MyMemberForm, MyJobForm
|
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):
|
class JobMemberInline(admin.TabularInline):
|
||||||
|
list_filter = [ActiveJobFilter]
|
||||||
model = JobMember
|
model = JobMember
|
||||||
extra = 1
|
extra = 1
|
||||||
|
|
||||||
|
#def get_queryset(self, request):
|
||||||
|
# qs = super().get_queryset(request)
|
||||||
|
# return qs.filter(job_end__isnull=False)
|
||||||
|
|
||||||
class MyMemberAdmin(admin.ModelAdmin):
|
class MyMemberAdmin(admin.ModelAdmin):
|
||||||
form = MyMemberForm
|
form = MyMemberForm
|
||||||
model = Member
|
model = Member
|
||||||
list_display = ['name', 'nickname', 'mailaccount', 'role', 'body', 'image']
|
list_display = ['name', 'nickname', 'mailaccount', 'role', 'body', 'image']
|
||||||
inlines = (JobMemberInline,)
|
inlines = (JobMemberInline,)
|
||||||
|
|
||||||
|
search_fields = ['name','nickname','mailaccount']
|
||||||
|
list_filter = [MemberRoleFilter]
|
||||||
|
|
||||||
def save_model(self, request, obj, form, change):
|
def save_model(self, request, obj, form, change):
|
||||||
obj.author = request.user
|
obj.author = request.user
|
||||||
super().save_model(request, obj, form, change)
|
super().save_model(request, obj, form, change)
|
||||||
@@ -25,8 +74,10 @@ class MyJobAdmin(admin.ModelAdmin):
|
|||||||
list_display = ['name', 'body', 'image']
|
list_display = ['name', 'body', 'image']
|
||||||
inlines = (JobMemberInline,)
|
inlines = (JobMemberInline,)
|
||||||
|
|
||||||
|
search_fields = ['name']
|
||||||
|
|
||||||
def save_model(self, request, obj, form, change):
|
def save_model(self, request, obj, form, change):
|
||||||
obj.author = request.user
|
obj.author = request.user
|
||||||
super().save_model(request, obj, form, change)
|
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
|
model = Job
|
||||||
fields = ['name', 'body', 'image']
|
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:
|
class Meta:
|
||||||
unique_together = [['member', 'job']]
|
unique_together = [['member', 'job']]
|
||||||
|
|
||||||
jobmember = models.Manager()
|
jobmember = models.Manager()
|
||||||
|
|||||||
@@ -5,4 +5,4 @@ from . import views
|
|||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.index, name='index'),
|
path('', views.index, name='index'),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -15,4 +15,4 @@ def index(request):
|
|||||||
"jobmember": jobmember
|
"jobmember": jobmember
|
||||||
}
|
}
|
||||||
|
|
||||||
return render(request, 'member/index.html', context)
|
return render(request, 'member/index.html', context)
|
||||||
|
|||||||
Reference in New Issue
Block a user