FIX: fixed several deadline issues.
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user