app/soc/views/site/sponsor/profile.py
changeset 299 a1cc853a56e5
parent 298 c76a366c7ab4
child 302 3b9c52170f46
equal deleted inserted replaced
298:c76a366c7ab4 299:a1cc853a56e5
    25 from google.appengine.api import users
    25 from google.appengine.api import users
    26 
    26 
    27 from django import http
    27 from django import http
    28 from django import newforms as forms
    28 from django import newforms as forms
    29 
    29 
       
    30 import soc.logic
    30 from soc.logic import validate
    31 from soc.logic import validate
    31 from soc.logic import out_of_band
    32 from soc.logic import out_of_band
    32 from soc.logic import sponsor
       
    33 from soc.logic.helper import access
    33 from soc.logic.helper import access
    34 from soc.logic.site import id_user
    34 from soc.logic.site import id_user
    35 from soc.views import helper
    35 from soc.views import helper
    36 import soc.views.helper.forms
    36 import soc.views.helper.forms
    37 import soc.views.helper.requests
    37 import soc.views.helper.requests
    58   # TODO(pawel.solyga): write validation functions for other fields
    58   # TODO(pawel.solyga): write validation functions for other fields
    59   def clean_link_name(self):
    59   def clean_link_name(self):
    60     link_name = self.cleaned_data.get('link_name')
    60     link_name = self.cleaned_data.get('link_name')
    61     if not validate.isLinkNameFormatValid(link_name):
    61     if not validate.isLinkNameFormatValid(link_name):
    62       raise forms.ValidationError("This link name is in wrong format.")
    62       raise forms.ValidationError("This link name is in wrong format.")
    63     if sponsor.doesLinkNameExist(link_name):
    63     if soc.logic.sponsor_logic.getFromFields(link_name=link_name):
    64       raise forms.ValidationError("This link name is already in use.")
    64       raise forms.ValidationError("This link name is already in use.")
    65     return link_name
    65     return link_name
    66 
    66 
    67 
    67 
    68 class EditForm(CreateForm):
    68 class EditForm(CreateForm):
   104 
   104 
   105   # create default template context for use with any templates
   105   # create default template context for use with any templates
   106   context = helper.responses.getUniversalContext(request)
   106   context = helper.responses.getUniversalContext(request)
   107 
   107 
   108   logged_in_id = users.get_current_user()
   108   logged_in_id = users.get_current_user()
   109   user = id_user.getUserFromId(logged_in_id)
   109   user = soc.logic.user_logic.getFromFields(email=logged_in_id)
   110   sponsor_form = None
   110   sponsor_form = None
   111   existing_sponsor = None
   111   existing_sponsor = None
   112 
   112 
   113   # try to fetch Sponsor entity corresponding to link_name if one exists
   113   # try to fetch Sponsor entity corresponding to link_name if one exists
   114   try:
   114   try:
   115     existing_sponsor = soc.logic.sponsor.getSponsorIfLinkName(linkname)
   115     existing_sponsor = soc.logic.sponsor_logic.getIfFields(link_name=link_name)
   116   except out_of_band.ErrorResponse, error:
   116   except out_of_band.ErrorResponse, error:
   117     # show custom 404 page when link name doesn't exist in Datastore
   117     # show custom 404 page when link name doesn't exist in Datastore
   118     error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG
   118     error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG
   119     return simple.errorResponse(request, error, template, context)
   119     return simple.errorResponse(request, error, template, context)
   120      
   120      
   142         fields[field] = value
   142         fields[field] = value
   143       
   143       
   144       fields['founder'] = user
   144       fields['founder'] = user
   145       
   145       
   146       form_ln = fields['link_name']
   146       form_ln = fields['link_name']
   147       form_sponsor = sponsor.updateOrCreateSponsorFromLinkName(form_ln, 
   147       form_sponsor = soc.logic.sponsor_logic.updateOrCreateFromFields(fields, link_name=form_ln)
   148                                                                **fields)
       
   149       
   148       
   150       if not form_sponsor:
   149       if not form_sponsor:
   151         return http.HttpResponseRedirect('/')
   150         return http.HttpResponseRedirect('/')
   152         
   151         
   153       # redirect to new /site/sponsor/profile/form_link_name?s=0
   152       # redirect to new /site/sponsor/profile/form_link_name?s=0