author | Todd Larsen <tlarsen@google.com> |
Fri, 19 Sep 2008 05:15:20 +0000 | |
changeset 170 | 1fadf6e0348d |
parent 141 | e120c24b89e2 |
child 171 | b62f1cf5e878 |
permissions | -rw-r--r-- |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
2 |
# |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
3 |
# Copyright 2008 the Melange authors. |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
4 |
# |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
8 |
# |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
10 |
# |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
16 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
17 |
"""Developer views for editing and examining User profiles. |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
18 |
""" |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
19 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
20 |
__authors__ = [ |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
21 |
'"Todd Larsen" <tlarsen@google.com>', |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
22 |
] |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
23 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
24 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
25 |
from google.appengine.api import users |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
26 |
|
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
27 |
from django import http |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
28 |
from django import newforms as forms |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
29 |
from django.utils.translation import ugettext_lazy |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
30 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
31 |
from soc.logic import out_of_band |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
32 |
from soc.logic.site import id_user |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
33 |
from soc.views import simple |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
34 |
from soc.views.helpers import forms_helpers |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
35 |
from soc.views.helpers import response_helpers |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
36 |
from soc.views.helpers import template_helpers |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
37 |
from soc.views.user import profile |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
38 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
39 |
import soc.models.user |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
40 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
41 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
42 |
class LookupForm(forms_helpers.DbModelForm): |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
43 |
"""Django form displayed for a Developer to look up a User. |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
44 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
45 |
This form is manually specified, instead of using |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
46 |
model = soc.models.user.User |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
47 |
in the Meta class, because the form behavior is unusual and normally |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
48 |
required Properties of the User model need to sometimes be omitted. |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
49 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
50 |
Also, this form only permits entry and editing of some of the User entity |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
51 |
Properties, not all of them. |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
52 |
""" |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
53 |
id = forms.EmailField(required=False, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
54 |
label=soc.models.user.User.id.verbose_name, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
55 |
help_text=soc.models.user.User.id.help_text) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
56 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
57 |
link_name = forms.CharField(required=False, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
58 |
label=soc.models.user.User.link_name.verbose_name, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
59 |
help_text=soc.models.user.User.link_name.help_text) |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
60 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
61 |
class Meta: |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
62 |
model = None |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
63 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
64 |
def clean_link_name(self): |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
65 |
link_name = self.cleaned_data.get('link_name') |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
66 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
67 |
if not link_name: |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
68 |
# link name not supplied (which is OK), so do not try to validate it |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
69 |
return None |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
70 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
71 |
if not id_user.isLinkNameFormatValid(link_name): |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
72 |
raise forms.ValidationError('This link name is in wrong format.') |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
73 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
74 |
return link_name |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
75 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
76 |
def clean_id(self): |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
77 |
email = self.cleaned_data.get('id') |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
78 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
79 |
if not email: |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
80 |
# email not supplied (which is OK), so do not try to convert it |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
81 |
return None |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
82 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
83 |
try: |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
84 |
return users.User(email=email) |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
85 |
except users.UserNotFoundError: |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
86 |
raise forms.ValidationError('Account not found.') |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
87 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
88 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
89 |
DEF_SITE_USER_PROFILE_LOOKUP_TMPL = 'soc/site/user/profile/lookup.html' |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
90 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
91 |
def lookup(request, template=DEF_SITE_USER_PROFILE_LOOKUP_TMPL): |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
92 |
"""View for a Developer to look up a User Model entity. |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
93 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
94 |
Args: |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
95 |
request: the standard django request object |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
96 |
template: the "sibling" template (or a search list of such templates) |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
97 |
from which to construct the public.html template name (or names) |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
98 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
99 |
Returns: |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
100 |
A subclass of django.http.HttpResponse which either contains the form to |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
101 |
be filled out, or a redirect to the correct view in the interface. |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
102 |
""" |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
103 |
# create default template context for use with any templates |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
104 |
context = response_helpers.getUniversalContext(request) |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
105 |
|
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
106 |
alt_response = simple.getAltResponseIfNotDeveloper(request, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
107 |
context=context) |
141
e120c24b89e2
Added Melange front page edit view where you can change title, content, feed url. Created SiteSettings and Document models and some logic for them. Added isFeedURLValid function in soc/logic/feed.py. Created some functions for handling datastore updates of different kinds of Models (soc/logic/model.py). Fixed some typos and too long lines of code.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
134
diff
changeset
|
108 |
if alt_response: |
e120c24b89e2
Added Melange front page edit view where you can change title, content, feed url. Created SiteSettings and Document models and some logic for them. Added isFeedURLValid function in soc/logic/feed.py. Created some functions for handling datastore updates of different kinds of Models (soc/logic/model.py). Fixed some typos and too long lines of code.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
134
diff
changeset
|
109 |
return alt_response |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
110 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
111 |
user = None # assume that no User entity will be found |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
112 |
form = None # assume blank form needs to be displayed |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
113 |
lookup_message = ugettext_lazy('Enter information to look up a User.') |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
114 |
email_error = None # assume no email look-up errors |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
115 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
116 |
if request.method == 'POST': |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
117 |
form = LookupForm(request.POST) |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
118 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
119 |
if form.is_valid(): |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
120 |
form_id = form.cleaned_data.get('id') |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
121 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
122 |
if form_id: |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
123 |
# email provided, so attempt to look up user by email |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
124 |
user = id_user.getUserFromId(form_id) |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
125 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
126 |
if user: |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
127 |
lookup_message = ugettext_lazy('User found by email.') |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
128 |
else: |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
129 |
email_error = ugettext_lazy('User with that email not found.') |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
130 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
131 |
if not user: |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
132 |
# user not found yet, so see if link name was provided |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
133 |
linkname = form.cleaned_data.get('link_name') |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
134 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
135 |
if linkname: |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
136 |
# link name provided, so try to look up by link name |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
137 |
user = id_user.getUserFromLinkName(linkname) |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
138 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
139 |
if user: |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
140 |
lookup_message = ugettext_lazy('User found by link name.') |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
141 |
email_error = None # clear previous error, since User was found |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
142 |
else: |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
143 |
context['linkname_error'] = ugettext_lazy( |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
144 |
'User with that link name not found.') |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
145 |
# else: form was not valid |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
146 |
# else: # method == 'GET' |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
147 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
148 |
if user: |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
149 |
# User entity found, so populate form with existing User information |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
150 |
# context['found_user'] = user |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
151 |
form = LookupForm(initial={'id': user.id, |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
152 |
'link_name': user.link_name}) |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
153 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
154 |
if request.path.endswith('lookup'): |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
155 |
# convert /lookup path into /profile/link_name path |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
156 |
context['edit_link'] = response_helpers.replaceSuffix( |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
157 |
request.path, 'lookup', 'profile/%s' % user.link_name) |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
158 |
# else: URL is not one that was expected, so do not display edit link |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
159 |
elif not form: |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
160 |
# no pre-populated form was constructed, so show the empty look-up form |
134
1f64d7a4d82d
Fixed wrong user variable in lookup.html template for edit link (was user should be found_user).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
132
diff
changeset
|
161 |
form = LookupForm() |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
162 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
163 |
context.update({'form': form, |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
164 |
'found_user': user, |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
165 |
'email_error': email_error, |
132
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
166 |
'lookup_message': lookup_message}) |
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
167 |
|
15d89c284106
Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
168 |
return response_helpers.respond(request, template, context) |
170
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
169 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
170 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
171 |
class EditForm(forms_helpers.DbModelForm): |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
172 |
"""Django form displayed when Developer creates or edits a User. |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
173 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
174 |
This form is manually specified, instead of using |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
175 |
model = soc.models.user.User |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
176 |
in the Meta class, because the form behavior is unusual and normally |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
177 |
required Properties of the User model need to sometimes be omitted. |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
178 |
""" |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
179 |
id = forms.EmailField( |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
180 |
label=soc.models.user.User.id.verbose_name, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
181 |
help_text=soc.models.user.User.id.help_text) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
182 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
183 |
link_name = forms.CharField( |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
184 |
label=soc.models.user.User.link_name.verbose_name, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
185 |
help_text=soc.models.user.User.link_name.help_text) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
186 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
187 |
nick_name = forms.CharField( |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
188 |
label=soc.models.user.User.nick_name.verbose_name) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
189 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
190 |
is_developer = forms.BooleanField(required=False, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
191 |
label=soc.models.user.User.is_developer.verbose_name, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
192 |
help_text=soc.models.user.User.is_developer.help_text) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
193 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
194 |
class Meta: |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
195 |
model = None |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
196 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
197 |
def clean_link_name(self): |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
198 |
link_name = self.cleaned_data.get('link_name') |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
199 |
if not id_user.isLinkNameFormatValid(link_name): |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
200 |
raise forms.ValidationError("This link name is in wrong format.") |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
201 |
else: |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
202 |
if not id_user.isLinkNameAvailableForId( |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
203 |
link_name, id=self.cleaned_data.get('id')): |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
204 |
raise forms.ValidationError("This link name is already in use.") |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
205 |
return link_name |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
206 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
207 |
def clean_id(self): |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
208 |
try: |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
209 |
return users.User(email=self.cleaned_data.get('id')) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
210 |
except users.UserNotFoundError: |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
211 |
raise forms.ValidationError('Account not found.') |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
212 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
213 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
214 |
DEF_SITE_USER_PROFILE_EDIT_TMPL = 'soc/site/user/profile/edit.html' |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
215 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
216 |
def edit(request, linkname=None, template=DEF_SITE_USER_PROFILE_EDIT_TMPL): |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
217 |
"""View for a Developer to modify the properties of a User Model entity. |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
218 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
219 |
Args: |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
220 |
request: the standard django request object |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
221 |
linkname: the User's site-unique "linkname" extracted from the URL |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
222 |
template: the "sibling" template (or a search list of such templates) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
223 |
from which to construct the public.html template name (or names) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
224 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
225 |
Returns: |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
226 |
A subclass of django.http.HttpResponse which either contains the form to |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
227 |
be filled out, or a redirect to the correct view in the interface. |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
228 |
""" |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
229 |
# create default template context for use with any templates |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
230 |
context = response_helpers.getUniversalContext(request) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
231 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
232 |
alt_response = simple.getAltResponseIfNotDeveloper(request, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
233 |
context=context) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
234 |
if alt_response: |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
235 |
return alt_response |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
236 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
237 |
user = None # assume that no User entity will be found |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
238 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
239 |
if request.method == 'POST': |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
240 |
form = EditForm(request.POST) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
241 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
242 |
if form.is_valid(): |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
243 |
form_id = form.cleaned_data.get('id') |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
244 |
new_linkname = form.cleaned_data.get('link_name') |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
245 |
nickname = form.cleaned_data.get('nick_name') |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
246 |
is_developer = form.cleaned_data.get('is_developer') |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
247 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
248 |
user = id_user.updateOrCreateUserFromId( |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
249 |
form_id, link_name=new_linkname, nick_name=nickname, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
250 |
is_developer=is_developer) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
251 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
252 |
# redirect to new /site/user/profile/new_linkname&s=0 |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
253 |
# (causes 'Profile saved' message to be displayed) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
254 |
return response_helpers.redirectToChangedSuffix( |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
255 |
request, linkname, new_linkname, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
256 |
params=profile.SUBMIT_PROFILE_SAVED_PARAMS) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
257 |
else: # method == 'GET': |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
258 |
# try to fetch User entity corresponding to link name if one exists |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
259 |
if linkname: |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
260 |
user = id_user.getUserFromLinkName(linkname) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
261 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
262 |
if user: |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
263 |
# is 'Profile saved' parameter present, but referrer was not ourself? |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
264 |
# (e.g. someone bookmarked the GET that followed the POST submit) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
265 |
if (request.GET.get(profile.SUBMIT_MSG_PARAM_NAME) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
266 |
and (not response_helpers.isReferrerSelf(request, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
267 |
suffix=linkname))): |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
268 |
# redirect to aggressively remove 'Profile saved' query parameter |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
269 |
return http.HttpResponseRedirect(request.path) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
270 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
271 |
# referrer was us, so select which submit message to display |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
272 |
# (may display no message if ?s=0 parameter is not present) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
273 |
context['submit_message'] = ( |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
274 |
template_helpers.getSingleIndexedParamValue( |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
275 |
request, profile.SUBMIT_MSG_PARAM_NAME, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
276 |
values=profile.SUBMIT_MESSAGES)) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
277 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
278 |
# populate form with the existing User entity |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
279 |
form = EditForm(initial={ |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
280 |
'id': user.id, 'link_name': user.link_name, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
281 |
'nick_name': user.nick_name, 'is_developer': user.is_developer}) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
282 |
else: |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
283 |
if request.GET.get(profile.SUBMIT_MSG_PARAM_NAME): |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
284 |
# redirect to aggressively remove 'Profile saved' query parameter |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
285 |
return http.HttpResponseRedirect(request.path) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
286 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
287 |
context['lookup_error'] = ugettext_lazy( |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
288 |
'User with that link name not found.') |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
289 |
form = EditForm(initial={'link_name': linkname}) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
290 |
else: # no link name specified in the URL |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
291 |
if request.GET.get(profile.SUBMIT_MSG_PARAM_NAME): |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
292 |
# redirect to aggressively remove 'Profile saved' query parameter |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
293 |
return http.HttpResponseRedirect(request.path) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
294 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
295 |
# no link name specified, so start with an empty form |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
296 |
form = EditForm() |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
297 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
298 |
context.update({'form': form, |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
299 |
'existing_user': user}) |
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
300 |
|
1fadf6e0348d
Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
301 |
return response_helpers.respond(request, template, context) |