app/soc/views/user/profile.py
author Pawel Solyga <Pawel.Solyga@gmail.com>
Fri, 12 Sep 2008 16:33:04 +0000
changeset 135 a7ccde9d9eed
parent 131 3db97cf7f2c7
child 136 a95f511bfcf8
permissions -rw-r--r--
Fixed one typo in response_helpers which caused is_admin context variable not to work correctly. Created new checkLinkNameForId function that checks if link_name is correct when creating new user and modifying existing one. This is now used for validation instead of doesLinkNameBelongToId in UserForm clean_link_name function. The previous validation function didn't allow to create new users and modify linkname of existing ones. Additionally I created new doesLinkNameExist helper function.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
83
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     2
#
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     3
# Copyright 2008 the Melange authors.
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     4
#
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     8
#
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    10
#
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    16
118
d2e61a490969 Clean up User Model and User profile edit view now that soc.logic.site.id_user
Todd Larsen <tlarsen@google.com>
parents: 99
diff changeset
    17
"""Views for editing and examining User profiles.
83
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    18
"""
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    19
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    20
__authors__ = [
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    21
  '"Pawel Solyga" <pawel.solyga@gmail.com>',
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    22
  ]
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    23
98
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
    24
import re
131
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
    25
import logging
83
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    26
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    27
from google.appengine.api import users
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    28
from django import http
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    29
from django import shortcuts
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    30
from django import newforms as forms
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    31
124
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    32
from soc.logic import out_of_band
118
d2e61a490969 Clean up User Model and User profile edit view now that soc.logic.site.id_user
Todd Larsen <tlarsen@google.com>
parents: 99
diff changeset
    33
from soc.logic.site import id_user
124
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    34
from soc.views import simple
83
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    35
from soc.views.helpers import forms_helpers
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    36
from soc.views.helpers import response_helpers
124
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    37
from soc.views.helpers import template_helpers
83
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    38
98
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
    39
import soc.models.user
83
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    40
118
d2e61a490969 Clean up User Model and User profile edit view now that soc.logic.site.id_user
Todd Larsen <tlarsen@google.com>
parents: 99
diff changeset
    41
83
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    42
class UserForm(forms_helpers.DbModelForm):
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    43
  """Django form displayed when creating or editing a User.
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    44
  """
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    45
  class Meta:
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    46
    """Inner Meta class that defines some behavior for the form.
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    47
    """
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    48
    #: db.Model subclass for which the form will gather information
98
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
    49
    model = soc.models.user.User
99
8c38b546a3cf Added public view support (not using controller yet)
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 98
diff changeset
    50
    
83
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    51
    #: list of model fields which will *not* be gathered by the form
131
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
    52
    exclude = ['id', 'former_ids']
98
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
    53
  
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
    54
  def clean_link_name(self):
131
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
    55
    link_name = self.cleaned_data.get('link_name')
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
    56
    if not id_user.isLinkNameFormatValid(link_name):
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
    57
      raise forms.ValidationError("This link name is in wrong format.")
135
a7ccde9d9eed Fixed one typo in response_helpers which caused is_admin context variable not to work correctly.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 131
diff changeset
    58
    elif not id_user.checkLinkNameForId(link_name):
98
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
    59
      raise forms.ValidationError("This link name is already in use.")
131
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
    60
    return link_name
83
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    61
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    62
124
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    63
DEF_USER_PROFILE_EDIT_TMPL = 'soc/user/profile/edit.html'
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    64
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    65
def edit(request, linkname=None, template=DEF_USER_PROFILE_EDIT_TMPL):
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    66
  """View for a User to modify the properties of a User Model entity.
83
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    67
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    68
  Args:
131
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
    69
    request: the standard django request object
98
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
    70
    linkname: the User's site-unique "linkname" extracted from the URL
131
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
    71
    template: the template path to use for rendering the template
83
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    72
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    73
  Returns:
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    74
    A subclass of django.http.HttpResponse which either contains the form to
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    75
    be filled out, or a redirect to the correct view in the interface.
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    76
  """
124
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    77
  id = users.get_current_user()
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    78
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    79
  # create default template context for use with any templates
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    80
  context = response_helpers.getUniversalContext(request)
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    81
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    82
  if (not id) and (not linkname):
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    83
    # not logged in, and no link name, so request that the user sign in 
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    84
    return simple.requestLogin(request, template, context,
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    85
        # TODO(tlarsen): /user/profile could be a link to a help page instead
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    86
        login_message_fmt='To create a new'
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    87
                          ' <a href="/user/profile">User Profile</a>'
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    88
                          ' or modify an existing one, you must first'
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    89
                          ' <a href="%(sign_in)s">sign in</a>.')
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    90
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    91
  if (not id) and linkname:
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    92
    # not logged in, so show read-only public profile for linkname user
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    93
    return simple.public(request, template, linkname, context)
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    94
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    95
  # try to fetch User entity corresponding to linkname if one exists    
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    96
  try:
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    97
    linkname_user = id_user.getUserIfLinkName(linkname)
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    98
  except out_of_band.ErrorResponse, error:
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
    99
    # show custom 404 page when linkname doesn't exist in Datastore
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   100
    return simple.errorResponse(request, error, template, context)
98
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
   101
  
124
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   102
  # linkname_user will be None here if linkname was already None...
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   103
  if linkname_user and (linkname_user.id != id):
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   104
    # linkname_user exists but is not the currently logged in Google Account,
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   105
    # so show public view for that (other) User entity
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   106
    return simple.public(request, template, linkname, context)
98
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
   107
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
   108
  if request.method == 'POST':
83
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   109
    form = UserForm(request.POST)
3f4f7c540b75 Created response helper respond() function that is used to generate base templates and it's child templates (handles sign in/out links, user name etc).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   110
98
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
   111
    if form.is_valid():
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
   112
      linkname = form.cleaned_data.get('link_name')
b2b823466a8b User Profile view (without controller yet).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 85
diff changeset
   113
      nickname = form.cleaned_data.get("nick_name")
124
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   114
131
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
   115
      user = id_user.updateOrCreateUserFromId(
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
   116
          id, link_name=linkname, nick_name=nickname)
99
8c38b546a3cf Added public view support (not using controller yet)
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 98
diff changeset
   117
124
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   118
      # TODO(tlarsen):
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   119
      # if old_linkname:  redirect to new /user/profile/new_linkname
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   120
      #   (how to preserve displaying the "Profile saved" message?)
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   121
      context.update({'submit_message': 'Profile saved.'})
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   122
  else: # request.method == 'GET'
131
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
   123
    # try to fetch User entity corresponding to Google Account if one exists    
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
   124
    user = id_user.getUserFromId(id)
Todd Larsen <tlarsen@google.com>
parents: 124
diff changeset
   125
124
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   126
    if user:
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   127
      # populate form with the existing User entity
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   128
      form = UserForm(instance=user)
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   129
    else:
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   130
      # no User entity exists for this Google Account, so show a blank form
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   131
      form = UserForm()
99
8c38b546a3cf Added public view support (not using controller yet)
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 98
diff changeset
   132
124
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   133
  context.update({'form': form})
051afb721c22 Refactor soc/views/user/profile.py to make use of several of the new views
Todd Larsen <tlarsen@google.com>
parents: 118
diff changeset
   134
  return response_helpers.respond(request, template, context)