More work on planned publish date and internal note. improved event

detail page and some form code.
This commit is contained in:
2018-02-25 20:30:52 +01:00
parent e669d5b55b
commit 11a5e3c0c8
6 changed files with 167 additions and 100 deletions

View File

@@ -648,25 +648,29 @@ class RegistrationForm(EventCreateForm):
widget=forms.Textarea(attrs={'rows': 2}),
)
def get_initial_for_field(self, field, field_name):
value = super(RegistrationForm, self).get_initial_for_field(field, field_name)
if field_name == 'registration_howto':
trainer_fullname = u'%s %s' % (self._session_data.get('trainer_firstname'),
self._session_data.get('trainer_familyname'))
value = value % {'name': trainer_fullname, 'emailaddr': self._session_data.get('trainer_email')}
elif field_name in ('min_participants', 'max_participants'):
trainer_2 = bool(self._session_data.get('trainer_2_fullname', False))
trainer_3 = bool(self._session_data.get('trainer_3_fullname', False))
matrix_key, matrix_config = self._get_matrix_config(self._session_data)
n_trainer = 1
if trainer_2:
n_trainer += 1
if trainer_3:
n_trainer += 1
value = n_trainer * matrix_config[field_name]
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)
trainer_fullname = u'%s %s' % (session_data.get('trainer_firstname'), session_data.get('trainer_familyname'))
trainer_email = session_data.get('trainer_email')
trainer_2_fullname = session_data.get('trainer_2_fullname', None)
trainer_3_fullname = session_data.get('trainer_3_fullname', None)
matrix_key, matrix_config = self._get_matrix_config(session_data)
n_trainer = 1
if trainer_2_fullname:
n_trainer += 1
if trainer_3_fullname:
n_trainer += 1
self.fields['min_participants'].initial = matrix_config['min_participants'] * n_trainer
self.fields['max_participants'].initial = matrix_config['max_participants'] * n_trainer
if first_day:
new_choices = []
@@ -690,13 +694,6 @@ class RegistrationForm(EventCreateForm):
new_choices.append((key, desc))
self.fields['deadline'].choices = new_choices
if self.fields['registration_howto'].initial:
initial = self.fields['registration_howto'].initial % {'name': trainer_fullname,
'emailaddr': trainer_email}
self.fields['registration_howto'].initial = initial
else:
self.fields['registration_howto'].widget = forms.HiddenInput()
class ChargesForm(EventCreateForm):
_form_title = _(u'Kosten')
@@ -818,63 +815,59 @@ 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'),
)
planned_publish_date = forms.DateField(required=False,
label=_(u'Voraussichtliche Veröffentlichung'),
widget=forms.HiddenInput())
planned_publish_issue = forms.CharField(required=False)
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)
internal_note = forms.CharField(required=False,
label=_(u'Bearbeitungshinweis'),
help_text=_(u'Hier kannst du einen Hinweis'
u' für Tourenreferenten und Redakteure eingeben.'),
widget=forms.Textarea(attrs={'rows': 5}))
def _proceed_session_data(self, session_data):
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:
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)
logger.error('SummaryForm._proceed_session_data(): invalid value for deadline.')
deadline = None
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)
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()
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]
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_date = datetime.date(year, issue_release_month, issue_release_day)
if issue_release_date < today:
continue
issue_release = datetime.date(year, issue['release'][1], issue['release'][0])
if issue_release < 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)
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 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:
if publish_deadline > issue_release and today < issue_deadline:
self.fields['planned_publish_date'].initial = issue_release
self.fields['planned_publish_issue'].initial = u'%s/%s' % (issue['issue'], year)
break_outer_loop = True
break
return value
if break_outer_loop:
break