UPD: improved the event export list feature.

This commit is contained in:
2018-12-13 19:00:30 +01:00
parent 85b6e018de
commit 4495322574
2 changed files with 39 additions and 21 deletions

View File

@@ -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:

View File

@@ -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'