From 4495322574a44fc8e5ad48316fc4fcae67f29fdb Mon Sep 17 00:00:00 2001 From: Jens Kleineheismann Date: Thu, 13 Dec 2018 19:00:30 +0100 Subject: [PATCH] UPD: improved the event export list feature. --- dav_events/forms/events.py | 40 +++++++++++++++++++++++++------------- dav_events/views/events.py | 20 ++++++++++++------- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/dav_events/forms/events.py b/dav_events/forms/events.py index f86b56a..63c7566 100644 --- a/dav_events/forms/events.py +++ b/dav_events/forms/events.py @@ -20,11 +20,14 @@ logger = logging.getLogger(__name__) class EventListExportForm(forms.Form): - sport = forms.ChoiceField(choices=choices.SPORT_CHOICES, - required=False, - label=_(u'Spielart'), - ) + sport = forms.MultipleChoiceField(choices=choices.SPORT_CHOICES, + required=False, + label=_(u'Spielart'), + initial=[c for c, l in choices.SPORT_CHOICES], + widget=forms.CheckboxSelectMultiple(), + ) begin = forms.DateField(required=False, + initial=datetime.date.today(), label=_(u'Zeitraum - Start'), help_text=u'%s - %s' % ( _(u'Format: tt.mm.jjjj'), @@ -58,16 +61,25 @@ class EventListExportForm(forms.Form): 'pickerPosition': 'bottom-left', }, bootstrap_version=3)) - expired = forms.BooleanField(required=False, - label=_(u'auch ausgelaufene Veranstaltungen auflisten')) - - def __init__(self, *args, **kwargs): - super(EventListExportForm, self).__init__(*args, **kwargs) - sport_choices = self.fields['sport'].widget.choices - sport_choices.append((None, u'Alle')) - sport_choices.sort() - self.fields['sport'].widget.choices = sport_choices - + deadline = forms.DateField(required=False, + initial=datetime.date.today(), + label=_(u'Frühester Anmeldeschluss'), + help_text=u'%s - %s - %s' % ( + _(u'Veranstaltungen ausschließen,' + u' deren Anmeldeschluss an dem gewählten Datum bereits abgelaufen ist'), + _(u'Kann frei gelassen werden'), + _(u'Format: tt.mm.jjjj'), + ), + widget=DateWidget(attrs={'id': 'id_deadline_widget', + 'placeholder': _(u'Anmeldeschluss ignorieren'), + }, + usel10n=True, + options={ + # 'format': 'dd.mm.yyyy', + # 'weekStart': 1, + 'pickerPosition': 'bottom-left', + }, + bootstrap_version=3)) class EventUpdateForm(forms.ModelForm): class Meta: diff --git a/dav_events/views/events.py b/dav_events/views/events.py index c6dd876..c4f6fc4 100644 --- a/dav_events/views/events.py +++ b/dav_events/views/events.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- +import datetime import logging import os -from django.apps import apps from django.contrib import messages from django.contrib.auth import login from django.contrib.auth.decorators import login_required @@ -72,8 +72,9 @@ class EventListExportView(generic.FormView): } if form.cleaned_data['sport']: sport = form.cleaned_data['sport'] - filter_kwargs['sport'] = sport - filename += u'--%s' % choices.SPORT_CHOICES.get_label(sport) + filter_kwargs['sport__in'] = sport + sport_labels = [u'%s' % choices.SPORT_CHOICES.get_label(code) for code in sport] + filename += u'--%s' % u'_+_'.join(sport_labels) if form.cleaned_data['begin']: date = form.cleaned_data['begin'] filter_kwargs['first_day__gte'] = date @@ -83,13 +84,18 @@ class EventListExportView(generic.FormView): filter_kwargs['first_day__lte'] = date filename += u'--%s' % date.strftime('%Y-%m-%d') - exclude_expired = not form.cleaned_data.get('expired', False) + if form.cleaned_data['deadline']: + deadline = form.cleaned_data['deadline'] + else: + deadline = None txt = u'' - event_qs = models.Event.objects.filter(**filter_kwargs).order_by('sport', 'first_day') + event_qs = models.Event.objects.filter(**filter_kwargs).order_by('first_day', 'number') for event in event_qs: - if exclude_expired and event.is_flagged('expired'): - continue + if deadline and event.registration_required and event.deadline: + if event.deadline < deadline: + continue + txt += event.render_as_text(format='ka-alpin') if event.internal_note: txt += u'\n> Bearbeitungshinweis:\n> ' + event.internal_note.replace('\n', '\n> ') + u'\n'