diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index 69561bb..7622147 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -9,11 +9,13 @@ from django.http import HttpResponse from wsgiref.util import FileWrapper from django import forms from django.contrib import admin +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 .models import Member, Group, MemberList, MemberOnList +from .models import (Member, Group, MemberList, MemberOnList, Klettertreff, + KlettertreffAttendee) # Register your models here. @@ -53,6 +55,9 @@ class MemberListAdmin(admin.ModelAdmin): actions = ['convert_to_pdf'] inlines = [MemberOnListInline] + def __init__(self, *args, **kwargs): + super(MemberListAdmin, self).__init__(*args, **kwargs) + def convert_to_pdf(self, request, queryset): """Converts a member list to pdf. @@ -114,10 +119,33 @@ class MemberListAdmin(admin.ModelAdmin): # provide the user with the resulting pdf file with open('media/memberlists/'+filename_pdf, 'rb') as pdf: response = HttpResponse(FileWrapper(pdf))#, content='application/pdf') + response['Content-Type'] = 'application/pdf' response['Content-Disposition'] = 'attachment; filename='+filename_pdf return response +class KlettertreffAdminForm(forms.ModelForm): + class Meta: + model = Klettertreff + exclude = [] + + def __init__(self, *args, **kwargs): + super(KlettertreffAdminForm, self).__init__(*args, **kwargs) + self.fields['jugendleiter'].queryset = Member.objects.filter(group__name='Jugendleiter') + +class KlettertreffAttendeeInline(admin.StackedInline): + + model = KlettertreffAttendee + extra = 0 + +class KlettertreffAdmin(admin.ModelAdmin): + form = KlettertreffAdminForm + exclude = [] + inlines = [KlettertreffAttendeeInline] + list_display = ['__str__', 'date', 'get_jugendleiter'] + list_filter = [('date', DateFieldListFilter)] + admin.site.register(Member, MemberAdmin) admin.site.register(Group, GroupAdmin) admin.site.register(MemberList, MemberListAdmin) +admin.site.register(Klettertreff, KlettertreffAdmin) diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index 6bfce44..956cab8 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -72,3 +72,30 @@ class MemberOnList(models.Model): member = models.ForeignKey(Member) memberlist = models.ForeignKey(MemberList) comments = models.TextField(_('Comment'), default='') + + +class Klettertreff(models.Model): + """ This model represents a Klettertreff event. + + A Klettertreff can take a date, location, Jugendleiter, attending members as + input. + """ + date = models.DateField(_('Date'), default=datetime.today) + location = models.CharField(_('Location'), default='', max_length=60) + jugendleiter = models.ManyToManyField(Member) + + def __str__(self): + return self.location + ' ' + self.date.strftime('%d.%m.%Y') + + def get_jugendleiter(self): + jl_string = ''.join(j.name + ',\n' for j in self.jugendleiter.all()) + jl_string = jl_string[:-2] + return jl_string + + get_jugendleiter.short_description = _('Jugendleiter') + +class KlettertreffAttendee(models.Model): + """Connects members to Klettertreffs.""" + member = models.ForeignKey(Member) + klettertreff = models.ForeignKey(Klettertreff) +