Christian Merten 9 years ago
commit b02010ae6c

@ -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)
@ -21,9 +22,9 @@ from .models import (Member, Group, MemberList, MemberOnList, Klettertreff,
# Register your models here.
class MemberAdmin(admin.ModelAdmin):
fields = ['prename', 'lastname', 'email', 'street', 'town', 'phone_number', 'phone_number_parents', 'birth_date', 'group',
'gets_newsletter', 'comments']
list_display = ('name', 'birth_date', 'gets_newsletter', 'get_group', 'comments')
list_filter = ('group', 'gets_newsletter')
'gets_newsletter', 'queue', 'registration_form', 'comments']
list_display = ('name', 'birth_date', 'gets_newsletter', 'get_group', 'queue', 'created', 'comments')
list_filter = ('group', 'gets_newsletter', 'queue')
formfield_overrides = {
ManyToManyField: {'widget': forms.CheckboxSelectMultiple}
}
@ -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}
}

@ -44,6 +44,9 @@ class Member(models.Model):
unsubscribe_key = models.CharField(max_length=32, default="")
unsubscribe_expire = models.DateTimeField(default=timezone.now)
comments = models.TextField(_('comments'), default='', blank=True)
created = models.DateField(auto_now=True, verbose_name=_('created'))
queue = models.BooleanField(default=False, verbose_name=_('queue'))
registration_form = models.ImageField(verbose_name=_('registration form'), blank=True)
def __str__(self):
"""String representation"""
@ -131,6 +134,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 +143,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