app/soc/views/site/user/profile.py
changeset 171 b62f1cf5e878
parent 170 1fadf6e0348d
child 179 4882d6c5630d
equal deleted inserted replaced
170:1fadf6e0348d 171:b62f1cf5e878
   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)