app/soc/views/site/sponsor/profile.py
changeset 309 7190b224c701
parent 303 4f1bb54ddae5
child 313 c25b1b680ba7
equal deleted inserted replaced
308:740090cd17c9 309:7190b224c701
    29 
    29 
    30 import soc.logic
    30 import soc.logic
    31 from soc.logic import validate
    31 from soc.logic import validate
    32 from soc.logic import out_of_band
    32 from soc.logic import out_of_band
    33 from soc.logic.site import id_user
    33 from soc.logic.site import id_user
       
    34 from soc.logic import models
    34 import soc.models.sponsor
    35 import soc.models.sponsor
    35 from soc.views import helper
    36 from soc.views import helper
    36 from soc.views.helper import access
    37 from soc.views.helper import access
    37 import soc.views.helper.forms
    38 import soc.views.helper.forms
    38 import soc.views.helper.requests
    39 import soc.views.helper.requests
    57   # TODO(pawel.solyga): write validation functions for other fields
    58   # TODO(pawel.solyga): write validation functions for other fields
    58   def clean_link_name(self):
    59   def clean_link_name(self):
    59     link_name = self.cleaned_data.get('link_name')
    60     link_name = self.cleaned_data.get('link_name')
    60     if not validate.isLinkNameFormatValid(link_name):
    61     if not validate.isLinkNameFormatValid(link_name):
    61       raise forms.ValidationError("This link name is in wrong format.")
    62       raise forms.ValidationError("This link name is in wrong format.")
    62     if soc.logic.sponsor_logic.getFromFields(link_name=link_name):
    63     if models.sponsor.logic.getFromFields(link_name=link_name):
    63       raise forms.ValidationError("This link name is already in use.")
    64       raise forms.ValidationError("This link name is already in use.")
    64     return link_name
    65     return link_name
    65 
    66 
    66 
    67 
    67 class EditForm(CreateForm):
    68 class EditForm(CreateForm):
   103 
   104 
   104   # create default template context for use with any templates
   105   # create default template context for use with any templates
   105   context = helper.responses.getUniversalContext(request)
   106   context = helper.responses.getUniversalContext(request)
   106 
   107 
   107   logged_in_id = users.get_current_user()
   108   logged_in_id = users.get_current_user()
   108   user = soc.logic.user_logic.getFromFields(email=logged_in_id)
   109   user = models.user.logic.getFromFields(email=logged_in_id)
   109   sponsor_form = None
   110   sponsor_form = None
   110   existing_sponsor = None
   111   existing_sponsor = None
   111 
   112 
   112   # 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
   113   try:
   114   try:
   114     existing_sponsor = soc.logic.sponsor_logic.getIfFields(link_name=link_name)
   115     existing_sponsor = models.sponsor.logic.getIfFields(link_name=link_name)
   115   except out_of_band.ErrorResponse, error:
   116   except out_of_band.ErrorResponse, error:
   116     # 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
   117     error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG
   118     error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG
   118     return simple.errorResponse(request, error, template, context)
   119     return simple.errorResponse(request, error, template, context)
   119      
   120      
   141         fields[field] = value
   142         fields[field] = value
   142       
   143       
   143       fields['founder'] = user
   144       fields['founder'] = user
   144       
   145       
   145       form_ln = fields['link_name']
   146       form_ln = fields['link_name']
   146       form_sponsor = soc.logic.sponsor_logic.updateOrCreateFromFields(fields, link_name=form_ln)
   147       form_sponsor = models.sponsor.logic.updateOrCreateFromFields(fields, link_name=form_ln)
   147       
   148       
   148       if not form_sponsor:
   149       if not form_sponsor:
   149         return http.HttpResponseRedirect('/')
   150         return http.HttpResponseRedirect('/')
   150         
   151         
   151       # redirect to new /site/sponsor/profile/form_link_name?s=0
   152       # redirect to new /site/sponsor/profile/form_link_name?s=0
   219 
   220 
   220   existing_sponsor = None
   221   existing_sponsor = None
   221 
   222 
   222   # try to fetch Sponsor entity corresponding to link_name if one exists
   223   # try to fetch Sponsor entity corresponding to link_name if one exists
   223   try:
   224   try:
   224     existing_sponsor = soc.logic.sponsor_logic.getIfFields(link_name=link_name)
   225     existing_sponsor = models.sponsor.logic.getIfFields(link_name=link_name)
   225   except out_of_band.ErrorResponse, error:
   226   except out_of_band.ErrorResponse, error:
   226     # show custom 404 page when link name doesn't exist in Datastore
   227     # show custom 404 page when link name doesn't exist in Datastore
   227     error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG
   228     error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG
   228     return simple.errorResponse(request, error, template, context)
   229     return simple.errorResponse(request, error, template, context)
   229 
   230 
   230   if existing_sponsor:
   231   if existing_sponsor:
   231     # TODO(pawel.solyga): Create specific delete method for Sponsor model
   232     # TODO(pawel.solyga): Create specific delete method for Sponsor model
   232     # Check if Sponsor can be deleted (has no Hosts and Programs)
   233     # Check if Sponsor can be deleted (has no Hosts and Programs)
   233     soc.logic.sponsor_logic.delete(existing_sponsor)
   234     models.sponsor.logic.delete(existing_sponsor)
   234 
   235 
   235   return http.HttpResponseRedirect('/site/sponsor/list')
   236   return http.HttpResponseRedirect('/site/sponsor/list')