28 from django.utils.translation import ugettext_lazy |
28 from django.utils.translation import ugettext_lazy |
29 |
29 |
30 from soc.logic import cleaning |
30 from soc.logic import cleaning |
31 from soc.logic import dicts |
31 from soc.logic import dicts |
32 from soc.logic.models import sponsor as sponsor_logic |
32 from soc.logic.models import sponsor as sponsor_logic |
|
33 from soc.logic.models import document as document_logic |
33 from soc.views import helper |
34 from soc.views import helper |
|
35 from soc.views.helper import access |
34 from soc.views.helper import redirects |
36 from soc.views.helper import redirects |
35 from soc.views.models import base |
37 from soc.views.models import base |
36 from soc.views.models import sponsor as sponsor_view |
38 from soc.views.models import sponsor as sponsor_view |
|
39 from soc.views.models import document as document_view |
37 |
40 |
38 import soc.logic.models.program |
41 import soc.logic.models.program |
39 |
42 |
40 |
43 |
41 class View(base.View): |
44 class View(base.View): |
46 """Defines the fields and methods required for the base View class |
49 """Defines the fields and methods required for the base View class |
47 to provide the user with list, public, create, edit and delete views. |
50 to provide the user with list, public, create, edit and delete views. |
48 |
51 |
49 Params: |
52 Params: |
50 params: a dict with params for this View |
53 params: a dict with params for this View |
51 """ |
54 """ |
|
55 |
|
56 rights = {} |
|
57 rights['any_access'] = [access.allow] |
|
58 rights['public'] = [access.allow] |
52 |
59 |
53 new_params = {} |
60 new_params = {} |
54 new_params['logic'] = soc.logic.models.program.logic |
61 new_params['logic'] = soc.logic.models.program.logic |
|
62 new_params['rights'] = rights |
55 |
63 |
56 new_params['scope_view'] = sponsor_view |
64 new_params['scope_view'] = sponsor_view |
57 new_params['scope_redirect'] = redirects.getCreateRedirect |
65 new_params['scope_redirect'] = redirects.getCreateRedirect |
58 |
66 |
59 new_params['name'] = "Program" |
67 new_params['name'] = "Program" |
72 |
80 |
73 params = dicts.merge(params, new_params) |
81 params = dicts.merge(params, new_params) |
74 |
82 |
75 super(View, self).__init__(params=params) |
83 super(View, self).__init__(params=params) |
76 |
84 |
|
85 def _getItemsForProgram(self, entity, params): |
|
86 """Returns the menu items for one specifc program |
|
87 |
|
88 Args: |
|
89 entity: the program for which the entry should be constructed |
|
90 params: a dict with params for this View. |
|
91 """ |
|
92 |
|
93 filter = { |
|
94 'scope_path': entity.key().name(), |
|
95 'is_featured': True, |
|
96 } |
|
97 |
|
98 doc_params = document_view.view.getParams() |
|
99 entities = document_logic.logic.getForFields(filter) |
|
100 |
|
101 submenus = [] |
|
102 |
|
103 # add a link to the home page |
|
104 submenu = {} |
|
105 submenu['title'] = "Home" |
|
106 submenu['url'] = redirects.getPublicRedirect(entity, params) |
|
107 submenus.append(submenu) |
|
108 |
|
109 # add a link to all featured documents |
|
110 for entity in entities: |
|
111 submenu = {} |
|
112 submenu['title'] = entity.short_name |
|
113 submenu['url'] = redirects.getPublicRedirect(entity, doc_params) |
|
114 submenus.append(submenu) |
|
115 |
|
116 return submenus |
|
117 |
|
118 def getExtraMenus(self, request, params=None): |
|
119 """Returns the extra menu's for this view. |
|
120 |
|
121 A menu item is generated for each program that is currently |
|
122 running. The public page for each program is added as menu item, |
|
123 as well as all public documents for that program. |
|
124 |
|
125 Args: |
|
126 request: unused |
|
127 params: a dict with params for this View. |
|
128 """ |
|
129 |
|
130 params = dicts.merge(params, self._params) |
|
131 logic = params['logic'] |
|
132 |
|
133 entities = logic.getForLimitAndOffset(1000) |
|
134 |
|
135 menus = [] |
|
136 |
|
137 for entity in entities: |
|
138 menu = {} |
|
139 menu['heading'] = entity.short_name |
|
140 menu['items'] = self._getItemsForProgram(entity, params) |
|
141 menus.append(menu) |
|
142 |
|
143 return menus |
77 |
144 |
78 view = View() |
145 view = View() |
79 |
146 |
80 create = view.create |
147 create = view.create |
81 delete = view.delete |
148 delete = view.delete |