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 |