app/soc/views/user/profile.py
changeset 299 a1cc853a56e5
parent 298 c76a366c7ab4
child 305 972d28056d9d
--- a/app/soc/views/user/profile.py	Sun Oct 12 00:08:54 2008 +0000
+++ b/app/soc/views/user/profile.py	Sun Oct 12 00:12:53 2008 +0000
@@ -28,6 +28,7 @@
 from django import newforms as forms
 from django.utils.translation import ugettext_lazy
 
+import soc.logic
 from soc.logic import validate
 from soc.logic import out_of_band
 from soc.logic.site import id_user
@@ -56,8 +57,12 @@
     link_name = self.cleaned_data.get('link_name')
     if not validate.isLinkNameFormatValid(link_name):
       raise forms.ValidationError("This link name is in wrong format.")
-    elif not id_user.isLinkNameAvailableForId(link_name):
+
+    user = id_user.getUserFromLinkName(link_name)
+
+    if user and not id_user.doesLinkNameBelongToId(link_name, user.id):
       raise forms.ValidationError("This link name is already in use.")
+
     return link_name
 
 
@@ -109,7 +114,8 @@
 
   # try to fetch User entity corresponding to link_name if one exists
   try:
-    linkname_user = id_user.getUserIfLinkName(linkname)
+      if link_name:
+        link_name_user = id_user.getUserFromLinkNameOrDie(link_name)
   except out_of_band.ErrorResponse, error:
     # show custom 404 page when link name doesn't exist in Datastore
     return simple.errorResponse(request, error, template, context)
@@ -124,19 +130,21 @@
     form = UserForm(request.POST)
 
     if form.is_valid():
-      new_linkname = form.cleaned_data.get('link_name')
-      nickname = form.cleaned_data.get("nick_name")
+      new_link_name = form.cleaned_data.get('link_name')
+      properties = {}
+      properties['link_name'] = new_link_name
+      properties['nick_name'] = form.cleaned_data.get("nick_name")
+      properties['id'] = id
 
-      user = id_user.updateOrCreateUserFromId(
-          id, link_name=new_linkname, nick_name=nickname)
+      user = soc.logic.user_logic.updateOrCreateFromFields(properties, email=id)
 
       # redirect to new /user/profile/new_link_name?s=0
       # (causes 'Profile saved' message to be displayed)
       return helper.responses.redirectToChangedSuffix(
           request, link_name, new_link_name, params=SUBMIT_PROFILE_SAVED_PARAMS)
   else: # request.method == 'GET'
-    # try to fetch User entity corresponding to Google Account if one exists    
-    user = id_user.getUserFromId(id)
+    # try to fetch User entity corresponding to Google Account if one exists
+    user = soc.logic.user_logic.getFromFields(email=id)
 
     if user:
       # is 'Profile saved' parameter present, but referrer was not ourself?