From 320b02e78784f8cb488f7b630e0f96025ad8eb95 Mon Sep 17 00:00:00 2001 From: erichhasl Date: Mon, 22 May 2017 16:22:02 +0200 Subject: [PATCH 1/4] replace multiselectfield with radio buttons --- jdav_web/members/admin.py | 5 ++++- jdav_web/members/models.py | 27 +++++++++++++++++++-------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index 1c0f95b..e9f83f7 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -53,6 +53,9 @@ class MemberListAdminForm(forms.ModelForm): difficulty = TypedChoiceField(MemberList.difficulty_choices, widget=RadioSelect, coerce=int) + tour_type = TypedChoiceField(MemberList.tour_type_choices, + widget=RadioSelect, + coerce=int) class Meta: model = MemberList @@ -133,7 +136,7 @@ class MemberListAdmin(admin.ModelAdmin): tour_type = '' for tt in ['Gemeinschaftstour', 'Führungstour', 'Ausbildung']: print(memberlist.tour_type) - if tt in memberlist.tour_type: + if tt == memberlist.get_tour_type(): tour_type += '\\tickedbox ' + tt else: tour_type += '\\checkbox' diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index 19eee21..44e6be3 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -1,11 +1,12 @@ from datetime import datetime import uuid -from django import forms from django.db import models from django.utils.translation import ugettext_lazy as _ from django.utils import timezone -from multiselectfield import MultiSelectField +GEMEINSCHAFTS_TOUR = 0 +FUEHRUNGS_TOUR = 1 +AUSBILDUNGS_TOUR = 2 class ActivityCategory(models.Model): @@ -118,21 +119,23 @@ class MemberList(models.Model): name = models.CharField(verbose_name='Activity', default='', max_length=50) place = models.CharField(verbose_name=_('Place'), default='', max_length=50) - destination = models.CharField(verbose_name=_('Destination (optional)'), default='', max_length=50, blank=True) + destination = models.CharField(verbose_name=_('Destination (optional)'), + default='', max_length=50, blank=True) date = models.DateField(default=datetime.today) end = models.DateField(verbose_name=_('End (optional)'), blank=True, default=datetime.today) - #comment = models.TextField(_('Comments'), default='', blank=True) + # comment = models.TextField(_('Comments'), default='', blank=True) groups = models.ManyToManyField(Group) jugendleiter = models.ManyToManyField(Member) - tour_type_choices = (('Gemeinschaftstour','Gemeinschaftstour'), ('Führungstour', 'Führungstour'), - ('Ausbildung', 'Ausbildung')) - tour_type = MultiSelectField(choices=tour_type_choices, default='', max_choices=1) + tour_type_choices = ((GEMEINSCHAFTS_TOUR, 'Gemeinschaftstour'), + (FUEHRUNGS_TOUR, 'Führungstour'), + (AUSBILDUNGS_TOUR, 'Ausbildung')) + tour_type = models.IntegerField(verbose_name=_('Art der Tour'), + choices=tour_type_choices) activity = models.ManyToManyField(ActivityCategory, default=None) difficulty_choices = [(1, _('easy')), (2, _('medium')), (3, _('hard'))] difficulty = models.IntegerField(verbose_name=_('Difficulty'), choices=difficulty_choices) - def __str__(self): """String represenation""" return self.name @@ -141,6 +144,14 @@ class MemberList(models.Model): verbose_name = _('Memberlist') verbose_name_plural = _('Memberlists') + def get_tour_type(self): + if self.tour_type == FUEHRUNGS_TOUR: + return "Führungstour" + elif self.tour_type == AUSBILDUNGS_TOUR: + return "Ausbildung" + else: + return "Gemeinschaftstour" + class MemberOnList(models.Model): """ From 187f54e6b81d09b35a5ae121cb58dcd4b530e04a Mon Sep 17 00:00:00 2001 From: erichhasl Date: Mon, 22 May 2017 16:36:12 +0200 Subject: [PATCH 2/4] add placeholder for empty memberlists --- jdav_web/members/admin.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index 1c0f95b..2351089 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -99,11 +99,17 @@ class MemberListAdmin(admin.ModelAdmin): # open temporary file for table with open(media_path(filename_table), 'w+', encoding='utf-8') as f: + if memberlist.memberonlist_set.count() == 0: + f.write('{0} & {1} & {2} & {3} \\\\ \n'.format( + 'keine Teilnemher', '-', '-', '-' + )) for memberonlist in memberlist.memberonlist_set.all(): # write table of members in latex compatible format - line = '{0} {1} & {2}, {3} & {4} & {5} \\\\ \n'.format(memberonlist.member.prename, + line = '{0} {1} & {2}, {3} & {4} & {5} \\\\ \n'.format( + memberonlist.member.prename, memberonlist.member.lastname, memberonlist.member.street, - memberonlist.member.town, memberonlist.member.phone_number, memberonlist.member.email) + memberonlist.member.town, memberonlist.member.phone_number, + memberonlist.member.email) f.write(line) # copy and adapt latex memberlist template @@ -121,7 +127,7 @@ class MemberListAdmin(admin.ModelAdmin): template_content = template_content.replace('DESTINATION', memberlist.destination) template_content = template_content.replace('PLACE', memberlist.place) template_content = template_content.replace('MEMBERLIST-DATE', - datetime.today().strftime('%d.%m.%Y')) + datetime.today().strftime('%d.%m.%Y')) time_period = memberlist.date.strftime('%d.%m.%Y') if memberlist.end != memberlist.date: time_period += " - " + memberlist.end.strftime('%d.%m.%Y') From d88e641c2eb0480b05331be6e45dddd67f71e57f Mon Sep 17 00:00:00 2001 From: erichhasl Date: Mon, 22 May 2017 16:58:49 +0200 Subject: [PATCH 3/4] fix typo --- jdav_web/members/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index 355d9dc..d0b2494 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -104,7 +104,7 @@ class MemberListAdmin(admin.ModelAdmin): with open(media_path(filename_table), 'w+', encoding='utf-8') as f: if memberlist.memberonlist_set.count() == 0: f.write('{0} & {1} & {2} & {3} \\\\ \n'.format( - 'keine Teilnemher', '-', '-', '-' + 'keine Teilnehmer', '-', '-', '-' )) for memberonlist in memberlist.memberonlist_set.all(): # write table of members in latex compatible format From b8123c6f601c16ceaa1b1fdb03582b34faf6aa82 Mon Sep 17 00:00:00 2001 From: erichhasl Date: Mon, 22 May 2017 17:03:46 +0200 Subject: [PATCH 4/4] fix zero-division error for empty memberlist --- jdav_web/members/admin.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index d0b2494..7768320 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -215,11 +215,17 @@ class MemberListAdmin(admin.ModelAdmin): table_qualities = "" for activity in activities: + skill_avg = 0 if len(skills[activity]) == 0 else\ + sum(skills[activity]) / len(skills[activity]) + skill_min = 0 if len(skills[activity]) == 0 else\ + min(skills[activity]) + skill_max = 0 if len(skills[activity]) == 0 else\ + max(skills[activity]) line = '{0} & {1} & {2} & {3} \\\\ \n'.format( activity, - sum(skills[activity]) / len(skills[activity]), - min(skills[activity]), - max(skills[activity]) + skill_avg, + skill_min, + skill_max ) table_qualities += line