From 15f929697e7e6f9089a714cefc45f6c87e85dd8d Mon Sep 17 00:00:00 2001 From: relnod Date: Sat, 14 Jan 2017 13:48:12 +0100 Subject: [PATCH] basic klettertreff view structure --- jdav_web/members/admin.py | 13 +++++++ jdav_web/members/models.py | 10 ++++++ .../admin/klettertreff_overview.html | 36 +++++++++++++++++++ .../members/templatetags/overview_extras.py | 7 ++++ 4 files changed, 66 insertions(+) create mode 100644 jdav_web/members/templates/admin/klettertreff_overview.html create mode 100644 jdav_web/members/templatetags/overview_extras.py 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 %} + + + + {% for klettertreff in klettertreffs %} + + {% endfor %} + + + + {% for klettertreff in klettertreffs %} + + {% endfor %} + + {% for member in members %} + + + {% endfor %} + + {% endfor %} +
Datum{{ klettertreff.date }}
Ort{{ klettertreff.location }}
{{ member.name }} + {% for klettertreff in klettertreffs %} + + {% has_attendee_wrapper klettertreff member as test %} + {% if test %} + yes + {% else %} + no + {% endif %} +
+{% endblock %} diff --git a/jdav_web/members/templatetags/overview_extras.py b/jdav_web/members/templatetags/overview_extras.py new file mode 100644 index 0000000..28fa145 --- /dev/null +++ b/jdav_web/members/templatetags/overview_extras.py @@ -0,0 +1,7 @@ +from django import template + +register = template.Library() + +@register.assignment_tag +def has_attendee_wrapper(klettertreff, member): + return klettertreff.has_attendee(member)