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): class EventListExportForm(forms.Form):
sport = forms.ChoiceField(choices=choices.SPORT_CHOICES, sport = forms.MultipleChoiceField(choices=choices.SPORT_CHOICES,
required=False, required=False,
label=_(u'Spielart'), label=_(u'Spielart'),
) initial=[c for c, l in choices.SPORT_CHOICES],
widget=forms.CheckboxSelectMultiple(),
)
begin = forms.DateField(required=False, begin = forms.DateField(required=False,
initial=datetime.date.today(),
label=_(u'Zeitraum - Start'), label=_(u'Zeitraum - Start'),
help_text=u'%s - %s' % ( help_text=u'%s - %s' % (
_(u'Format: tt.mm.jjjj'), _(u'Format: tt.mm.jjjj'),
@@ -58,16 +61,25 @@ class EventListExportForm(forms.Form):
'pickerPosition': 'bottom-left', 'pickerPosition': 'bottom-left',
}, },
bootstrap_version=3)) bootstrap_version=3))
expired = forms.BooleanField(required=False, deadline = forms.DateField(required=False,
label=_(u'auch ausgelaufene Veranstaltungen auflisten')) initial=datetime.date.today(),
label=_(u'Frühester Anmeldeschluss'),
def __init__(self, *args, **kwargs): help_text=u'%s - %s - %s' % (
super(EventListExportForm, self).__init__(*args, **kwargs) _(u'Veranstaltungen ausschließen,'
sport_choices = self.fields['sport'].widget.choices u' deren Anmeldeschluss an dem gewählten Datum bereits abgelaufen ist'),
sport_choices.append((None, u'Alle')) _(u'Kann frei gelassen werden'),
sport_choices.sort() _(u'Format: tt.mm.jjjj'),
self.fields['sport'].widget.choices = sport_choices ),
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 EventUpdateForm(forms.ModelForm):
class Meta: class Meta:

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import datetime
import logging import logging
import os import os
from django.apps import apps
from django.contrib import messages from django.contrib import messages
from django.contrib.auth import login from django.contrib.auth import login
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
@@ -72,8 +72,9 @@ class EventListExportView(generic.FormView):
} }
if form.cleaned_data['sport']: if form.cleaned_data['sport']:
sport = form.cleaned_data['sport'] sport = form.cleaned_data['sport']
filter_kwargs['sport'] = sport filter_kwargs['sport__in'] = sport
filename += u'--%s' % choices.SPORT_CHOICES.get_label(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']: if form.cleaned_data['begin']:
date = form.cleaned_data['begin'] date = form.cleaned_data['begin']
filter_kwargs['first_day__gte'] = date filter_kwargs['first_day__gte'] = date
@@ -83,13 +84,18 @@ class EventListExportView(generic.FormView):
filter_kwargs['first_day__lte'] = date filter_kwargs['first_day__lte'] = date
filename += u'--%s' % date.strftime('%Y-%m-%d') 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'' 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: for event in event_qs:
if exclude_expired and event.is_flagged('expired'): if deadline and event.registration_required and event.deadline:
continue if event.deadline < deadline:
continue
txt += event.render_as_text(format='ka-alpin') txt += event.render_as_text(format='ka-alpin')
if event.internal_note: if event.internal_note:
txt += u'\n> Bearbeitungshinweis:\n> ' + event.internal_note.replace('\n', '\n> ') + u'\n' txt += u'\n> Bearbeitungshinweis:\n> ' + event.internal_note.replace('\n', '\n> ') + u'\n'