app/soc/views/models/program.py
changeset 901 d580a057103d
parent 858 e79e7a22326f
child 923 5a10f6db154b
equal deleted inserted replaced
900:0b416bb14970 901:d580a057103d
    23   ]
    23   ]
    24 
    24 
    25 
    25 
    26 from django import forms
    26 from django import forms
    27 
    27 
    28 from soc.logic import cleaning
       
    29 from soc.logic import dicts
    28 from soc.logic import dicts
    30 from soc.logic.models import program as program_logic
    29 from soc.logic.models import program as program_logic
    31 from soc.views import helper
    30 from soc.views import helper
    32 from soc.views.helper import access
    31 from soc.views.helper import access
    33 from soc.views.helper import redirects
    32 from soc.views.helper import redirects
    34 from soc.views.helper import widgets
    33 from soc.views.helper import widgets
    35 from soc.views.models import base
    34 from soc.views.models import presence
    36 from soc.views.models import document as document_view
    35 from soc.views.models import document as document_view
    37 from soc.views.models import sponsor as sponsor_view
    36 from soc.views.models import sponsor as sponsor_view
    38 from soc.views.sitemap import sidebar
    37 from soc.views.sitemap import sidebar
    39 
    38 
    40 import soc.logic.models.program
    39 import soc.logic.models.program
    41 
    40 
    42 
    41 
    43 class View(base.View):
    42 class View(presence.View):
    44   """View methods for the Program model.
    43   """View methods for the Program model.
    45   """
    44   """
    46 
    45 
    47   def __init__(self, params=None):
    46   def __init__(self, params=None):
    48     """Defines the fields and methods required for the base View class
    47     """Defines the fields and methods required for the base View class
    65 
    64 
    66     new_params['name'] = "Program"
    65     new_params['name'] = "Program"
    67 
    66 
    68     new_params['edit_template'] = 'soc/program/edit.html'
    67     new_params['edit_template'] = 'soc/program/edit.html'
    69 
    68 
    70     new_params['extra_dynaexclude'] = ['timeline',
    69     new_params['extra_dynaexclude'] = ['timeline']
    71       # TODO(tlarsen): these need to be enabled once a button to a list
       
    72       #   selection "interstitial" page is implemented, see:
       
    73       #   http://code.google.com/p/soc/issues/detail?id=151
       
    74       'home', 'tos']
       
    75 
    70 
    76     new_params['create_extra_dynafields'] = {
    71     new_params['create_extra_dynafields'] = {
    77         'description': forms.fields.CharField(widget=helper.widgets.TinyMCE(
    72         'description': forms.fields.CharField(widget=helper.widgets.TinyMCE(
    78             attrs={'rows':10, 'cols':40})),
    73             attrs={'rows':10, 'cols':40})),
       
    74 
    79         'scope_path': forms.CharField(widget=forms.HiddenInput, required=True),
    75         'scope_path': forms.CharField(widget=forms.HiddenInput, required=True),
    80         'workflow' : forms.ChoiceField(choices=[('gsoc','Project-based'), 
    76 
       
    77         'workflow' : forms.ChoiceField(choices=[('gsoc','Project-based'),
    81             ('ghop','Task-based')], required=True),
    78             ('ghop','Task-based')], required=True),
    82         'clean_link_id': cleaning.clean_link_id,
       
    83         }
    79         }
    84 
    80 
    85     new_params['edit_extra_dynafields'] = {
    81     new_params['edit_extra_dynafields'] = {
    86         'workflow': forms.CharField(widget=widgets.ReadOnlyInput(),
    82         'workflow': forms.CharField(widget=widgets.ReadOnlyInput(),
    87                                    required=True),
    83                                    required=True),
    99       # there is no existing entity so create a new timeline
    95       # there is no existing entity so create a new timeline
   100       fields['timeline'] = self._createTimelineForType(fields)
    96       fields['timeline'] = self._createTimelineForType(fields)
   101     else:
    97     else:
   102       # use the timeline from the entity
    98       # use the timeline from the entity
   103       fields['timeline'] = entity.timeline
    99       fields['timeline'] = entity.timeline
       
   100 
       
   101     super(View, self)._editPost(request, entity, fields)
   104 
   102 
   105   def _createTimelineForType(self, fields):
   103   def _createTimelineForType(self, fields):
   106     """Creates and stores a timeline model for the given type of program.
   104     """Creates and stores a timeline model for the given type of program.
   107     """
   105     """
   108 
   106