37 from soc.logic.models.site import logic as site_logic |
37 from soc.logic.models.site import logic as site_logic |
38 from soc.logic.models.user import logic as user_logic |
38 from soc.logic.models.user import logic as user_logic |
39 from soc.views import helper |
39 from soc.views import helper |
40 from soc.views import out_of_band |
40 from soc.views import out_of_band |
41 from soc.views.helper import access |
41 from soc.views.helper import access |
|
42 from soc.views.helper import decorators |
42 from soc.views.models import base |
43 from soc.views.models import base |
43 |
44 |
44 import soc.models.linkable |
45 import soc.models.linkable |
45 import soc.models.user |
46 import soc.models.user |
46 import soc.views.helper |
47 import soc.views.helper |
125 |
126 |
126 new_params['name'] = "User" |
127 new_params['name'] = "User" |
127 new_params['module_name'] = "user_self" |
128 new_params['module_name'] = "user_self" |
128 new_params['url_name'] = "user" |
129 new_params['url_name'] = "user" |
129 |
130 |
|
131 new_params['edit_template'] = 'soc/user/edit_self.html' |
|
132 |
130 new_params['sidebar_heading'] = 'User (self)' |
133 new_params['sidebar_heading'] = 'User (self)' |
131 new_params['sidebar'] = [ |
134 new_params['sidebar'] = [ |
132 (users.create_login_url("/user/edit"), 'Sign In', 'signIn'), |
135 (users.create_login_url("/user/edit"), 'Sign In', 'signIn'), |
133 ('/' + new_params['url_name'] + '/edit', 'Profile', 'edit'), |
136 ('/' + new_params['url_name'] + '/edit', 'Profile', 'edit'), |
134 ('/' + new_params['url_name'] + '/roles', 'Roles', 'roles'), |
137 ('/' + new_params['url_name'] + '/roles', 'Roles', 'roles'), |
148 |
151 |
149 params = dicts.merge(params, new_params) |
152 params = dicts.merge(params, new_params) |
150 |
153 |
151 super(View, self).__init__(params=params) |
154 super(View, self).__init__(params=params) |
152 |
155 |
153 EDIT_SELF_TMPL = 'soc/user/edit_self.html' |
156 @decorators.merge_params |
154 |
157 @decorators.check_access |
155 def edit(self, request, access_type, |
158 def edit(self, request, access_type, |
156 page_name=None, params=None, seed=None, **kwargs): |
159 page_name=None, params=None, seed=None, **kwargs): |
157 """Displays User self edit page for the entity specified by **kwargs. |
160 """Displays User self edit page for the entity specified by **kwargs. |
158 |
161 |
159 Args: |
162 Args: |
160 request: the standard Django HTTP request object |
163 request: the standard Django HTTP request object |
161 page_name: the page name displayed in templates as page and header title |
164 page_name: the page name displayed in templates as page and header title |
162 params: a dict with params for this View |
165 params: a dict with params for this View |
163 kwargs: The Key Fields for the specified entity |
166 kwargs: The Key Fields for the specified entity |
164 """ |
167 """ |
165 |
|
166 new_params = {} |
|
167 new_params['edit_template'] = self.EDIT_SELF_TMPL |
|
168 |
|
169 params = dicts.merge(params, new_params) |
|
170 params = dicts.merge(params, self._params) |
|
171 |
|
172 try: |
|
173 access.checkAccess(access_type, request, params['rights']) |
|
174 except out_of_band.Error, error: |
|
175 return helper.responses.errorResponse(error, request, |
|
176 template=self.EDIT_SELF_TMPL) |
|
177 |
168 |
178 account = users.get_current_user() |
169 account = users.get_current_user() |
179 properties = {'account': account} |
170 properties = {'account': account} |
180 |
171 |
181 user = user_logic.getForFields(properties, unique=True) |
172 user = user_logic.getForFields(properties, unique=True) |
200 if user_logic.isFormerAccount(account): |
191 if user_logic.isFormerAccount(account): |
201 msg = self.DEF_USER_ACCOUNT_INVALID_MSG_FMT % { |
192 msg = self.DEF_USER_ACCOUNT_INVALID_MSG_FMT % { |
202 'email': account.email()} |
193 'email': account.email()} |
203 error = out_of_band.Error(msg) |
194 error = out_of_band.Error(msg) |
204 return helper.responses.errorResponse( |
195 return helper.responses.errorResponse( |
205 error, request, template=self.EDIT_SELF_TMPL, context=context) |
196 error, request, template=params['edit_template'], context=context) |
206 |
197 |
207 user = user_logic.updateOrCreateFromFields( |
198 user = user_logic.updateOrCreateFromFields( |
208 properties, {'link_id': new_link_id}) |
199 properties, {'link_id': new_link_id}) |
209 |
200 |
210 # redirect to /user/profile?s=0 |
201 # redirect to /user/profile?s=0 |