app/soc/views/helper/access.py
changeset 525 1dc62d570eff
parent 508 2b90baceac88
child 543 280a1ac6bcc1
equal deleted inserted replaced
524:774b379e058c 525:1dc62d570eff
    33 from google.appengine.api import users
    33 from google.appengine.api import users
    34 
    34 
    35 from django.utils.translation import ugettext_lazy
    35 from django.utils.translation import ugettext_lazy
    36 
    36 
    37 from soc.logic import accounts
    37 from soc.logic import accounts
    38 from soc.logic import models
    38 from soc.logic.models import user as user_logic
       
    39 from soc.logic.models import request as request_logic
    39 from soc.views import helper
    40 from soc.views import helper
    40 from soc.views.simple import requestLogin
    41 from soc.views.simple import requestLogin
    41 
    42 
    42 import soc.views.out_of_band
    43 import soc.views.out_of_band
    43 
    44 
   127     should be returned by the calling view.
   128     should be returned by the calling view.
   128   """
   129   """
   129 
   130 
   130   checkIsLoggedIn(request)
   131   checkIsLoggedIn(request)
   131 
   132 
   132   user = models.user.logic.getForFields(
   133   user = user_logic.logic.getForFields(
   133       {'account': users.get_current_user()}, unique=True)
   134       {'account': users.get_current_user()}, unique=True)
   134 
   135 
   135   if user:
   136   if user:
   136     return
   137     return
   137 
   138 
   169                                 login_message_fmt=login_message_fmt)
   170                                 login_message_fmt=login_message_fmt)
   170 
   171 
   171   raise soc.views.out_of_band.AccessViolationResponse(login_response)
   172   raise soc.views.out_of_band.AccessViolationResponse(login_response)
   172 
   173 
   173 
   174 
   174 def checkIsHost(request, program):
   175 def checkIsInvited(request, role):
   175   """Returns an alternate HTTP response if Google Account has no Host entity
   176   """Returns an alternate HTTP response if Google Account has no Host entity
   176      for the specified program.
   177      for the specified program.
   177 
   178 
   178   Args:
   179   Args:
   179     request: A Django HTTP request
   180     request: A Django HTTP request
   187     should be returned by the calling view.
   188     should be returned by the calling view.
   188   """
   189   """
   189 
   190 
   190   checkIsUser(request)
   191   checkIsUser(request)
   191 
   192 
   192   # TODO(alturin): the soc.logic.host module does not seem to exist...
   193   user = user_logic.logic.getForFields(
   193   host = soc.logic.host.getHostFromProgram(
   194       {'account': users.get_current_user()}, unique=True)
   194       users.get_current_user(), program)
   195 
   195 
   196   properties = {
   196   if host:
   197       'requester': user,
       
   198       'role': role,
       
   199       'accepted': True,
       
   200       }
       
   201 
       
   202   request = request_logic.logic.getForFields(properties, unique=True)
       
   203 
       
   204   if request:
   197     return
   205     return
   198 
   206 
   199   login_message_fmt = DEF_DEV_LOGOUT_LOGIN_MSG_FMT % {
   207   login_message_fmt = DEF_DEV_LOGOUT_LOGIN_MSG_FMT % {
   200       'role' : 'a host for this program',
   208       'role' : 'a host for this program',
   201       }
   209       }