Merge pull request #41 from Schlabonski/klettertreff

Klettertreff Html View
v1-0-stable
relnod 9 years ago committed by GitHub
commit 0403019e81

@ -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, ManyToManyField
from django.forms import Textarea
from django.shortcuts import render
from .models import (Member, Group, MemberList, MemberOnList, Klettertreff,
KlettertreffAttendee)
@ -164,17 +165,49 @@ 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': members,
'attendees': KlettertreffAttendee.objects.all(),
'jugendleiters':
Member.objects.filter(group__name='Jugendleiter')
}
return render(request, 'admin/klettertreff_overview.html',
context)
formfield_overrides = {
ManyToManyField: {'widget': forms.CheckboxSelectMultiple}
}

@ -131,6 +131,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')
@ -139,6 +140,20 @@ class Klettertreff(models.Model):
jl_string = ', '.join(j.name for j in self.jugendleiter.all())
return jl_string
def has_attendee(self, member):
queryset = KlettertreffAttendee.objects.filter(
member__id__contains=member.id,
klettertreff__id__contains=self.id)
if queryset:
return True
return False
def has_jugendleiter(self, jugendleiter):
if jugendleiter in self.jugendleiter.all():
return True
return False
get_jugendleiter.short_description = _('Jugendleiter')
class Meta:

@ -0,0 +1,45 @@
{% extends "admin/base_site.html" %}
{% load i18n %}
{% load static %}
{% load overview_extras %}
{% block content %}
<table style="height=100%">
<tr>
<th>{% trans 'date' %}</th>
{% for klettertreff in klettertreffs %}
<td>{{ klettertreff.date }}</td>
{% endfor %}
</tr>
<tr>
<th>Ort</th>
{% for klettertreff in klettertreffs %}
<td>{{ klettertreff.location }}</td>
{% endfor %}
</tr>
<tr>
<th>Jugendleiter</th>
</tr>
{% for jugendleiter in jugendleiters %}
<tr>
<th>{{ jugendleiter.name }}
{% for klettertreff in klettertreffs %}
{% has_jugendleiter_wrapper klettertreff jugendleiter as color %}
<td style="background-color:{{ color }}"></td>
{% endfor %}
</tr>
{% endfor %}
<tr>
<th>Teilnehmer</th>
</tr>
{% for member in members %}
<tr>
<th>{{ member.name }}
{% for klettertreff in klettertreffs %}
{% has_attendee_wrapper klettertreff member as color %}
<td style="background-color:{{ color }}"></td>
{% endfor %}
</tr>
{% endfor %}
</table>
{% endblock %}

@ -0,0 +1,17 @@
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 blToColor(klettertreff.has_attendee(member))
@register.assignment_tag
def has_jugendleiter_wrapper(klettertreff, jugendleiter):
return blToColor(klettertreff.has_jugendleiter(jugendleiter))
Loading…
Cancel
Save