diff --git a/dav_events/apps.py b/dav_events/apps.py index f827779..99d17ca 100644 --- a/dav_events/apps.py +++ b/dav_events/apps.py @@ -18,6 +18,9 @@ DEFAULT_SETTINGS = ( DefaultSetting('forms_development_init', False), DefaultSetting('form_initials', dict()), DefaultSetting('matrix_config', ImproperlyConfigured), + DefaultSetting('publish_before_begin_days', 10), + DefaultSetting('publish_before_deadline_days', 7), + DefaultSetting('publish_issues', list()), ) diff --git a/dav_events/console_scripts/Resources/django.main.settings-dav_events.py b/dav_events/console_scripts/Resources/django.main.settings-dav_events.py index d14f3eb..08697ee 100644 --- a/dav_events/console_scripts/Resources/django.main.settings-dav_events.py +++ b/dav_events/console_scripts/Resources/django.main.settings-dav_events.py @@ -274,3 +274,29 @@ MATRIX_CONFIG = { 'max_participants': 4, }, } + +# Publishing +# PUBLISH_BEFORE_BEGIN_DAYS = 10 +# PUBLISH_BEFORE_DEADLINE_DAYS = 7 +PUBLISH_ISSUES = [ + { + 'issue': u'Heft 1', + 'release': (31, 1), + 'deadline': (15, 11), + }, + { + 'issue': u'Heft 2', + 'release': (7, 4), + 'deadline': (15, 2), + }, + { + 'issue': u'Heft 3', + 'release': (7, 7), + 'deadline': (15, 5), + }, + { + 'issue': u'Heft 4', + 'release': (7, 10), + 'deadline': (15, 8), + }, +] diff --git a/dav_events/forms/events.py b/dav_events/forms/events.py index ff7e46a..dccba01 100644 --- a/dav_events/forms/events.py +++ b/dav_events/forms/events.py @@ -622,10 +622,10 @@ class RegistrationForm(EventCreateForm): widget=DateWidget(attrs={'id': 'id_deadline_other_widget', 'placeholder': _(u'Kann freigelassen werden'), }, - # usel10n=True, + usel10n=True, options={ - 'format': 'dd.mm.yyyy', - 'weekStart': 1, + # 'format': 'dd.mm.yyyy', + # 'weekStart': 1, 'pickerPosition': 'bottom-left', }, bootstrap_version=3)) @@ -806,3 +806,64 @@ class ChargesForm(EventCreateForm): class SummaryForm(EventCreateForm): _form_title = _(u'Zusammenfassung') + + publish_date = forms.CharField(disabled=True, + initial=_(u'Unverzüglich'), + label=_(u'Voraussichtliche Veröffentlichung'), + ) + + def get_initial_for_field(self, field, field_name): + value = super(SummaryForm, self).get_initial_for_field(field, field_name) + if field_name == 'publish_date': + max_participants = self._session_data.get('max_participants', 0) + if max_participants: + deadline = self._session_data.get('deadline', None) + if deadline == 'OTHER': + deadline = self._session_data.get('deadline_other', None) + else: + deadline_field_name = 'deadline_%s' % deadline + if deadline_field_name in self._session_data: + deadline = self._session_data.get(deadline_field_name) + else: + raise Exception(deadline) + + if deadline: + publish_deadline = deadline - datetime.timedelta(app_config.settings.publish_before_deadline_days) + else: + first_day = self._session_data.get('first_day') + publish_deadline = first_day - datetime.timedelta(app_config.settings.publish_before_begin_days) + + today = datetime.date.today() + + break_outer_loop = False + for year in (today.year, today.year + 1): + for issue in app_config.settings.publish_issues: + if not ('issue' in issue and 'release' in issue and 'deadline' in issue): + continue + issue_name = issue['issue'] + issue_release_day = issue['release'][0] + issue_release_month = issue['release'][1] + issue_deadline_day = issue['deadline'][0] + issue_deadline_month = issue['deadline'][1] + + issue_release_date = datetime.date(year, issue_release_month, issue_release_day) + if issue_release_date < today: + continue + + issue_deadline_date = datetime.date(year, issue_deadline_month, issue_deadline_day) + if issue_deadline_date > issue_release_date: + issue_deadline_date = datetime.date(year - 1, issue_deadline_month, issue_deadline_day) + + if publish_deadline > issue_release_date and today < issue_deadline_date: + value = u'{issue} / {year} - {date}'.format(issue=issue_name, + year=year, + date=format_date(issue_release_date, + 'EEEE, d. MMMM yyyy', + locale=get_language()[0:2])) + break_outer_loop = True + break + + if break_outer_loop: + break + + return value diff --git a/dav_events/templates/dav_events/event_create/SummaryForm.html b/dav_events/templates/dav_events/event_create/SummaryForm.html index f3a625b..5952c3e 100644 --- a/dav_events/templates/dav_events/event_create/SummaryForm.html +++ b/dav_events/templates/dav_events/event_create/SummaryForm.html @@ -4,6 +4,11 @@ {% block form-fields-visible %} {{ event.render_as_html }} +