diff -r c76a366c7ab4 -r a1cc853a56e5 app/soc/views/user/profile.py --- 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?