More work on planned publish date and internal note. improved event
detail page and some form code.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user