app/soc/views/models/program.py
changeset 769 a0ee643fe832
parent 755 1ed041c0cdc6
child 770 eb2e69312953
--- a/app/soc/views/models/program.py	Tue Jan 06 17:26:06 2009 +0000
+++ b/app/soc/views/models/program.py	Tue Jan 06 20:56:48 2009 +0000
@@ -19,6 +19,7 @@
 
 __authors__ = [
     '"Sverre Rabbelier" <sverre@rabbelier.nl>',
+    '"Lennard de Rijk" <ljvderijk@gmail.com>',
   ]
 
 
@@ -26,6 +27,7 @@
 
 from soc.logic import cleaning
 from soc.logic import dicts
+from soc.logic.models import timeline as timeline_logic
 from soc.views import helper
 from soc.views.helper import access
 from soc.views.helper import redirects
@@ -34,6 +36,9 @@
 from soc.views.models import sponsor as sponsor_view
 from soc.views.sitemap import sidebar
 
+import gsoc.models.timeline
+import soc.models.timeline
+
 import soc.logic.models.program
 
 
@@ -66,17 +71,34 @@
     new_params['url_name'] = "program"
     new_params['module_name'] = "program"
 
-    new_params['extra_dynaexclude'] = ['home']
+    new_params['extra_dynaexclude'] = ['home', 'timeline']
     new_params['create_extra_dynafields'] = {
         'description': forms.fields.CharField(widget=helper.widgets.TinyMCE(
             attrs={'rows':10, 'cols':40})),
         'scope_path': forms.CharField(widget=forms.HiddenInput, required=True),
+        'workflow' : forms.ChoiceField(choices=[('gsoc','Project-based'), 
+            ('ghop','Task-based')], required=True),
         'clean_link_id': cleaning.clean_link_id,
         }
 
     params = dicts.merge(params, new_params)
 
     super(View, self).__init__(params=params)
+  
+  def _editPost(self, request, entity, fields):
+    """See base._editPost().
+    """
+    
+    fields['timeline'] = self._createTimelineForType(fields['workflow'])
+    
+  def _createTimelineForType(self, type):
+    """Creates and stores a timeline model for the given type of program
+    """
+    
+    timelines = {'gsoc' : gsoc.models.timeline.Timeline(),
+                 'ghop' : soc.models.timeline.Timeline()}
+        
+    return timelines[type].put()
 
   def getExtraMenus(self, request, params=None):
     """Returns the extra menu's for this view.