diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index 0394801..3af5e11 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -13,6 +13,7 @@ from django.contrib.admin import DateFieldListFilter from django.utils.translation import ugettext_lazy as translate from django.db.models import TextField from django.forms import Textarea +from django.shortcuts import render from .models import (Member, Group, MemberList, MemberOnList, Klettertreff, KlettertreffAttendee) @@ -145,6 +146,18 @@ class KlettertreffAdmin(admin.ModelAdmin): inlines = [KlettertreffAttendeeInline] list_display = ['__str__', 'date', 'get_jugendleiter'] list_filter = [('date', DateFieldListFilter)] + actions = ['overview'] + + def overview(self, request, queryset): + context = { + 'klettertreffs': queryset, + 'members': Member.objects.all(), + 'attendees': KlettertreffAttendee.objects.all() + } + + return render(request, 'admin/klettertreff_overview.html', + context) + admin.site.register(Member, MemberAdmin) admin.site.register(Group, GroupAdmin) diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index d15f7e7..ff41a82 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -120,8 +120,18 @@ class Klettertreff(models.Model): jl_string = jl_string[:-2] return jl_string + def has_attendee(self, member): + attendees = KlettertreffAttendee.objects.filter( + member__id__contains=member.id, + klettertreff__id__contains=self.id) + if attendees: + return True + return False + + get_jugendleiter.short_description = _('Jugendleiter') + class KlettertreffAttendee(models.Model): """Connects members to Klettertreffs.""" member = models.ForeignKey(Member) diff --git a/jdav_web/members/templates/admin/klettertreff_overview.html b/jdav_web/members/templates/admin/klettertreff_overview.html new file mode 100644 index 0000000..6f27afd --- /dev/null +++ b/jdav_web/members/templates/admin/klettertreff_overview.html @@ -0,0 +1,36 @@ +{% extends "admin/base_site.html" %} +{% load i18n %} +{% load static %} +{% load overview_extras %} + +{% block content %} +
| Datum | + {% for klettertreff in klettertreffs %} +{{ klettertreff.date }} | + {% endfor %} +
|---|---|
| Ort | + {% for klettertreff in klettertreffs %} +{{ klettertreff.location }} | + {% endfor %} +
| {{ member.name }} + {% for klettertreff in klettertreffs %} + | + {% has_attendee_wrapper klettertreff member as test %} + {% if test %} + yes + {% else %} + no + {% endif %} + | + {% endfor %} +