app/soc/views/site/user/profile.py
author Sverre Rabbelier <srabbelier@gmail.com>
Sun, 12 Oct 2008 00:12:53 +0000
changeset 299 a1cc853a56e5
parent 298 c76a366c7ab4
child 303 4f1bb54ddae5
permissions -rw-r--r--
Refactor nearly all the soc.logic code to use the Base class Instead of having a lot of duplicate code, this patch aims to reduce this duplication by introducing a Base abstraction. Patch by: Sverre Rabbelier Reviewed by: to-be-reviewed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
299
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
    31
import soc.logic
249
325fb70c61a9 Replace common module with validate module. Move validation function from feed module to validate module and remove feed.py. Correct any usage of validation functions from common and feed modules into validate module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 245
diff changeset
    32
from soc.logic import validate
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
    33
from soc.logic import out_of_band
294
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
    34
from soc.logic.helper import access
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
    35
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
    36
from soc.views import simple
268
af1d7f48b361 Move helpers/list.py to helper/lists.py to avoid conflict with built-in type
Todd Larsen <tlarsen@google.com>
parents: 267
diff changeset
    37
from soc.views import helper
274
56e1c1721299 Move helpers/forms_helpers.py to helper/forms.py.
Todd Larsen <tlarsen@google.com>
parents: 272
diff changeset
    38
import soc.views.helper.forms
268
af1d7f48b361 Move helpers/list.py to helper/lists.py to avoid conflict with built-in type
Todd Larsen <tlarsen@google.com>
parents: 267
diff changeset
    39
import soc.views.helper.lists
269
0f1acc4c3e1e Move helpers/request.py to helper/requests.py to avoid conflict with common
Todd Larsen <tlarsen@google.com>
parents: 268
diff changeset
    40
import soc.views.helper.requests
272
00cea07656c0 Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents: 269
diff changeset
    41
import soc.views.helper.responses
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
    42
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
    43
15d89c284106 Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff changeset
    44
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
    45
15d89c284106 Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff changeset
    46
274
56e1c1721299 Move helpers/forms_helpers.py to helper/forms.py.
Todd Larsen <tlarsen@google.com>
parents: 272
diff changeset
    47
class LookupForm(helper.forms.DbModelForm):
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
    48
  """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
    49
  
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
    50
  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
    51
    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
    52
  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
    53
  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
    54
  
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
    55
  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
    56
  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
    57
  """
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
    58
  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
    59
      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
    60
      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
    61
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
    62
  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
    63
      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
    64
      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
    65
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
  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
    67
    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
    68
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
  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
    70
    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
    71
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
    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
    73
      # 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
    74
      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
    75
249
325fb70c61a9 Replace common module with validate module. Move validation function from feed module to validate module and remove feed.py. Correct any usage of validation functions from common and feed modules into validate module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 245
diff changeset
    76
    if not validate.isLinkNameFormatValid(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
    77
      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
    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
    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
    80
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
  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
    82
    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
    83
    
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
    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
    85
      # 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
    86
      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
    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
    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
    89
      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
    90
    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
    91
      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
    92
    
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
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
    95
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
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
    97
  """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
    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
  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
   100
    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
   101
    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
   102
      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
   103
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
  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
   105
    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
   106
    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
   107
  """
294
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   108
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   109
  try:
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   110
    access.checkIsDeveloper(request)
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   111
  except  soc.logic.out_of_band.AccessViolationResponse, alt_response:
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   112
    return alt_response.response()
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   113
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
   114
  # create default template context for use with any templates
272
00cea07656c0 Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents: 269
diff changeset
   115
  context = helper.responses.getUniversalContext(request)
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
   116
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
  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
   118
  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
   119
  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
   120
  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
   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 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
   123
    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
   124
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
    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
   126
      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
   127
      
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
      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
   129
        # email provided, so attempt to look up user by email
299
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   130
        user = soc.logic.user_logic.getFromFields(id=form_id)
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
   131
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
        if user:
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   133
          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
   134
        else:
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   135
          email_error = ugettext_lazy('User with that email not found.')
268
af1d7f48b361 Move helpers/list.py to helper/lists.py to avoid conflict with built-in type
Todd Larsen <tlarsen@google.com>
parents: 267
diff changeset
   136
          range_width = helper.lists.getPreferredListPagination()
229
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   137
          nearest_user_range_start = id_user.findNearestUsersOffset(
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   138
              range_width, id=form_id)
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   139
            
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   140
          if nearest_user_range_start is not None:            
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   141
            context['lookup_link'] = './list?offset=%s&limit=%s' % (
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   142
                nearest_user_range_start, range_width)
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
   143
      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
   144
        # user not found yet, so see if link name was provided
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   145
        link_name = form.cleaned_data.get('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
   146
        
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   147
        if 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
   148
          # link name provided, so try to look up by link name 
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   149
          user = id_user.getUserFromLinkName(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
   150
        
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
          if user:
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   152
            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
   153
            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
   154
          else:
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   155
            context['link_name_error'] = ugettext_lazy(
229
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   156
                'User with that link name not found.')
268
af1d7f48b361 Move helpers/list.py to helper/lists.py to avoid conflict with built-in type
Todd Larsen <tlarsen@google.com>
parents: 267
diff changeset
   157
            range_width = helper.lists.getPreferredListPagination()
229
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   158
            nearest_user_range_start = id_user.findNearestUsersOffset(
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   159
                range_width, link_name=link_name)
229
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   160
            
266
3b47bfd4f1b3 Move soc/views/helpers/list_helpers.py to soc/views/helpers/list.py and change
Todd Larsen <tlarsen@google.com>
parents: 262
diff changeset
   161
            if nearest_user_range_start is not None:
229
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   162
              context['lookup_link'] = './list?offset=%s&limit=%s' % (
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   163
                  nearest_user_range_start, range_width)
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
   164
    # 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
   165
  # 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
   166
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
  if user:
215
d020c95b17b1 Clean up too long lines in profile.py. Add ReadOnlyInput widget to custom_widgets module, it can be used to display read-only form fields. Display read-only "Id" field in LookUp view if user has been found and in User Edit Developer view.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 210
diff changeset
   168
    # User entity found, so populate form with existing User information
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
   169
    # context['found_user'] = user
299
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   170
    form = LookupForm(initial={'id': user.id.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
   171
                               '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
   172
15d89c284106 Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff changeset
   173
    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
   174
      # convert /lookup path into /profile/link_name path
269
0f1acc4c3e1e Move helpers/request.py to helper/requests.py to avoid conflict with common
Todd Larsen <tlarsen@google.com>
parents: 268
diff changeset
   175
      context['edit_link'] = helper.requests.replaceSuffix(
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   176
          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
   177
    # 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
   178
  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
   179
    # 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
   180
    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
   181
15d89c284106 Add a /site/user/lookup view that provides Developers with a form to look up
Todd Larsen <tlarsen@google.com>
parents:
diff changeset
   182
  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
   183
                  '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
   184
                  '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
   185
                  '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
   186
272
00cea07656c0 Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents: 269
diff changeset
   187
  return helper.responses.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
   188
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   189
274
56e1c1721299 Move helpers/forms_helpers.py to helper/forms.py.
Todd Larsen <tlarsen@google.com>
parents: 272
diff changeset
   190
class EditForm(helper.forms.DbModelForm):
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   191
  """Django form displayed when Developer edits a User.
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   192
  
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   193
  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
   194
    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
   195
  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
   196
  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
   197
  """
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   198
  id = forms.EmailField(
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   199
      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
   200
      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
   201
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   202
  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
   203
      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
   204
      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
   205
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   206
  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
   207
      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
   208
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   209
  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
   210
      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
   211
      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
   212
184
7c0b42aecd9b Add support for changing User id (Google Account email) in User Profile Developer view. Now user profile developer edit view includes hidden key_name field. Fix typo in user/profile.py. Show former user ids in lookup and edit User Profile Developer views.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 179
diff changeset
   213
  key_name = forms.CharField(widget=forms.HiddenInput)
7c0b42aecd9b Add support for changing User id (Google Account email) in User Profile Developer view. Now user profile developer edit view includes hidden key_name field. Fix typo in user/profile.py. Show former user ids in lookup and edit User Profile Developer views.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 179
diff changeset
   214
  
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   215
  class Meta:
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   216
    model = None
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   217
 
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   218
  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
   219
    link_name = self.cleaned_data.get('link_name')
249
325fb70c61a9 Replace common module with validate module. Move validation function from feed module to validate module and remove feed.py. Correct any usage of validation functions from common and feed modules into validate module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 245
diff changeset
   220
    if not validate.isLinkNameFormatValid(link_name):
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   221
      raise forms.ValidationError("This link name is in wrong format.")
299
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   222
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   223
    user = soc.logic.user_logic.getFromKeyName(link_name)
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   224
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   225
    if user and user.link_name != link_name:
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   226
      raise forms.ValidationError("This link name is already in use.")
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   227
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   228
    return link_name
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   229
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   230
  def clean_id(self):
262
52a42831d9d6 Factor out an isIdAvailable() function from EditForm.clean_id() in
Todd Larsen <tlarsen@google.com>
parents: 260
diff changeset
   231
    form_id = users.User(email=self.cleaned_data.get('id'))
52a42831d9d6 Factor out an isIdAvailable() function from EditForm.clean_id() in
Todd Larsen <tlarsen@google.com>
parents: 260
diff changeset
   232
    if not id_user.isIdAvailable(
52a42831d9d6 Factor out an isIdAvailable() function from EditForm.clean_id() in
Todd Larsen <tlarsen@google.com>
parents: 260
diff changeset
   233
        form_id, existing_key_name=self.data.get('key_name')):
52a42831d9d6 Factor out an isIdAvailable() function from EditForm.clean_id() in
Todd Larsen <tlarsen@google.com>
parents: 260
diff changeset
   234
      raise forms.ValidationError("This account is already in use.")
184
7c0b42aecd9b Add support for changing User id (Google Account email) in User Profile Developer view. Now user profile developer edit view includes hidden key_name field. Fix typo in user/profile.py. Show former user ids in lookup and edit User Profile Developer views.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 179
diff changeset
   235
    return form_id
7c0b42aecd9b Add support for changing User id (Google Account email) in User Profile Developer view. Now user profile developer edit view includes hidden key_name field. Fix typo in user/profile.py. Show former user ids in lookup and edit User Profile Developer views.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 179
diff changeset
   236
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   237
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   238
DEF_SITE_USER_PROFILE_EDIT_TMPL = 'soc/site/user/profile/edit.html'
179
4882d6c5630d Add custom 404 error message with link to "Create a New User" which is displayed when linkname in User Profile Developer view URL (/site/user/profile/<linkname>) doesn't exist. Add default value (None) to new_suffix parameter of template_helpers replaceSuffix and redirectToChangedSuffix functions.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 171
diff changeset
   239
DEF_CREATE_NEW_USER_MSG = ' You can create a new user by visiting' \
4882d6c5630d Add custom 404 error message with link to "Create a New User" which is displayed when linkname in User Profile Developer view URL (/site/user/profile/<linkname>) doesn't exist. Add default value (None) to new_suffix parameter of template_helpers replaceSuffix and redirectToChangedSuffix functions.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 171
diff changeset
   240
                          ' <a href="/site/user/profile">Create ' \
4882d6c5630d Add custom 404 error message with link to "Create a New User" which is displayed when linkname in User Profile Developer view URL (/site/user/profile/<linkname>) doesn't exist. Add default value (None) to new_suffix parameter of template_helpers replaceSuffix and redirectToChangedSuffix functions.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 171
diff changeset
   241
                          'a New User</a> page.'
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   242
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   243
def edit(request, link_name=None, template=DEF_SITE_USER_PROFILE_EDIT_TMPL):
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   244
  """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
   245
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   246
  Args:
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   247
    request: the standard django request object
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   248
    link_name: the User's site-unique "link_name" extracted from the URL
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   249
    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
   250
      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
   251
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   252
  Returns:
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   253
    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
   254
    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
   255
  """
294
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   256
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   257
  try:
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   258
    access.checkIsDeveloper(request)
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   259
  except  soc.logic.out_of_band.AccessViolationResponse, alt_response:
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   260
    return alt_response.response()
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   261
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   262
  # create default template context for use with any templates
272
00cea07656c0 Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents: 269
diff changeset
   263
  context = helper.responses.getUniversalContext(request)
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   264
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   265
  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
   266
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   267
  # try to fetch User entity corresponding to link_name if one exists
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   268
  if link_name:
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   269
    user = id_user.getUserFromLinkName(link_name)
171
b62f1cf5e878 Bug fixes to revision r596. User Account field in Developer User Profile view needs to be an email not a login name. Header title of User Profile Developer view, when form validation failes is now showing correct value ("Modify existing ..." instead of "Create new user ...").
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 170
diff changeset
   270
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   271
  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
   272
    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
   273
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   274
    if form.is_valid():
184
7c0b42aecd9b Add support for changing User id (Google Account email) in User Profile Developer view. Now user profile developer edit view includes hidden key_name field. Fix typo in user/profile.py. Show former user ids in lookup and edit User Profile Developer views.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 179
diff changeset
   275
      key_name = form.cleaned_data.get('key_name')
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   276
      new_link_name = form.cleaned_data.get('link_name')
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   277
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   278
      properties = {}
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   279
      properties['id'] = form.cleaned_data.get('id')
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   280
      properties['link_name']  = new_link_name
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   281
      properties['nick_name']  = form.cleaned_data.get('nick_name')
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   282
      properties['is_developer'] = form.cleaned_data.get('is_developer')
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   283
      
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   284
      user = soc.logic.user_logic.updateOrCreateFromKeyName(properties, key_name)
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   285
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   286
      #raise forms.ValidationError("lesseee: " + new_link_name + " " +  user.link_name)
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   287
184
7c0b42aecd9b Add support for changing User id (Google Account email) in User Profile Developer view. Now user profile developer edit view includes hidden key_name field. Fix typo in user/profile.py. Show former user ids in lookup and edit User Profile Developer views.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 179
diff changeset
   288
      if not user:
7c0b42aecd9b Add support for changing User id (Google Account email) in User Profile Developer view. Now user profile developer edit view includes hidden key_name field. Fix typo in user/profile.py. Show former user ids in lookup and edit User Profile Developer views.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 179
diff changeset
   289
        return http.HttpResponseRedirect('/')
7c0b42aecd9b Add support for changing User id (Google Account email) in User Profile Developer view. Now user profile developer edit view includes hidden key_name field. Fix typo in user/profile.py. Show former user ids in lookup and edit User Profile Developer views.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 179
diff changeset
   290
        
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   291
      # redirect to new /site/user/profile/new_link_name?s=0
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   292
      # (causes 'Profile saved' message to be displayed)
272
00cea07656c0 Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents: 269
diff changeset
   293
      return helper.responses.redirectToChangedSuffix(
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   294
          request, link_name, new_link_name,
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   295
          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
   296
  else: # method == 'GET':
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   297
    # try to fetch User entity corresponding to link name if one exists
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   298
    if link_name:
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   299
      if user:
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   300
        # 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
   301
        # (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
   302
        if (request.GET.get(profile.SUBMIT_MSG_PARAM_NAME)
269
0f1acc4c3e1e Move helpers/request.py to helper/requests.py to avoid conflict with common
Todd Larsen <tlarsen@google.com>
parents: 268
diff changeset
   303
            and (not helper.requests.isReferrerSelf(request,
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   304
                                                    suffix=link_name))):
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   305
          # 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
   306
          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
   307
    
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   308
        # 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
   309
        # (may display no message if ?s=0 parameter is not present)
290
2a92b866ed40 Create a submit_buttons block in group edit profile template so that submit buttons can be customized. Replace submit_message usage with new notice block (still work in progress in Lookup User views). Add customized edit profile template for Sponsor with delete button (not used yet, upcoming commit). Add delete Sponsor request handler.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 274
diff changeset
   310
        context['notice'] = (
269
0f1acc4c3e1e Move helpers/request.py to helper/requests.py to avoid conflict with common
Todd Larsen <tlarsen@google.com>
parents: 268
diff changeset
   311
            helper.requests.getSingleIndexedParamValue(
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   312
                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
   313
                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
   314
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   315
        # populate form with the existing User entity
229
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   316
        form = EditForm(initial={'key_name': user.key().name(),
299
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   317
            'id': user.id.email(), 'link_name': user.link_name,
215
d020c95b17b1 Clean up too long lines in profile.py. Add ReadOnlyInput widget to custom_widgets module, it can be used to display read-only form fields. Display read-only "Id" field in LookUp view if user has been found and in User Edit Developer view.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 210
diff changeset
   318
            'nick_name': user.nick_name, 'is_developer': user.is_developer})
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   319
      else:
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   320
        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
   321
          # 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
   322
          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
   323
          
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   324
        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
   325
            'User with that link name not found.')
298
c76a366c7ab4 Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents: 294
diff changeset
   326
        form = EditForm(initial={'link_name': link_name})
170
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   327
    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
   328
      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
   329
        # 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
   330
        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
   331
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   332
      # 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
   333
      form = EditForm()
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   334
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   335
  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
   336
                  'existing_user': user})
1fadf6e0348d Add /site/user/profile Developer view for editing arbitrary User entities.
Todd Larsen <tlarsen@google.com>
parents: 141
diff changeset
   337
272
00cea07656c0 Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents: 269
diff changeset
   338
  return helper.responses.respond(request, template, context)
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   339
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   340
274
56e1c1721299 Move helpers/forms_helpers.py to helper/forms.py.
Todd Larsen <tlarsen@google.com>
parents: 272
diff changeset
   341
class CreateForm(helper.forms.DbModelForm):
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   342
  """Django form displayed when Developer creates a User.
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   343
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   344
  This form is manually specified, instead of using
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   345
    model = soc.models.user.User
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   346
  in the Meta class, because the form behavior is unusual and normally
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   347
  required Properties of the User model need to sometimes be omitted.
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   348
  """
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   349
  id = forms.EmailField(
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   350
      label=soc.models.user.User.id.verbose_name,
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   351
      help_text=soc.models.user.User.id.help_text)
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   352
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   353
  link_name = forms.CharField(
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   354
      label=soc.models.user.User.link_name.verbose_name,
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   355
      help_text=soc.models.user.User.link_name.help_text)
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   356
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   357
  nick_name = forms.CharField(
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   358
      label=soc.models.user.User.nick_name.verbose_name)
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   359
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   360
  is_developer = forms.BooleanField(required=False,
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   361
      label=soc.models.user.User.is_developer.verbose_name,
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   362
      help_text=soc.models.user.User.is_developer.help_text)
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   363
  
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   364
  class Meta:
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   365
    model = None
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   366
  
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   367
  def clean_link_name(self):
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   368
    link_name = self.cleaned_data.get('link_name')
260
8b393bef717a Fix typo in recent validate.py changes (r682).
Todd Larsen <tlarsen@google.com>
parents: 249
diff changeset
   369
    if not validate.isLinkNameFormatValid(link_name):
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   370
      raise forms.ValidationError("This link name is in wrong format.")
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   371
    else:
299
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   372
      if id_user.getUserFromLinkName(link_name):
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   373
        raise forms.ValidationError("This link name is already in use.")
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   374
    return link_name
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   375
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   376
  def clean_id(self):
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   377
    new_email = self.cleaned_data.get('id')
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   378
    form_id = users.User(email=new_email)
299
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   379
    if soc.logic.user_logic.getFromFields(email=form_id):
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   380
        raise forms.ValidationError("This account is already in use.")
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   381
    return form_id
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   382
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   383
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   384
DEF_SITE_CREATE_USER_PROFILE_TMPL = 'soc/site/user/profile/edit.html'
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   385
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   386
def create(request, template=DEF_SITE_CREATE_USER_PROFILE_TMPL):
229
a46c238be8db Show link to /site/user/list on /site/user/lookup when User is not found.
Todd Larsen <tlarsen@google.com>
parents: 215
diff changeset
   387
  """View for a Developer to create a new User Model entity.
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   388
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   389
  Args:
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   390
    request: the standard django request object
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   391
    template: the "sibling" template (or a search list of such templates)
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   392
      from which to construct the public.html template name (or names)
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   393
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   394
  Returns:
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   395
    A subclass of django.http.HttpResponse which either contains the form to
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   396
    be filled out, or a redirect to the correct view in the interface.
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   397
  """
294
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   398
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   399
  try:
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   400
    access.checkIsDeveloper(request)
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   401
  except  soc.logic.out_of_band.AccessViolationResponse, alt_response:
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   402
    return alt_response.response()
1fdaab4a6ef2 Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 290
diff changeset
   403
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   404
  # create default template context for use with any templates
272
00cea07656c0 Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents: 269
diff changeset
   405
  context = helper.responses.getUniversalContext(request)
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   406
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   407
  if request.method == 'POST':
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   408
    form = CreateForm(request.POST)
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   409
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   410
    if form.is_valid():
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   411
      form_id = form.cleaned_data.get('id')
299
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   412
      link_name = form.cleaned_data.get('link_name')
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   413
299
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   414
      properties = {}
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   415
      properties['id'] = form_id
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   416
      properties['link_name'] = link_name
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   417
      properties['nick_name'] = form.cleaned_data.get('nick_name')
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   418
      properties['is_developer'] = form.cleaned_data.get('is_developer')
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   419
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   420
      user = soc.logic.user_logic.updateOrCreateFromFields(properties, email=form_id)
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   421
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   422
      if not user:
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   423
        return http.HttpResponseRedirect('/')
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   424
299
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   425
      # redirect to new /site/user/profile/new_link_name?s=0
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   426
      # (causes 'Profile saved' message to be displayed)
272
00cea07656c0 Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents: 269
diff changeset
   427
      return helper.responses.redirectToChangedSuffix(
299
a1cc853a56e5 Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents: 298
diff changeset
   428
          request, None, link_name,
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   429
          params=profile.SUBMIT_PROFILE_SAVED_PARAMS)
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   430
  else: # method == 'GET':
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   431
    # no link name specified, so start with an empty form
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   432
    form = CreateForm()
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   433
210
d05444cf4641 Replaced context.update call to simple value assignment in site.user.profile.create view function.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 205
diff changeset
   434
  context['form'] = form
205
4a86df751222 Fixed not working "Create New User" view which was caused by adding key_name into User Edit Developer view. This commit divides edit() view function in soc.views.site.user.profile into edit() and create() request handlers. New create() request handler is used only in "Create New User" view and has specific form validation functions and uses updateOrCreateUserFromId() instead of updateUserForKeyName().
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 190
diff changeset
   435
272
00cea07656c0 Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents: 269
diff changeset
   436
  return helper.responses.respond(request, template, context)