27 import datetime |
27 import datetime |
28 |
28 |
29 from google.appengine.api import users |
29 from google.appengine.api import users |
30 |
30 |
31 from django import forms |
31 from django import forms |
32 from django import http |
|
33 from django.utils.encoding import force_unicode |
32 from django.utils.encoding import force_unicode |
34 from django.utils.safestring import mark_safe |
33 from django.utils.safestring import mark_safe |
35 from django.utils.translation import ugettext |
34 from django.utils.translation import ugettext |
36 |
35 |
37 from soc.logic import cleaning |
36 from soc.logic import cleaning |
40 from soc.logic.models.user import logic as user_logic |
39 from soc.logic.models.user import logic as user_logic |
41 from soc.logic.models.site import logic as site_logic |
40 from soc.logic.models.site import logic as site_logic |
42 from soc.views import helper |
41 from soc.views import helper |
43 from soc.views.helper import access |
42 from soc.views.helper import access |
44 from soc.views.helper import decorators |
43 from soc.views.helper import decorators |
45 from soc.views.helper import dynaform |
|
46 from soc.views.helper import redirects |
44 from soc.views.helper import redirects |
47 from soc.views.helper import widgets |
45 from soc.views.helper import widgets |
48 from soc.views.models import base |
46 from soc.views.models import base |
49 from soc.views.models import user as user_view |
|
50 from soc.views.models import role as role_view |
47 from soc.views.models import role as role_view |
51 |
|
52 import soc.models.user |
|
53 |
48 |
54 |
49 |
55 class View(base.View): |
50 class View(base.View): |
56 """Views for User own profiles. |
51 """Views for User own profiles. |
57 """ |
52 """ |
106 } |
101 } |
107 |
102 |
108 new_params['sidebar_heading'] = 'User (self)' |
103 new_params['sidebar_heading'] = 'User (self)' |
109 new_params['sidebar'] = [ |
104 new_params['sidebar'] = [ |
110 (users.create_login_url("/"), 'Sign In', 'signIn'), |
105 (users.create_login_url("/"), 'Sign In', 'signIn'), |
111 ('/' + new_params['url_name'] + '/create_profile', 'Create Profile', 'create_profile'), |
106 ('/' + new_params['url_name'] + '/create_profile', |
112 ('/' + new_params['url_name'] + '/edit_profile', 'Edit Profile', 'edit_profile'), |
107 'Create Profile', 'create_profile'), |
|
108 ('/' + new_params['url_name'] + '/edit_profile', |
|
109 'Edit Profile', 'edit_profile'), |
113 ('/' + new_params['url_name'] + '/roles', 'Roles', 'roles'), |
110 ('/' + new_params['url_name'] + '/roles', 'Roles', 'roles'), |
114 ('/' + new_params['url_name'] + '/requests', 'Requests', 'requests'), |
111 ('/' + new_params['url_name'] + '/requests', 'Requests', 'requests'), |
115 ] |
112 ] |
116 |
113 |
117 patterns = [] |
114 patterns = [] |
153 |
150 |
154 # set the link_id to the current user's link_id |
151 # set the link_id to the current user's link_id |
155 user_entity = user_logic.getForCurrentAccount() |
152 user_entity = user_logic.getForCurrentAccount() |
156 link_id = user_entity.link_id |
153 link_id = user_entity.link_id |
157 |
154 |
158 return self.edit(request, access_type, |
155 return self.edit(request, access_type, page_name=page_name, |
159 page_name=page_name, params=params, seed=seed, link_id=link_id, **kwargs) |
156 params=params, seed=seed, link_id=link_id, **kwargs) |
160 |
157 |
161 def editGet(self, request, entity, context, seed, params=None): |
158 def editGet(self, request, entity, context, seed, params=None): |
162 """Overwrite so we can add the contents of the ToS. |
159 """Overwrite so we can add the contents of the ToS. |
163 For params see base.View.editGet(). |
160 For params see base.View.editGet(). |
164 """ |
161 """ |
166 s_logic = model_logic.site.logic |
163 s_logic = model_logic.site.logic |
167 site_tos = s_logic.getToS(s_logic.getSingleton()) |
164 site_tos = s_logic.getToS(s_logic.getSingleton()) |
168 if site_tos: |
165 if site_tos: |
169 context['tos_contents'] = site_tos.content |
166 context['tos_contents'] = site_tos.content |
170 |
167 |
171 return super(View, self).editGet(request, entity, context, seed, params=params) |
168 return super(View, self).editGet(request, entity, context, |
|
169 seed, params=params) |
172 |
170 |
173 def _editGet(self, request, entity, form): |
171 def _editGet(self, request, entity, form): |
174 """Sets the content of the agreed_to_tos_on field and replaces. |
172 """Sets the content of the agreed_to_tos_on field and replaces. |
175 |
173 |
176 Also replaces the agreed_to_tos field with a hidden field when the ToS has been signed. |
174 Also replaces the agreed_to_tos field with a hidden field when the ToS has been signed. |
179 |
177 |
180 if entity.agreed_to_tos: |
178 if entity.agreed_to_tos: |
181 form.fields['agreed_to_tos_on'].initial = entity.agreed_to_tos_on |
179 form.fields['agreed_to_tos_on'].initial = entity.agreed_to_tos_on |
182 # replace the 'agreed_to_tos' field with a hidden field so |
180 # replace the 'agreed_to_tos' field with a hidden field so |
183 # that the form checks still pass |
181 # that the form checks still pass |
184 form.fields['agreed_to_tos'] = forms.fields.BooleanField(widget=forms.HiddenInput, |
182 form.fields['agreed_to_tos'] = forms.fields.BooleanField( |
185 initial=entity.agreed_to_tos, required=True) |
183 widget=forms.HiddenInput, initial=entity.agreed_to_tos, required=True) |
186 |
184 |
187 def editPost(self, request, entity, context, params=None): |
185 def editPost(self, request, entity, context, params=None): |
188 """Overwrite so we can add the contents of the ToS. |
186 """Overwrite so we can add the contents of the ToS. |
189 For params see base.View.editPost(). |
187 For params see base.View.editPost(). |
190 """ |
188 """ |
244 |
242 |
245 contents = [] |
243 contents = [] |
246 |
244 |
247 i = 0 |
245 i = 0 |
248 |
246 |
249 for name, view in sorted(role_view.ROLE_VIEWS.iteritems()): |
247 for name, loop_view in sorted(role_view.ROLE_VIEWS.iteritems()): |
250 list_params = view.getParams().copy() |
248 list_params = loop_view.getParams().copy() |
251 list_params['list_action'] = (redirects.getEditRedirect, list_params) |
249 list_params['list_action'] = (redirects.getEditRedirect, list_params) |
252 list_params['list_description'] = self.DEF_ROLE_LIST_MSG_FMT % list_params |
250 list_params['list_description'] = self.DEF_ROLE_LIST_MSG_FMT % list_params |
253 |
251 |
254 list = helper.lists.getListContent(request, list_params, filter, i, True) |
252 list = helper.lists.getListContent(request, list_params, filter, i, True) |
255 |
253 |
278 |
276 |
279 notifications = model_logic.notification.logic.getForFields(filter) |
277 notifications = model_logic.notification.logic.getForFields(filter) |
280 count = len(list(notifications)) |
278 count = len(list(notifications)) |
281 |
279 |
282 if count > 0: |
280 if count > 0: |
283 link_title = '<span class="unread">%s (%d)</span>' % (force_unicode(link_title), count) |
281 link_title = '<span class="unread">%s (%d)</span>' % ( |
|
282 force_unicode(link_title), count) |
284 link_title = mark_safe(link_title) |
283 link_title = mark_safe(link_title) |
285 |
284 |
286 items = [('/' + 'notification/list', link_title, 'notification')] |
285 items = [('/' + 'notification/list', link_title, 'notification')] |
287 if user: |
286 if user: |
288 items += [(redirects.getCreateDocumentRedirect(user, 'user'), |
287 items += [(redirects.getCreateDocumentRedirect(user, 'user'), |