Preparation for publishing date.

This commit is contained in:
2018-02-25 01:48:02 +01:00
parent 890e837e8f
commit f2af2c28cf
4 changed files with 98 additions and 3 deletions

View File

@@ -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()),
)

View File

@@ -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),
},
]

View File

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

View File

@@ -4,6 +4,11 @@
{% block form-fields-visible %}
{{ event.render_as_html }}
<div class="row">
<div class="col-sm-12">
{% bootstrap_field form.publish_date %}
</div>
</div>
{% endblock form-fields-visible %}
{% block form-buttons %}
{% buttons %}