app/soc/views/models/timeline.py
changeset 2810 e63b3e0845a9
parent 2787 8408741aee63
child 2936 75f9c945ed8a
equal deleted inserted replaced
2809:ecc4e534edd3 2810:e63b3e0845a9
    17 """Views for Timeline.
    17 """Views for Timeline.
    18 """
    18 """
    19 
    19 
    20 __authors__ = [
    20 __authors__ = [
    21     '"Sverre Rabbelier" <sverre@rabbelier.nl>',
    21     '"Sverre Rabbelier" <sverre@rabbelier.nl>',
       
    22     '"Lennard de Rijk" <ljvderijk@gmail.com>',
    22     '"Pawel Solyga" <pawel.solyga@gmail.com>',
    23     '"Pawel Solyga" <pawel.solyga@gmail.com>',
    23   ]
    24   ]
    24 
    25 
    25 
    26 
    26 from django import forms
    27 from django import forms
    31 from soc.views.helper import decorators
    32 from soc.views.helper import decorators
    32 from soc.views.helper import dynaform
    33 from soc.views.helper import dynaform
    33 from soc.views.helper import params as params_helper
    34 from soc.views.helper import params as params_helper
    34 from soc.views.models import base
    35 from soc.views.models import base
    35 
    36 
    36 import soc.logic.models.timeline
    37 import gsoc.logic.models.timeline
    37 
    38 
    38 
    39 
    39 class View(base.View):
    40 class View(base.View):
    40   """View methods for the Timeline model.
    41   """View methods for the Timeline model.
    41   """
    42   """
    51     rights = access.Checker(params)
    52     rights = access.Checker(params)
    52     rights['edit'] = ['checkCanEditTimeline']
    53     rights['edit'] = ['checkCanEditTimeline']
    53 
    54 
    54     new_params = {}
    55     new_params = {}
    55     new_params['rights'] = rights
    56     new_params['rights'] = rights
    56     new_params['logic'] = soc.logic.models.timeline.logic
    57     # TODO: Change to basic timeline when GSoC has been moved to module system
       
    58     new_params['logic'] = gsoc.logic.models.timeline.logic
    57     new_params['edit_template'] = 'soc/timeline/edit.html'
    59     new_params['edit_template'] = 'soc/timeline/edit.html'
    58     new_params['name'] = "Timeline"
    60     new_params['name'] = "Timeline"
    59 
    61 
    60     patterns = [(r'^%(url_name)s/(?P<access_type>edit)/%(key_fields)s$',
    62     patterns = [(r'^%(url_name)s/(?P<access_type>edit)/%(key_fields)s$',
    61                   'soc.views.models.%(module_name)s.edit', 
    63                   'soc.views.models.%(module_name)s.edit', 
    70 
    72 
    71     params = dicts.merge(params, new_params)
    73     params = dicts.merge(params, new_params)
    72 
    74 
    73     super(View, self).__init__(params=params)
    75     super(View, self).__init__(params=params)
    74 
    76 
    75     for name, logic_value in program_logic.logic.TIMELINE_LOGIC.iteritems():
       
    76       create_form = params_helper.getCreateForm(self._params, 
       
    77           logic_value.getModel())
       
    78       edit_form = dynaform.extendDynaForm(
       
    79         dynaform = create_form,
       
    80         dynainclude = self._params['edit_dynainclude'],
       
    81         dynaexclude = self._params['edit_dynaexclude'],
       
    82         )
       
    83 
    77 
    84       self._params['edit_form_%s' % name] = edit_form
       
    85 
       
    86   def edit(self, request, access_type,
       
    87            page_name=None, params=None, seed=None, **kwargs):
       
    88     """See base.View.edit.
       
    89     """
       
    90 
       
    91     params = dicts.merge(params, self._params)
       
    92 
       
    93     # TODO(pawel.solyga): If program doesn't exist for timeline display
       
    94     # customized error message without pointing to 'Create Timeline'
       
    95 
       
    96     key_fields = program_logic.logic.getKeyFieldsFromFields(kwargs)
       
    97 
       
    98     program = program_logic.logic.getFromKeyFields(key_fields)
       
    99     if program:
       
   100       workflow = program.workflow
       
   101       params['edit_form'] = params["edit_form_%s" % workflow]
       
   102       params['logic'] = program_logic.logic.TIMELINE_LOGIC[workflow]
       
   103 
       
   104     return super(View, self).edit(request, access_type, page_name=page_name,
       
   105                                   params=params, seed=seed, **kwargs)
       
   106   
       
   107   def _editPost(self, request, entity, fields):
    78   def _editPost(self, request, entity, fields):
   108     """See base.View._editPost().
    79     """See base.View._editPost().
   109     """
    80     """
   110     
    81 
   111     # a timeline can only be edited, so set the scope path using entity
    82     # a timeline can only be edited, so set the scope path using entity
   112     fields['scope_path'] = entity.scope_path
    83     fields['scope_path'] = entity.scope_path
   113 
    84 
   114 
    85 
   115 view = View()
    86 view = View()
   116 
    87 
   117 admin = decorators.view(view.admin)
       
   118 create = decorators.view(view.create)
       
   119 delete = decorators.view(view.delete)
       
   120 edit = decorators.view(view.edit)
    88 edit = decorators.view(view.edit)
   121 list = decorators.view(view.list)
       
   122 public = decorators.view(view.public)
    89 public = decorators.view(view.public)
   123 export = decorators.view(view.export)
       
   124