app/soc/views/site/sponsor/profile.py
changeset 482 839740b061ad
parent 481 94834a1e6c01
child 500 44ea4620c5c0
equal deleted inserted replaced
481:94834a1e6c01 482:839740b061ad
    87 DEF_CREATE_NEW_SPONSOR_MSG = ' You can create a new sponsor by visiting' \
    87 DEF_CREATE_NEW_SPONSOR_MSG = ' You can create a new sponsor by visiting' \
    88                           ' <a href="/site/sponsor/profile">Create ' \
    88                           ' <a href="/site/sponsor/profile">Create ' \
    89                           'a New Sponsor</a> page.'
    89                           'a New Sponsor</a> page.'
    90 
    90 
    91 @decorators.view
    91 @decorators.view
    92 def edit(request, page=None, link_name=None,
    92 def edit(request, page_name=None, link_name=None,
    93          template=DEF_SITE_SPONSOR_PROFILE_EDIT_TMPL):
    93          template=DEF_SITE_SPONSOR_PROFILE_EDIT_TMPL):
    94   """View for a Developer to modify the properties of a Sponsor Model entity.
    94   """View for a Developer to modify the properties of a Sponsor Model entity.
    95 
    95 
    96   Args:
    96   Args:
    97     request: the standard django request object
    97     request: the standard django request object
   111   except  soc.views.out_of_band.AccessViolationResponse, alt_response:
   111   except  soc.views.out_of_band.AccessViolationResponse, alt_response:
   112     return alt_response.response()
   112     return alt_response.response()
   113 
   113 
   114   # create default template context for use with any templates
   114   # create default template context for use with any templates
   115   context = helper.responses.getUniversalContext(request)
   115   context = helper.responses.getUniversalContext(request)
   116   context['page'] = page
   116   context['page_name'] = page_name
   117 
   117 
   118   user = models.user.logic.getForFields(
   118   user = models.user.logic.getForFields(
   119       {'account': users.get_current_user()}, unique=True)
   119       {'account': users.get_current_user()}, unique=True)
   120   sponsor_form = None
   120   sponsor_form = None
   121   existing_sponsor = None
   121   existing_sponsor = None
   124   try:
   124   try:
   125     existing_sponsor = sponsor.logic.getIfFields(link_name=link_name)
   125     existing_sponsor = sponsor.logic.getIfFields(link_name=link_name)
   126   except out_of_band.ErrorResponse, error:
   126   except out_of_band.ErrorResponse, error:
   127     # show custom 404 page when link name doesn't exist in Datastore
   127     # show custom 404 page when link name doesn't exist in Datastore
   128     error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG
   128     error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG
   129     return simple.errorResponse(request, page, error, template, context)
   129     return simple.errorResponse(request, page_name, error, template, context)
   130      
   130      
   131   if request.method == 'POST':
   131   if request.method == 'POST':
   132     if existing_sponsor:
   132     if existing_sponsor:
   133       sponsor_form = EditForm(request.POST)
   133       sponsor_form = EditForm(request.POST)
   134     else:
   134     else:
   140         # abuse that manually, so we check if form link_name is the same as
   140         # abuse that manually, so we check if form link_name is the same as
   141         # url link_name
   141         # url link_name
   142         if sponsor_form.cleaned_data.get('link_name') != link_name:
   142         if sponsor_form.cleaned_data.get('link_name') != link_name:
   143           msg = DEF_SPONSOR_NO_LINKNAME_CHANGE_MSG
   143           msg = DEF_SPONSOR_NO_LINKNAME_CHANGE_MSG
   144           error = out_of_band.ErrorResponse(msg)
   144           error = out_of_band.ErrorResponse(msg)
   145           return simple.errorResponse(request, page, error, template, context)
   145           return simple.errorResponse(request, page_name, error, template, context)
   146       
   146       
   147       fields = {}      
   147       fields = {}      
   148       
   148       
   149       # Ask for all the fields and pull them out 
   149       # Ask for all the fields and pull them out 
   150       for field in sponsor_form.cleaned_data:
   150       for field in sponsor_form.cleaned_data:
   205 
   205 
   206 
   206 
   207 DEF_SITE_SPONSOR_PROFILE_CREATE_TMPL = 'soc/group/profile/edit.html'
   207 DEF_SITE_SPONSOR_PROFILE_CREATE_TMPL = 'soc/group/profile/edit.html'
   208 
   208 
   209 @decorators.view
   209 @decorators.view
   210 def create(request, page=None, template=DEF_SITE_SPONSOR_PROFILE_CREATE_TMPL):
   210 def create(request, page_name=None, template=DEF_SITE_SPONSOR_PROFILE_CREATE_TMPL):
   211   """create() view is same as edit() view, but with no link_name supplied.
   211   """create() view is same as edit() view, but with no link_name supplied.
   212   """
   212   """
   213   return edit(request, page=page, link_name=None, template=template)
   213   return edit(request, page_name=page_name, link_name=None, template=template)
   214 
   214 
   215 
   215 
   216 @decorators.view
   216 @decorators.view
   217 def delete(request, page=None, link_name=None,
   217 def delete(request, page_name=None, link_name=None,
   218            template=DEF_SITE_SPONSOR_PROFILE_EDIT_TMPL):
   218            template=DEF_SITE_SPONSOR_PROFILE_EDIT_TMPL):
   219   """Request handler for a Developer to delete Sponsor Model entity.
   219   """Request handler for a Developer to delete Sponsor Model entity.
   220 
   220 
   221   Args:
   221   Args:
   222     request: the standard django request object
   222     request: the standard django request object
   236   except  soc.views.out_of_band.AccessViolationResponse, alt_response:
   236   except  soc.views.out_of_band.AccessViolationResponse, alt_response:
   237     return alt_response.response()
   237     return alt_response.response()
   238 
   238 
   239   # create default template context for use with any templates
   239   # create default template context for use with any templates
   240   context = helper.responses.getUniversalContext(request)
   240   context = helper.responses.getUniversalContext(request)
   241   context['page'] = page
   241   context['page_name'] = page_name
   242 
   242 
   243   existing_sponsor = None
   243   existing_sponsor = None
   244 
   244 
   245   # try to fetch Sponsor entity corresponding to link_name if one exists
   245   # try to fetch Sponsor entity corresponding to link_name if one exists
   246   try:
   246   try:
   247     existing_sponsor = models.sponsor.logic.getIfFields(link_name=link_name)
   247     existing_sponsor = models.sponsor.logic.getIfFields(link_name=link_name)
   248   except out_of_band.ErrorResponse, error:
   248   except out_of_band.ErrorResponse, error:
   249     # show custom 404 page when link name doesn't exist in Datastore
   249     # show custom 404 page when link name doesn't exist in Datastore
   250     error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG
   250     error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG
   251     return simple.errorResponse(request, page, error, template, context)
   251     return simple.errorResponse(request, page_name, error, template, context)
   252 
   252 
   253   if existing_sponsor:
   253   if existing_sponsor:
   254     # TODO(pawel.solyga): Create specific delete method for Sponsor model
   254     # TODO(pawel.solyga): Create specific delete method for Sponsor model
   255     # Check if Sponsor can be deleted (has no Hosts and Programs)
   255     # Check if Sponsor can be deleted (has no Hosts and Programs)
   256     models.sponsor.logic.delete(existing_sponsor)
   256     models.sponsor.logic.delete(existing_sponsor)