taskapp/utilities/request.py
changeset 236 39f83b4cf557
parent 235 e338eaeccad7
equal deleted inserted replaced
235:e338eaeccad7 236:39f83b4cf557
     1 from datetime import datetime
       
     2 
       
     3 from django.contrib.auth.models import User
       
     4 from pytask.taskapp.models import Request, Profile
       
     5 
       
     6 def create_request(sent_by,role,sent_to=None,task=None,receiving_user=None,pynts=0):
       
     7     """
       
     8     creates an unreplied request, based on the passed arguments
       
     9         sent_to - a list of users to which the request is to be sent
       
    10         sent_by - sender of request
       
    11         role - a two character field which represents the role requested, if role = 'PY' then sent to all admins
       
    12         task - a requesting task (useful for sending admins a request to give Pynts to the user)
       
    13         receiving_user - user to whom the Pynts is assigned to(useful for sending admins a request to give Pynts to the user)
       
    14         pynts - the pynts assigned to the receiving user
       
    15     """
       
    16     req = Request(creation_date=datetime.now())
       
    17     req.sent_by = sent_by
       
    18     req.reply_date = datetime(1970,01,01)
       
    19     req.role = role
       
    20     req.pynts = pynts
       
    21     if task:
       
    22         req.task = task
       
    23     req.save()
       
    24     if role == 'PY':
       
    25         admin_profiles = Profile.objects.filter(rights='AD')
       
    26         for admin_profile in admin_profiles:
       
    27             req.sent_to.add(admin_profile.user)
       
    28         req.receiving_user = receiving_user
       
    29     else:
       
    30         req.sent_to.add(sent_to)
       
    31     req.save()
       
    32 
       
    33 def get_request(rid, user):
       
    34     """ see if the request is replied or if he can not view the request,
       
    35     raise 404 error. else return request.
       
    36     """
       
    37 
       
    38     active_requests = user.request_sent_to.filter(is_valid=True, is_replied=False).order_by('creation_date')
       
    39     current_requests = active_requests.filter(id=rid)
       
    40     if current_requests:
       
    41         current_request = current_requests[0]
       
    42 
       
    43         try:
       
    44             newer_request = current_request.get_next_by_creation_date(sent_to=user, is_replied=False, is_valid=True)
       
    45             newest_request = active_requests.reverse()[0]
       
    46             if newer_request == newest_request:
       
    47                 newest_request = None
       
    48         except Request.DoesNotExist:
       
    49             newer_request, newest_request = None, None
       
    50 
       
    51         try:
       
    52             older_request = current_request.get_previous_by_creation_date(sent_to=user, is_replied=False, is_valid=True)
       
    53             oldest_request = active_requests[0]
       
    54             if oldest_request == older_request:
       
    55                 oldest_request = None
       
    56         except Request.DoesNotExist:
       
    57             older_request, oldest_request = None, None
       
    58 
       
    59         return newest_request, newer_request, current_request, older_request, oldest_request 
       
    60 
       
    61     else:
       
    62         return None, None, None, None, None