app/soc/views/user/profile.py
changeset 482 839740b061ad
parent 481 94834a1e6c01
child 483 70f21691b0e1
equal deleted inserted replaced
481:94834a1e6c01 482:839740b061ad
    82 SUBMIT_PROFILE_SAVED_PARAMS = {
    82 SUBMIT_PROFILE_SAVED_PARAMS = {
    83   SUBMIT_MSG_PARAM_NAME: SUBMIT_MSG_PROFILE_SAVED,
    83   SUBMIT_MSG_PARAM_NAME: SUBMIT_MSG_PROFILE_SAVED,
    84 }
    84 }
    85 
    85 
    86 @decorators.view
    86 @decorators.view
    87 def edit(request, page=None, link_name=None, 
    87 def edit(request, page_name=None, link_name=None, 
    88          template=DEF_USER_PROFILE_EDIT_TMPL):
    88          template=DEF_USER_PROFILE_EDIT_TMPL):
    89   """View for a User to modify the properties of a User Model entity.
    89   """View for a User to modify the properties of a User Model entity.
    90 
    90 
    91   Args:
    91   Args:
    92     request: the standard django request object
    92     request: the standard django request object
   104   # create default template context for use with any templates
   104   # create default template context for use with any templates
   105   context = helper.responses.getUniversalContext(request)
   105   context = helper.responses.getUniversalContext(request)
   106 
   106 
   107   if (not account) and (not link_name):
   107   if (not account) and (not link_name):
   108     # not logged in, and no link name, so request that the user sign in 
   108     # not logged in, and no link name, so request that the user sign in 
   109     return simple.requestLogin(request, page, template, context,
   109     return simple.requestLogin(request, page_name, template, context,
   110         # TODO(tlarsen): /user/profile could be a link to a help page instead
   110         # TODO(tlarsen): /user/profile could be a link to a help page instead
   111         login_message_fmt=ugettext_lazy(
   111         login_message_fmt=ugettext_lazy(
   112             'To create a new <a href="/user/profile">User Profile</a>'
   112             'To create a new <a href="/user/profile">User Profile</a>'
   113             ' or modify an existing one, you must first'
   113             ' or modify an existing one, you must first'
   114             ' <a href="%(sign_in)s">sign in</a>.'))
   114             ' <a href="%(sign_in)s">sign in</a>.'))
   115 
   115 
   116   if (not account) and link_name:
   116   if (not account) and link_name:
   117     # not logged in, so show read-only public profile for link_name user
   117     # not logged in, so show read-only public profile for link_name user
   118     return simple.public(request, page=page, template=template, 
   118     return simple.public(request, page_name=page_name, template=template, 
   119                          link_name=link_name, context=context)
   119                          link_name=link_name, context=context)
   120 
   120 
   121   link_name_user = None
   121   link_name_user = None
   122 
   122 
   123   # try to fetch User entity corresponding to link_name if one exists
   123   # try to fetch User entity corresponding to link_name if one exists
   124   try:
   124   try:
   125     if link_name:
   125     if link_name:
   126       link_name_user = accounts.getUserFromLinkNameOr404(link_name)
   126       link_name_user = accounts.getUserFromLinkNameOr404(link_name)
   127   except out_of_band.ErrorResponse, error:
   127   except out_of_band.ErrorResponse, error:
   128     # show custom 404 page when link name doesn't exist in Datastore
   128     # show custom 404 page when link name doesn't exist in Datastore
   129     return simple.errorResponse(request, page, error, template, context)
   129     return simple.errorResponse(request, page_name, error, template, context)
   130   
   130   
   131   # link_name_user will be None here if link name was already None...
   131   # link_name_user will be None here if link name was already None...
   132   if link_name_user and (link_name_user.account != account):
   132   if link_name_user and (link_name_user.account != account):
   133     # link_name_user exists but is not the currently logged in Google Account,
   133     # link_name_user exists but is not the currently logged in Google Account,
   134     # so show public view for that (other) User entity
   134     # so show public view for that (other) User entity
   135     return simple.public(request, page=page, template=template, 
   135     return simple.public(request, page_name=page_name, template=template, 
   136                          link_name=link_name, context=context)
   136                          link_name=link_name, context=context)
   137 
   137 
   138   if request.method == 'POST':
   138   if request.method == 'POST':
   139     form = UserForm(request.POST)
   139     form = UserForm(request.POST)
   140 
   140 
   149       # check if user account is not in former_accounts
   149       # check if user account is not in former_accounts
   150       # if it is show error message that account is invalid
   150       # if it is show error message that account is invalid
   151       if models.user.logic.isFormerAccount(account):
   151       if models.user.logic.isFormerAccount(account):
   152         msg = DEF_USER_ACCOUNT_INVALID_MSG
   152         msg = DEF_USER_ACCOUNT_INVALID_MSG
   153         error = out_of_band.ErrorResponse(msg)
   153         error = out_of_band.ErrorResponse(msg)
   154         return simple.errorResponse(request, page, error, template, context)
   154         return simple.errorResponse(request, page_name, error, template, context)
   155       
   155       
   156       user = models.user.logic.updateOrCreateFromAccount(properties, account)
   156       user = models.user.logic.updateOrCreateFromAccount(properties, account)
   157       
   157       
   158       # redirect to /user/profile?s=0
   158       # redirect to /user/profile?s=0
   159       # (causes 'Profile saved' message to be displayed)
   159       # (causes 'Profile saved' message to be displayed)
   191   context['form'] = form
   191   context['form'] = form
   192   return helper.responses.respond(request, template, context)
   192   return helper.responses.respond(request, template, context)
   193 
   193 
   194 
   194 
   195 @decorators.view
   195 @decorators.view
   196 def create(request, page=None, template=DEF_USER_PROFILE_EDIT_TMPL):
   196 def create(request, page_name=None, template=DEF_USER_PROFILE_EDIT_TMPL):
   197   """create() view is same as edit() view, but with no link_name supplied.
   197   """create() view is same as edit() view, but with no link_name supplied.
   198   """
   198   """
   199   return edit(request, page=page, link_name=None, template=template)
   199   return edit(request, page_name=page_name, link_name=None, template=template)