From cb768845fb2275971fc0f04b8805773add239d55 Mon Sep 17 00:00:00 2001 From: relnod Date: Sat, 14 Jan 2017 19:40:49 +0100 Subject: [PATCH] add group field to klettertreff --- jdav_web/members/admin.py | 28 +++++++++++++++--- jdav_web/members/models.py | 10 +++++-- .../admin/klettertreff_overview.html | 29 ++++++++++++------- .../members/templatetags/overview_extras.py | 12 +++++++- 4 files changed, 62 insertions(+), 17 deletions(-) diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index 3af5e11..e9f3b48 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -135,24 +135,44 @@ class KlettertreffAdminForm(forms.ModelForm): super(KlettertreffAdminForm, self).__init__(*args, **kwargs) self.fields['jugendleiter'].queryset = Member.objects.filter(group__name='Jugendleiter') -class KlettertreffAttendeeInline(admin.StackedInline): +class KlettertreffAttendeeInlineForm(forms.ModelForm): + class Meta: + model = KlettertreffAttendee + exclude = [] + + """ + def __init__(self, *args, **kwargs): + super(KlettertreffAttendeeInlineForm, self).__init__(*args, **kwargs) + self.fields['member'].queryset = Member.objects.filter(group__name='J1') + """ + +class KlettertreffAttendeeInline(admin.StackedInline): model = KlettertreffAttendee + form = KlettertreffAttendeeInlineForm extra = 0 + class KlettertreffAdmin(admin.ModelAdmin): form = KlettertreffAdminForm exclude = [] inlines = [KlettertreffAttendeeInline] list_display = ['__str__', 'date', 'get_jugendleiter'] - list_filter = [('date', DateFieldListFilter)] + list_filter = [('date', DateFieldListFilter), 'group__name'] actions = ['overview'] def overview(self, request, queryset): + group = request.GET.get('group__name') + if group != 'NONE': + members = Member.objects.filter(group__name__contains=group) + else: + members = Member.objects.all() context = { 'klettertreffs': queryset, - 'members': Member.objects.all(), - 'attendees': KlettertreffAttendee.objects.all() + 'members': members, + 'attendees': KlettertreffAttendee.objects.all(), + 'jugendleiters': + Member.objects.filter(group__name='Jugendleiter') } return render(request, 'admin/klettertreff_overview.html', diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index ff41a82..621004f 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -111,6 +111,7 @@ class Klettertreff(models.Model): date = models.DateField(_('Date'), default=datetime.today) location = models.CharField(_('Location'), default='', max_length=60) jugendleiter = models.ManyToManyField(Member) + group = models.ForeignKey(Group, default='') def __str__(self): return self.location + ' ' + self.date.strftime('%d.%m.%Y') @@ -121,10 +122,15 @@ class Klettertreff(models.Model): return jl_string def has_attendee(self, member): - attendees = KlettertreffAttendee.objects.filter( + queryset = KlettertreffAttendee.objects.filter( member__id__contains=member.id, klettertreff__id__contains=self.id) - if attendees: + if queryset: + return True + return False + + def has_jugendleiter(self, jugendleiter): + if jugendleiter in self.jugendleiter.all(): return True return False diff --git a/jdav_web/members/templates/admin/klettertreff_overview.html b/jdav_web/members/templates/admin/klettertreff_overview.html index 6f27afd..5188f36 100644 --- a/jdav_web/members/templates/admin/klettertreff_overview.html +++ b/jdav_web/members/templates/admin/klettertreff_overview.html @@ -4,9 +4,9 @@ {% load overview_extras %} {% block content %} - +
- + {% for klettertreff in klettertreffs %} {% endfor %} @@ -17,18 +17,27 @@ {% endfor %} + + + + {% for jugendleiter in jugendleiters %} + + + {% endfor %} + + {% endfor %} + + + {% for member in members %} + {% has_attendee_wrapper klettertreff member as color %} + {% endfor %} {% endfor %} diff --git a/jdav_web/members/templatetags/overview_extras.py b/jdav_web/members/templatetags/overview_extras.py index 28fa145..8106749 100644 --- a/jdav_web/members/templatetags/overview_extras.py +++ b/jdav_web/members/templatetags/overview_extras.py @@ -2,6 +2,16 @@ from django import template register = template.Library() +def blToColor(bl): + if bl: + return 'green' + else: + return 'red' + @register.assignment_tag def has_attendee_wrapper(klettertreff, member): - return klettertreff.has_attendee(member) + return blToColor(klettertreff.has_attendee(member)) + +@register.assignment_tag +def has_jugendleiter_wrapper(klettertreff, jugendleiter): + return blToColor(klettertreff.has_jugendleiter(jugendleiter))
Datum{% trans 'date' %}{{ klettertreff.date }}{{ klettertreff.location }}
Jugendleiter
{{ jugendleiter.name }} + {% for klettertreff in klettertreffs %} + {% has_jugendleiter_wrapper klettertreff jugendleiter as color %} +
Teilnehmer
{{ member.name }} {% for klettertreff in klettertreffs %} - - {% has_attendee_wrapper klettertreff member as test %} - {% if test %} - yes - {% else %} - no - {% endif %} -