--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pytask/taskapp/utilities/request.py Thu Jan 06 19:07:04 2011 +0530
@@ -0,0 +1,62 @@
+from datetime import datetime
+
+from django.contrib.auth.models import User
+from pytask.taskapp.models import Request, Profile
+
+def create_request(sent_by,role,sent_to=None,task=None,receiving_user=None,pynts=0):
+ """
+ creates an unreplied request, based on the passed arguments
+ sent_to - a list of users to which the request is to be sent
+ sent_by - sender of request
+ role - a two character field which represents the role requested, if role = 'PY' then sent to all admins
+ task - a requesting task (useful for sending admins a request to give Pynts to the user)
+ receiving_user - user to whom the Pynts is assigned to(useful for sending admins a request to give Pynts to the user)
+ pynts - the pynts assigned to the receiving user
+ """
+ req = Request(creation_date=datetime.now())
+ req.sent_by = sent_by
+ req.reply_date = datetime(1970,01,01)
+ req.role = role
+ req.pynts = pynts
+ if task:
+ req.task = task
+ req.save()
+ if role == 'PY':
+ admin_profiles = Profile.objects.filter(rights='AD')
+ for admin_profile in admin_profiles:
+ req.sent_to.add(admin_profile.user)
+ req.receiving_user = receiving_user
+ else:
+ req.sent_to.add(sent_to)
+ req.save()
+
+def get_request(rid, user):
+ """ see if the request is replied or if he can not view the request,
+ raise 404 error. else return request.
+ """
+
+ active_requests = user.request_sent_to.filter(is_valid=True, is_replied=False).order_by('creation_date')
+ current_requests = active_requests.filter(id=rid)
+ if current_requests:
+ current_request = current_requests[0]
+
+ try:
+ newer_request = current_request.get_next_by_creation_date(sent_to=user, is_replied=False, is_valid=True)
+ newest_request = active_requests.reverse()[0]
+ if newer_request == newest_request:
+ newest_request = None
+ except Request.DoesNotExist:
+ newer_request, newest_request = None, None
+
+ try:
+ older_request = current_request.get_previous_by_creation_date(sent_to=user, is_replied=False, is_valid=True)
+ oldest_request = active_requests[0]
+ if oldest_request == older_request:
+ oldest_request = None
+ except Request.DoesNotExist:
+ older_request, oldest_request = None, None
+
+ return newest_request, newer_request, current_request, older_request, oldest_request
+
+ else:
+ return None, None, None, None, None