146 # else: # method == 'GET' |
146 # else: # method == 'GET' |
147 |
147 |
148 if user: |
148 if user: |
149 # User entity found, so populate form with existing User information |
149 # User entity found, so populate form with existing User information |
150 # context['found_user'] = user |
150 # context['found_user'] = user |
151 form = LookupForm(initial={'id': user.id, |
151 form = LookupForm(initial={'id': user.id.email, |
152 'link_name': user.link_name}) |
152 'link_name': user.link_name}) |
153 |
153 |
154 if request.path.endswith('lookup'): |
154 if request.path.endswith('lookup'): |
155 # convert /lookup path into /profile/link_name path |
155 # convert /lookup path into /profile/link_name path |
156 context['edit_link'] = response_helpers.replaceSuffix( |
156 context['edit_link'] = response_helpers.replaceSuffix( |
234 if alt_response: |
234 if alt_response: |
235 return alt_response |
235 return alt_response |
236 |
236 |
237 user = None # assume that no User entity will be found |
237 user = None # assume that no User entity will be found |
238 |
238 |
|
239 # try to fetch User entity corresponding to linkname if one exists |
|
240 try: |
|
241 user = id_user.getUserIfLinkName(linkname) |
|
242 except out_of_band.ErrorResponse, error: |
|
243 # show custom 404 page when link name doesn't exist in Datastore |
|
244 return simple.errorResponse(request, error, template, context) |
|
245 |
239 if request.method == 'POST': |
246 if request.method == 'POST': |
240 form = EditForm(request.POST) |
247 form = EditForm(request.POST) |
241 |
248 |
242 if form.is_valid(): |
249 if form.is_valid(): |
243 form_id = form.cleaned_data.get('id') |
250 form_id = form.cleaned_data.get('id') |
247 |
254 |
248 user = id_user.updateOrCreateUserFromId( |
255 user = id_user.updateOrCreateUserFromId( |
249 form_id, link_name=new_linkname, nick_name=nickname, |
256 form_id, link_name=new_linkname, nick_name=nickname, |
250 is_developer=is_developer) |
257 is_developer=is_developer) |
251 |
258 |
252 # redirect to new /site/user/profile/new_linkname&s=0 |
259 # redirect to new /site/user/profile/new_linkname?s=0 |
253 # (causes 'Profile saved' message to be displayed) |
260 # (causes 'Profile saved' message to be displayed) |
254 return response_helpers.redirectToChangedSuffix( |
261 return response_helpers.redirectToChangedSuffix( |
255 request, linkname, new_linkname, |
262 request, linkname, new_linkname, |
256 params=profile.SUBMIT_PROFILE_SAVED_PARAMS) |
263 params=profile.SUBMIT_PROFILE_SAVED_PARAMS) |
257 else: # method == 'GET': |
264 else: # method == 'GET': |
258 # try to fetch User entity corresponding to link name if one exists |
265 # try to fetch User entity corresponding to link name if one exists |
259 if linkname: |
266 if linkname: |
260 user = id_user.getUserFromLinkName(linkname) |
|
261 |
|
262 if user: |
267 if user: |
263 # is 'Profile saved' parameter present, but referrer was not ourself? |
268 # is 'Profile saved' parameter present, but referrer was not ourself? |
264 # (e.g. someone bookmarked the GET that followed the POST submit) |
269 # (e.g. someone bookmarked the GET that followed the POST submit) |
265 if (request.GET.get(profile.SUBMIT_MSG_PARAM_NAME) |
270 if (request.GET.get(profile.SUBMIT_MSG_PARAM_NAME) |
266 and (not response_helpers.isReferrerSelf(request, |
271 and (not response_helpers.isReferrerSelf(request, |
275 request, profile.SUBMIT_MSG_PARAM_NAME, |
280 request, profile.SUBMIT_MSG_PARAM_NAME, |
276 values=profile.SUBMIT_MESSAGES)) |
281 values=profile.SUBMIT_MESSAGES)) |
277 |
282 |
278 # populate form with the existing User entity |
283 # populate form with the existing User entity |
279 form = EditForm(initial={ |
284 form = EditForm(initial={ |
280 'id': user.id, 'link_name': user.link_name, |
285 'id': user.id.email, 'link_name': user.link_name, |
281 'nick_name': user.nick_name, 'is_developer': user.is_developer}) |
286 'nick_name': user.nick_name, 'is_developer': user.is_developer}) |
282 else: |
287 else: |
283 if request.GET.get(profile.SUBMIT_MSG_PARAM_NAME): |
288 if request.GET.get(profile.SUBMIT_MSG_PARAM_NAME): |
284 # redirect to aggressively remove 'Profile saved' query parameter |
289 # redirect to aggressively remove 'Profile saved' query parameter |
285 return http.HttpResponseRedirect(request.path) |
290 return http.HttpResponseRedirect(request.path) |