44 from soc.views.helper import dynaform |
44 from soc.views.helper import dynaform |
45 from soc.views.helper import redirects |
45 from soc.views.helper import redirects |
46 from soc.views.helper import widgets |
46 from soc.views.helper import widgets |
47 from soc.views.models import base |
47 from soc.views.models import base |
48 from soc.views.models import user as user_view |
48 from soc.views.models import user as user_view |
|
49 from soc.views.models import role as role_view |
49 |
50 |
50 import soc.models.user |
51 import soc.models.user |
51 |
52 |
52 |
53 |
53 class View(base.View): |
54 class View(base.View): |
54 """Views for User own profiles. |
55 """Views for User own profiles. |
55 """ |
56 """ |
|
57 |
|
58 DEF_ROLE_LIST_MSG_FMT = ugettext("An overview of your roles as %(name)s.") |
56 |
59 |
57 def __init__(self, params=None): |
60 def __init__(self, params=None): |
58 """Defines the fields and methods required for the base View class |
61 """Defines the fields and methods required for the base View class |
59 to provide the user with list, public, create, edit and delete views. |
62 to provide the user with list, public, create, edit and delete views. |
60 |
63 |
66 rights['unspecified'] = ['deny'] |
69 rights['unspecified'] = ['deny'] |
67 rights['any_access'] = ['allow'] |
70 rights['any_access'] = ['allow'] |
68 rights['create_profile'] = ['checkIsUnusedAccount'] |
71 rights['create_profile'] = ['checkIsUnusedAccount'] |
69 rights['edit_profile'] = ['checkHasUserEntity'] |
72 rights['edit_profile'] = ['checkHasUserEntity'] |
70 rights['roles'] = ['checkIsUser'] |
73 rights['roles'] = ['checkIsUser'] |
|
74 rights['requests'] = ['checkIsUser'] |
71 rights['signIn'] = ['checkNotLoggedIn'] |
75 rights['signIn'] = ['checkNotLoggedIn'] |
72 rights['notification'] = ['checkIsUser'] |
76 rights['notification'] = ['checkIsUser'] |
73 |
77 |
74 new_params = {} |
78 new_params = {} |
75 new_params['rights'] = rights |
79 new_params['rights'] = rights |
103 new_params['sidebar'] = [ |
107 new_params['sidebar'] = [ |
104 (users.create_login_url("/"), 'Sign In', 'signIn'), |
108 (users.create_login_url("/"), 'Sign In', 'signIn'), |
105 ('/' + new_params['url_name'] + '/create_profile', 'Create Profile', 'create_profile'), |
109 ('/' + new_params['url_name'] + '/create_profile', 'Create Profile', 'create_profile'), |
106 ('/' + new_params['url_name'] + '/edit_profile', 'Edit Profile', 'edit_profile'), |
110 ('/' + new_params['url_name'] + '/edit_profile', 'Edit Profile', 'edit_profile'), |
107 ('/' + new_params['url_name'] + '/roles', 'Roles', 'roles'), |
111 ('/' + new_params['url_name'] + '/roles', 'Roles', 'roles'), |
|
112 ('/' + new_params['url_name'] + '/requests', 'Requests', 'requests'), |
108 ] |
113 ] |
109 |
114 |
110 patterns = [] |
115 patterns = [] |
111 |
116 |
112 page_name = ugettext("Create your profile") |
117 page_name = ugettext("Create your profile") |
117 patterns += [(r'^%(url_name)s/(?P<access_type>edit_profile)$', |
122 patterns += [(r'^%(url_name)s/(?P<access_type>edit_profile)$', |
118 'soc.views.models.%(module_name)s.edit', page_name)] |
123 'soc.views.models.%(module_name)s.edit', page_name)] |
119 |
124 |
120 page_name = ugettext("List of your roles") |
125 page_name = ugettext("List of your roles") |
121 patterns += [(r'^%(url_name)s/(?P<access_type>roles)$', |
126 patterns += [(r'^%(url_name)s/(?P<access_type>roles)$', |
|
127 'soc.views.models.user_self.roles', page_name)] |
|
128 |
|
129 page_name = ugettext("List of your requests") |
|
130 patterns += [(r'^%(url_name)s/(?P<access_type>requests)$', |
122 'soc.views.models.request.list_self', page_name)] |
131 'soc.views.models.request.list_self', page_name)] |
123 |
132 |
124 new_params['django_patterns_defaults'] = patterns |
133 new_params['django_patterns_defaults'] = patterns |
125 |
134 |
126 params = dicts.merge(params, new_params) |
135 params = dicts.merge(params, new_params) |
127 |
136 |
128 super(View, self).__init__(params=params) |
137 super(View, self).__init__(params=params) |
129 |
|
130 |
138 |
131 @decorators.merge_params |
139 @decorators.merge_params |
132 @decorators.check_access |
140 @decorators.check_access |
133 def editProfile(self, request, access_type, |
141 def editProfile(self, request, access_type, |
134 page_name=None, params=None, seed=None, **kwargs): |
142 page_name=None, params=None, seed=None, **kwargs): |
145 user_entity = user_logic.getForCurrentAccount() |
153 user_entity = user_logic.getForCurrentAccount() |
146 link_id = user_entity.link_id |
154 link_id = user_entity.link_id |
147 |
155 |
148 return self.edit(request, access_type, |
156 return self.edit(request, access_type, |
149 page_name=page_name, params=params, seed=seed, link_id=link_id, **kwargs) |
157 page_name=page_name, params=params, seed=seed, link_id=link_id, **kwargs) |
150 |
|
151 |
158 |
152 def editGet(self, request, entity, context, seed, params=None): |
159 def editGet(self, request, entity, context, seed, params=None): |
153 """Overwrite so we can add the contents of the ToS. |
160 """Overwrite so we can add the contents of the ToS. |
154 For params see base.View.editGet(). |
161 For params see base.View.editGet(). |
155 """ |
162 """ |
184 site_tos = s_logic.getToS(s_logic.getSingleton()) |
191 site_tos = s_logic.getToS(s_logic.getSingleton()) |
185 if site_tos: |
192 if site_tos: |
186 context['tos_contents'] = site_tos.content |
193 context['tos_contents'] = site_tos.content |
187 |
194 |
188 return super(View, self).editPost(request, entity, context, params=params) |
195 return super(View, self).editPost(request, entity, context, params=params) |
189 |
|
190 |
196 |
191 def _editPost(self, request, entity, fields): |
197 def _editPost(self, request, entity, fields): |
192 """See base.View._editPost(). |
198 """See base.View._editPost(). |
193 """ |
199 """ |
194 |
200 |
211 # set the time of agreement |
217 # set the time of agreement |
212 fields['agreed_to_tos_on'] = datetime.datetime.now() |
218 fields['agreed_to_tos_on'] = datetime.datetime.now() |
213 |
219 |
214 super(View, self)._editPost(request, entity, fields) |
220 super(View, self)._editPost(request, entity, fields) |
215 |
221 |
|
222 @decorators.merge_params |
|
223 @decorators.check_access |
|
224 def roles(self, request, access_type, |
|
225 page_name=None, params=None, **kwargs): |
|
226 """Displays the unhandled requests for this user. |
|
227 |
|
228 Args: |
|
229 request: the standard Django HTTP request object |
|
230 access_type : the name of the access type which should be checked |
|
231 page_name: the page name displayed in templates as page and header title |
|
232 params: a dict with params for this View |
|
233 kwargs: not used |
|
234 """ |
|
235 |
|
236 user = user_logic.getForCurrentAccount() |
|
237 |
|
238 |
|
239 # only select the roles for the current user |
|
240 filter = { |
|
241 'link_id': user.link_id, |
|
242 } |
|
243 |
|
244 contents = [] |
|
245 |
|
246 i = 0 |
|
247 |
|
248 for name, view in sorted(role_view.ROLE_VIEWS.iteritems()): |
|
249 params = view.getParams().copy() |
|
250 params['list_action'] = (redirects.getEditRedirect, params) |
|
251 params['list_description'] = self.DEF_ROLE_LIST_MSG_FMT % params |
|
252 |
|
253 list = helper.lists.getListContent(request, params, filter, i) |
|
254 contents.append(list) |
|
255 i += 1 |
|
256 |
|
257 return self._list(request, params, contents, page_name) |
216 |
258 |
217 def getSidebarMenus(self, id, user, params=None): |
259 def getSidebarMenus(self, id, user, params=None): |
218 """See base.View.getSidebarMenus(). |
260 """See base.View.getSidebarMenus(). |
219 """ |
261 """ |
220 |
262 |