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) |