FIX: fixed several deadline issues.

This commit is contained in:
2018-12-20 15:32:13 +01:00
parent 06a42fca18
commit 188589c8b0
2 changed files with 65 additions and 56 deletions

View File

@@ -13,6 +13,7 @@ from datetimewidget.widgets import DateWidget, TimeWidget, DateTimeWidget
from .. import choices
from .. import config
from .. import models
from ..workflow import workflow
from .generic import ChainedForm, ModelMixin
app_config = apps.get_containing_app_config(__package__)
@@ -676,35 +677,38 @@ class RegistrationForm(EventCreateForm):
if trainer_3:
n_trainer += 1
value = n_trainer * matrix_config[field_name]
elif field_name == 'deadline_month':
first_day = self._session_data.get('first_day')
m = first_day.month - 1 - 1
y = first_day.year + m / 12
m = m % 12 + 1
d = min(first_day.day, calendar.monthrange(y, m)[1])
date = datetime.date(y, m, d)
value = date.isoformat()
elif field_name == 'deadline_quarter':
first_day = self._session_data.get('first_day')
m = first_day.month - 1 - 3
y = first_day.year + m / 12
m = m % 12 + 1
d = min(first_day.day, calendar.monthrange(y, m)[1])
date = datetime.date(y, m, d)
value = date.isoformat()
return value
def proceed_session_data(self, session_data):
super(RegistrationForm, self).proceed_session_data(session_data)
first_day = session_data.get('first_day', None)
if first_day:
new_choices = []
for key, desc in self.fields['deadline'].choices:
if key == 'month':
m = first_day.month - 1 - 1
y = first_day.year + m / 12
m = m % 12 + 1
d = min(first_day.day, calendar.monthrange(y, m)[1])
date = datetime.date(y, m, d)
desc += u' ({})'.format(format_date(date, 'EEEE, d. MMMM yyyy', locale=get_language()[0:2]))
self.fields['deadline_month'].initial = date.isoformat()
elif key == 'quarter':
m = first_day.month - 1 - 3
y = first_day.year + m / 12
m = m % 12 + 1
d = min(first_day.day, calendar.monthrange(y, m)[1])
date = datetime.date(y, m, d)
desc += u' ({})'.format(format_date(date, 'EEEE, d. MMMM yyyy', locale=get_language()[0:2]))
self.fields['deadline_quarter'].initial = date.isoformat()
new_choices.append((key, desc))
self.fields['deadline'].choices = new_choices
new_choices = []
for key, desc in self.fields['deadline'].choices:
field_name = 'deadline_%s' % key
if field_name in self.fields:
date_str = self.get_initial_for_field(self.fields[field_name], field_name)
datetime_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')
date = datetime_obj.date()
desc += u' ({})'.format(format_date(date, 'EEEE, d. MMMM yyyy', locale=get_language()[0:2]))
new_choices.append((key, desc))
self.fields['deadline'].choices = new_choices
class ChargesForm(EventCreateForm):
@@ -950,34 +954,8 @@ class SummaryForm(EventCreateForm):
logger.error('SummaryForm.proceed_session_data(): invalid value for deadline.')
deadline = None
if deadline:
publication_deadline = deadline - datetime.timedelta(app_config.settings.publish_before_deadline_days)
else:
first_day = self._session_data.get('first_day')
publication_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):
logger.error('SummaryForm.proceed_session_data(): invalid configured issue.')
continue
issue_release = datetime.date(year, issue['release'][1], issue['release'][0])
if issue_release < today:
continue
issue_deadline = datetime.date(year, issue['deadline'][1], issue['deadline'][0])
if issue_deadline > issue_release:
issue_deadline = datetime.date(year - 1, issue['deadline'][1], issue['deadline'][0])
if publication_deadline > issue_release and today < issue_deadline:
self.fields['planned_publication_date'].initial = issue_release
self.fields['planned_publication_issue'].initial = u'%s/%s' % (issue['issue'], year)
break_outer_loop = True
break
if break_outer_loop:
break
first_day = self._session_data.get('first_day')
issue_date, issue = workflow.plan_publication(first_day, deadline)
if issue_date:
self.fields['planned_publication_date'].initial = issue_date
self.fields['planned_publication_issue'].initial = issue