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 |
|