Merge branch 'master' into unsubscribe

v1-0-stable
Christian Merten 9 years ago committed by GitHub
commit bb38c64fcb

@ -9,18 +9,21 @@ from django.http import HttpResponse
from wsgiref.util import FileWrapper from wsgiref.util import FileWrapper
from django import forms from django import forms
from django.contrib import admin from django.contrib import admin
from django.contrib.admin import DateFieldListFilter
from django.utils.translation import ugettext_lazy as translate from django.utils.translation import ugettext_lazy as translate
from django.db.models import TextField from django.db.models import TextField
from django.forms import Textarea 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. # Register your models here.
class MemberAdmin(admin.ModelAdmin): class MemberAdmin(admin.ModelAdmin):
fields = ['prename', 'lastname', 'email', 'birth_date', 'group', fields = ['prename', 'lastname', 'email', 'street', 'town', 'phone_number', 'phone_number_parents', 'birth_date', 'group',
'gets_newsletter'] 'gets_newsletter', 'comments']
list_display = ('name', 'birth_date', 'gets_newsletter') list_display = ('name', 'street', 'town', 'phone_number',
'phone_number_parents', 'birth_date', 'gets_newsletter', 'get_group', 'comments')
list_filter = ('group', 'gets_newsletter') list_filter = ('group', 'gets_newsletter')
@ -53,6 +56,9 @@ class MemberListAdmin(admin.ModelAdmin):
actions = ['convert_to_pdf'] actions = ['convert_to_pdf']
inlines = [MemberOnListInline] inlines = [MemberOnListInline]
def __init__(self, *args, **kwargs):
super(MemberListAdmin, self).__init__(*args, **kwargs)
def convert_to_pdf(self, request, queryset): def convert_to_pdf(self, request, queryset):
"""Converts a member list to pdf. """Converts a member list to pdf.
@ -114,10 +120,33 @@ class MemberListAdmin(admin.ModelAdmin):
# provide the user with the resulting pdf file # provide the user with the resulting pdf file
with open('media/memberlists/'+filename_pdf, 'rb') as pdf: with open('media/memberlists/'+filename_pdf, 'rb') as pdf:
response = HttpResponse(FileWrapper(pdf))#, content='application/pdf') response = HttpResponse(FileWrapper(pdf))#, content='application/pdf')
response['Content-Type'] = 'application/pdf'
response['Content-Disposition'] = 'attachment; filename='+filename_pdf response['Content-Disposition'] = 'attachment; filename='+filename_pdf
return response 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(Member, MemberAdmin)
admin.site.register(Group, GroupAdmin) admin.site.register(Group, GroupAdmin)
admin.site.register(MemberList, MemberListAdmin) 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')) prename = models.CharField(max_length=20, verbose_name=_('prename'))
lastname = models.CharField(max_length=20, verbose_name=_('last name')) 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="") email = models.EmailField(max_length=100, default="")
birth_date = models.DateField(_('birth date')) # to determine the age birth_date = models.DateField(_('birth date')) # to determine the age
group = models.ManyToManyField(Group) group = models.ManyToManyField(Group)
@ -37,6 +41,7 @@ class Member(models.Model):
default=True) default=True)
unsubscribe_key = models.CharField(max_length=32, default="") unsubscribe_key = models.CharField(max_length=32, default="")
unsubscribe_expire = models.DateTimeField(default=timezone.now) unsubscribe_expire = models.DateTimeField(default=timezone.now)
comments = models.TextField(_('comments'), default='', blank=True)
def __str__(self): def __str__(self):
"""String representation""" """String representation"""
@ -63,6 +68,13 @@ class Member(models.Model):
def name(self): def name(self):
"""Returning whole name (prename + lastname)""" """Returning whole name (prename + lastname)"""
return "{0} {1}".format(self.prename, self.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: class Meta:
verbose_name = _('member') verbose_name = _('member')
@ -88,3 +100,30 @@ class MemberOnList(models.Model):
member = models.ForeignKey(Member) member = models.ForeignKey(Member)
memberlist = models.ForeignKey(MemberList) memberlist = models.ForeignKey(MemberList)
comments = models.TextField(_('Comment'), default='') 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