app/soc/views/models/program.py
changeset 769 a0ee643fe832
parent 755 1ed041c0cdc6
child 770 eb2e69312953
equal deleted inserted replaced
768:002d3141ff99 769:a0ee643fe832
    17 """Views for Programs.
    17 """Views for Programs.
    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   ]
    23   ]
    23 
    24 
    24 
    25 
    25 from django import forms
    26 from django import forms
    26 
    27 
    27 from soc.logic import cleaning
    28 from soc.logic import cleaning
    28 from soc.logic import dicts
    29 from soc.logic import dicts
       
    30 from soc.logic.models import timeline as timeline_logic
    29 from soc.views import helper
    31 from soc.views import helper
    30 from soc.views.helper import access
    32 from soc.views.helper import access
    31 from soc.views.helper import redirects
    33 from soc.views.helper import redirects
    32 from soc.views.models import base
    34 from soc.views.models import base
    33 from soc.views.models import document as document_view
    35 from soc.views.models import document as document_view
    34 from soc.views.models import sponsor as sponsor_view
    36 from soc.views.models import sponsor as sponsor_view
    35 from soc.views.sitemap import sidebar
    37 from soc.views.sitemap import sidebar
       
    38 
       
    39 import gsoc.models.timeline
       
    40 import soc.models.timeline
    36 
    41 
    37 import soc.logic.models.program
    42 import soc.logic.models.program
    38 
    43 
    39 
    44 
    40 class View(base.View):
    45 class View(base.View):
    64     new_params['name_short'] = "Program"
    69     new_params['name_short'] = "Program"
    65     new_params['name_plural'] = "Programs"
    70     new_params['name_plural'] = "Programs"
    66     new_params['url_name'] = "program"
    71     new_params['url_name'] = "program"
    67     new_params['module_name'] = "program"
    72     new_params['module_name'] = "program"
    68 
    73 
    69     new_params['extra_dynaexclude'] = ['home']
    74     new_params['extra_dynaexclude'] = ['home', 'timeline']
    70     new_params['create_extra_dynafields'] = {
    75     new_params['create_extra_dynafields'] = {
    71         'description': forms.fields.CharField(widget=helper.widgets.TinyMCE(
    76         'description': forms.fields.CharField(widget=helper.widgets.TinyMCE(
    72             attrs={'rows':10, 'cols':40})),
    77             attrs={'rows':10, 'cols':40})),
    73         'scope_path': forms.CharField(widget=forms.HiddenInput, required=True),
    78         'scope_path': forms.CharField(widget=forms.HiddenInput, required=True),
       
    79         'workflow' : forms.ChoiceField(choices=[('gsoc','Project-based'), 
       
    80             ('ghop','Task-based')], required=True),
    74         'clean_link_id': cleaning.clean_link_id,
    81         'clean_link_id': cleaning.clean_link_id,
    75         }
    82         }
    76 
    83 
    77     params = dicts.merge(params, new_params)
    84     params = dicts.merge(params, new_params)
    78 
    85 
    79     super(View, self).__init__(params=params)
    86     super(View, self).__init__(params=params)
       
    87   
       
    88   def _editPost(self, request, entity, fields):
       
    89     """See base._editPost().
       
    90     """
       
    91     
       
    92     fields['timeline'] = self._createTimelineForType(fields['workflow'])
       
    93     
       
    94   def _createTimelineForType(self, type):
       
    95     """Creates and stores a timeline model for the given type of program
       
    96     """
       
    97     
       
    98     timelines = {'gsoc' : gsoc.models.timeline.Timeline(),
       
    99                  'ghop' : soc.models.timeline.Timeline()}
       
   100         
       
   101     return timelines[type].put()
    80 
   102 
    81   def getExtraMenus(self, request, params=None):
   103   def getExtraMenus(self, request, params=None):
    82     """Returns the extra menu's for this view.
   104     """Returns the extra menu's for this view.
    83 
   105 
    84     A menu item is generated for each program that is currently
   106     A menu item is generated for each program that is currently