app/soc/views/models/timeline.py
changeset 949 07fdadbd6dc7
parent 858 e79e7a22326f
child 1108 64acc3c02ad1
equal deleted inserted replaced
948:bd956f419ad9 949:07fdadbd6dc7
    25 
    25 
    26 from google.appengine.ext import db
    26 from google.appengine.ext import db
    27 
    27 
    28 from django import forms
    28 from django import forms
    29 
    29 
    30 from gsoc.models import timeline
       
    31 from soc.logic import dicts
    30 from soc.logic import dicts
    32 from soc.logic.models import program as program_logic
    31 from soc.logic.models import program as program_logic
       
    32 from soc.views.helper import dynaform
    33 from soc.views.helper import params as params_helper
    33 from soc.views.helper import params as params_helper
    34 from soc.views.models import base
    34 from soc.views.models import base
    35 
    35 
    36 import soc.logic.models.timeline
    36 import soc.logic.models.timeline
    37 
    37 
    59 
    59 
    60     new_params['django_patterns_defaults'] = patterns
    60     new_params['django_patterns_defaults'] = patterns
    61 
    61 
    62     new_params['edit_dynafields'] = []
    62     new_params['edit_dynafields'] = []
    63 
    63 
    64     timeline_properties = timeline.Timeline.properties()
       
    65     form_fields = {}
       
    66     
       
    67     # add class 'datetime-pick' for each DateTimeField
       
    68     # this is used with datetimepicker js widget
       
    69     for key, value in timeline_properties.iteritems():
       
    70       if isinstance(value, db.DateTimeProperty):
       
    71         form_fields[key] = forms.DateTimeField(required=False,
       
    72           widget=forms.TextInput(attrs={'class':'datetime-pick'}))
       
    73     
       
    74     new_params['create_extra_dynafields'] = form_fields
       
    75 
       
    76     params = dicts.merge(params, new_params)
    64     params = dicts.merge(params, new_params)
    77 
    65 
    78     super(View, self).__init__(params=params)
    66     super(View, self).__init__(params=params)
    79 
    67 
    80     for name, value in program_logic.logic.TIMELINE_LOGIC.iteritems():
    68     for name, logic_value in program_logic.logic.TIMELINE_LOGIC.iteritems():
    81       create_form = params_helper.getCreateForm(self._params, value.getModel())
    69       fields = {}
    82       edit_form = params_helper.getEditForm(self._params, create_form)
    70       
       
    71       # add class 'datetime-pick' for each DateTimeField
       
    72       # this is used with datetimepicker js widget
       
    73       for prop_key, prop_value in logic_value.getModel().properties().iteritems():
       
    74         if isinstance(prop_value, db.DateTimeProperty):
       
    75           fields[prop_key] = forms.DateTimeField(required=False,
       
    76             widget=forms.TextInput(attrs={'class':'datetime-pick'}))
       
    77       
       
    78       create_form = params_helper.getCreateForm(self._params, logic_value.getModel())
       
    79       edit_form = dynaform.extendDynaForm(
       
    80         dynaform = create_form,
       
    81         dynainclude = self._params['edit_dynainclude'],
       
    82         dynaexclude = self._params['edit_dynaexclude'],
       
    83         dynafields = fields,
       
    84         )
       
    85         
    83       self._params['edit_form_%s' % name] = edit_form
    86       self._params['edit_form_%s' % name] = edit_form
    84 
    87 
    85   def edit(self, request, access_type,
    88   def edit(self, request, access_type,
    86            page_name=None, params=None, seed=None, **kwargs):
    89            page_name=None, params=None, seed=None, **kwargs):
    87     """See base.View.edit.
    90     """See base.View.edit.
    88     """
    91     """
    89 
       
    90     params = dicts.merge(params, self._params)
    92     params = dicts.merge(params, self._params)
    91 
    93     
       
    94     # TODO(pawel.solyga): If program doesn't exist for timeline display
       
    95     # customized error message without pointing to 'Create Timeline'
       
    96     
    92     program = program_logic.logic.getFromKeyName(kwargs['scope_path'])
    97     program = program_logic.logic.getFromKeyName(kwargs['scope_path'])
    93     params['edit_form'] = params["edit_form_%s" % program.workflow]
    98     if program:
       
    99       params['edit_form'] = params["edit_form_%s" % program.workflow]
    94 
   100 
    95     return super(View, self).edit(request, access_type, page_name=page_name,
   101     return super(View, self).edit(request, access_type, page_name=page_name,
    96                                   params=params, seed=seed, **kwargs)
   102                                   params=params, seed=seed, **kwargs)
    97   
   103   
    98   def _editPost(self, request, entity, fields):
   104   def _editPost(self, request, entity, fields):