Merge branch 'unsubscribe' of https://github.com/Schlabonski/jdav_lb_webapp into unsubscribe

v1-0-stable
Christian Merten 9 years ago
commit 478d1b62be

@ -9,18 +9,21 @@ 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.
class MemberAdmin(admin.ModelAdmin):
fields = ['prename', 'lastname', 'email', 'birth_date', 'group',
'gets_newsletter']
list_display = ('name', 'birth_date', 'gets_newsletter')
fields = ['prename', 'lastname', 'email', 'street', 'town', 'phone_number', 'phone_number_parents', 'birth_date', 'group',
'gets_newsletter', 'comments']
list_display = ('name', 'street', 'town', 'phone_number',
'phone_number_parents', 'birth_date', 'gets_newsletter', 'get_group', 'comments')
list_filter = ('group', 'gets_newsletter')
@ -53,6 +56,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 +120,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)

@ -30,6 +30,10 @@ class Member(models.Model):
"""
prename = models.CharField(max_length=20, verbose_name=_('prename'))
lastname = models.CharField(max_length=20, verbose_name=_('last name'))
street = models.CharField(max_length=30, verbose_name=_('street'), default='', blank=True)
town = models.CharField(max_length=30, verbose_name=_('town'), default='', blank=True)
phone_number = models.CharField(max_length=12, verbose_name=_('phone number'), default='', blank=True)
phone_number_parents = models.CharField(max_length=12, verbose_name=_('parents phone number'), default='', blank=True)
email = models.EmailField(max_length=100, default="")
birth_date = models.DateField(_('birth date')) # to determine the age
group = models.ManyToManyField(Group)
@ -37,6 +41,7 @@ class Member(models.Model):
default=True)
unsubscribe_key = models.CharField(max_length=32, default="")
unsubscribe_expire = models.DateTimeField(default=timezone.now)
comments = models.TextField(_('comments'), default='', blank=True)
def __str__(self):
"""String representation"""
@ -64,6 +69,13 @@ class Member(models.Model):
"""Returning whole name (prename + lastname)"""
return "{0} {1}".format(self.prename, self.lastname)
def get_group(self):
"""Returns a string of groups in which the member is."""
groupstring = ''.join(g.name + ',\n' for g in self.group.all())
groupstring = groupstring[:-2]
return groupstring
get_group.short_description = _('Group')
class Meta:
verbose_name = _('member')
verbose_name_plural = _('members')
@ -88,3 +100,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)

Loading…
Cancel
Save