31 from soc.views.helper import decorators |
32 from soc.views.helper import decorators |
32 from soc.views.helper import dynaform |
33 from soc.views.helper import dynaform |
33 from soc.views.helper import params as params_helper |
34 from soc.views.helper import params as params_helper |
34 from soc.views.models import base |
35 from soc.views.models import base |
35 |
36 |
36 import soc.logic.models.timeline |
37 import gsoc.logic.models.timeline |
37 |
38 |
38 |
39 |
39 class View(base.View): |
40 class View(base.View): |
40 """View methods for the Timeline model. |
41 """View methods for the Timeline model. |
41 """ |
42 """ |
51 rights = access.Checker(params) |
52 rights = access.Checker(params) |
52 rights['edit'] = ['checkCanEditTimeline'] |
53 rights['edit'] = ['checkCanEditTimeline'] |
53 |
54 |
54 new_params = {} |
55 new_params = {} |
55 new_params['rights'] = rights |
56 new_params['rights'] = rights |
56 new_params['logic'] = soc.logic.models.timeline.logic |
57 # TODO: Change to basic timeline when GSoC has been moved to module system |
|
58 new_params['logic'] = gsoc.logic.models.timeline.logic |
57 new_params['edit_template'] = 'soc/timeline/edit.html' |
59 new_params['edit_template'] = 'soc/timeline/edit.html' |
58 new_params['name'] = "Timeline" |
60 new_params['name'] = "Timeline" |
59 |
61 |
60 patterns = [(r'^%(url_name)s/(?P<access_type>edit)/%(key_fields)s$', |
62 patterns = [(r'^%(url_name)s/(?P<access_type>edit)/%(key_fields)s$', |
61 'soc.views.models.%(module_name)s.edit', |
63 'soc.views.models.%(module_name)s.edit', |
70 |
72 |
71 params = dicts.merge(params, new_params) |
73 params = dicts.merge(params, new_params) |
72 |
74 |
73 super(View, self).__init__(params=params) |
75 super(View, self).__init__(params=params) |
74 |
76 |
75 for name, logic_value in program_logic.logic.TIMELINE_LOGIC.iteritems(): |
|
76 create_form = params_helper.getCreateForm(self._params, |
|
77 logic_value.getModel()) |
|
78 edit_form = dynaform.extendDynaForm( |
|
79 dynaform = create_form, |
|
80 dynainclude = self._params['edit_dynainclude'], |
|
81 dynaexclude = self._params['edit_dynaexclude'], |
|
82 ) |
|
83 |
77 |
84 self._params['edit_form_%s' % name] = edit_form |
|
85 |
|
86 def edit(self, request, access_type, |
|
87 page_name=None, params=None, seed=None, **kwargs): |
|
88 """See base.View.edit. |
|
89 """ |
|
90 |
|
91 params = dicts.merge(params, self._params) |
|
92 |
|
93 # TODO(pawel.solyga): If program doesn't exist for timeline display |
|
94 # customized error message without pointing to 'Create Timeline' |
|
95 |
|
96 key_fields = program_logic.logic.getKeyFieldsFromFields(kwargs) |
|
97 |
|
98 program = program_logic.logic.getFromKeyFields(key_fields) |
|
99 if program: |
|
100 workflow = program.workflow |
|
101 params['edit_form'] = params["edit_form_%s" % workflow] |
|
102 params['logic'] = program_logic.logic.TIMELINE_LOGIC[workflow] |
|
103 |
|
104 return super(View, self).edit(request, access_type, page_name=page_name, |
|
105 params=params, seed=seed, **kwargs) |
|
106 |
|
107 def _editPost(self, request, entity, fields): |
78 def _editPost(self, request, entity, fields): |
108 """See base.View._editPost(). |
79 """See base.View._editPost(). |
109 """ |
80 """ |
110 |
81 |
111 # a timeline can only be edited, so set the scope path using entity |
82 # a timeline can only be edited, so set the scope path using entity |
112 fields['scope_path'] = entity.scope_path |
83 fields['scope_path'] = entity.scope_path |
113 |
84 |
114 |
85 |
115 view = View() |
86 view = View() |
116 |
87 |
117 admin = decorators.view(view.admin) |
|
118 create = decorators.view(view.create) |
|
119 delete = decorators.view(view.delete) |
|
120 edit = decorators.view(view.edit) |
88 edit = decorators.view(view.edit) |
121 list = decorators.view(view.list) |
|
122 public = decorators.view(view.public) |
89 public = decorators.view(view.public) |
123 export = decorators.view(view.export) |
|
124 |
|