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 |