Check if timeline exists and when somebody tries to edit non existing timelime display error message. Add TODO regarding error message customization for Timeline. Add support for calendar widget in timeline for both gsoc and ghop programs (gsoc was hardcoded before).
Patch by: Pawel Solyga
Review by: to-be-reviewed
--- a/app/soc/views/models/timeline.py Sat Jan 24 11:04:15 2009 +0000
+++ b/app/soc/views/models/timeline.py Sat Jan 24 11:07:16 2009 +0000
@@ -27,9 +27,9 @@
from django import forms
-from gsoc.models import timeline
from soc.logic import dicts
from soc.logic.models import program as program_logic
+from soc.views.helper import dynaform
from soc.views.helper import params as params_helper
from soc.views.models import base
@@ -61,36 +61,42 @@
new_params['edit_dynafields'] = []
- timeline_properties = timeline.Timeline.properties()
- form_fields = {}
-
- # add class 'datetime-pick' for each DateTimeField
- # this is used with datetimepicker js widget
- for key, value in timeline_properties.iteritems():
- if isinstance(value, db.DateTimeProperty):
- form_fields[key] = forms.DateTimeField(required=False,
- widget=forms.TextInput(attrs={'class':'datetime-pick'}))
-
- new_params['create_extra_dynafields'] = form_fields
-
params = dicts.merge(params, new_params)
super(View, self).__init__(params=params)
- for name, value in program_logic.logic.TIMELINE_LOGIC.iteritems():
- create_form = params_helper.getCreateForm(self._params, value.getModel())
- edit_form = params_helper.getEditForm(self._params, create_form)
+ for name, logic_value in program_logic.logic.TIMELINE_LOGIC.iteritems():
+ fields = {}
+
+ # add class 'datetime-pick' for each DateTimeField
+ # this is used with datetimepicker js widget
+ for prop_key, prop_value in logic_value.getModel().properties().iteritems():
+ if isinstance(prop_value, db.DateTimeProperty):
+ fields[prop_key] = forms.DateTimeField(required=False,
+ widget=forms.TextInput(attrs={'class':'datetime-pick'}))
+
+ create_form = params_helper.getCreateForm(self._params, logic_value.getModel())
+ edit_form = dynaform.extendDynaForm(
+ dynaform = create_form,
+ dynainclude = self._params['edit_dynainclude'],
+ dynaexclude = self._params['edit_dynaexclude'],
+ dynafields = fields,
+ )
+
self._params['edit_form_%s' % name] = edit_form
def edit(self, request, access_type,
page_name=None, params=None, seed=None, **kwargs):
"""See base.View.edit.
"""
-
params = dicts.merge(params, self._params)
-
+
+ # TODO(pawel.solyga): If program doesn't exist for timeline display
+ # customized error message without pointing to 'Create Timeline'
+
program = program_logic.logic.getFromKeyName(kwargs['scope_path'])
- params['edit_form'] = params["edit_form_%s" % program.workflow]
+ if program:
+ params['edit_form'] = params["edit_form_%s" % program.workflow]
return super(View, self).edit(request, access_type, page_name=page_name,
params=params, seed=seed, **kwargs)