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 %} -
| Datum | +{% trans 'date' %} | {% for klettertreff in klettertreffs %}{{ klettertreff.date }} | {% endfor %} @@ -17,18 +17,27 @@{{ klettertreff.location }} | {% endfor %}
|---|---|---|---|
| Jugendleiter | +|||
| {{ jugendleiter.name }} + {% for klettertreff in klettertreffs %} + {% has_jugendleiter_wrapper klettertreff jugendleiter as color %} + | + {% endfor %} + | ||
| Teilnehmer | +|||
| {{ member.name }} {% for klettertreff in klettertreffs %} - | - {% has_attendee_wrapper klettertreff member as test %} - {% if test %} - yes - {% else %} - no - {% endif %} - | + {% has_attendee_wrapper klettertreff member as color %} +{% endfor %} |