summaryrefslogtreecommitdiff
path: root/taskapp/events/request.py
diff options
context:
space:
mode:
Diffstat (limited to 'taskapp/events/request.py')
-rw-r--r--taskapp/events/request.py130
1 files changed, 0 insertions, 130 deletions
diff --git a/taskapp/events/request.py b/taskapp/events/request.py
deleted file mode 100644
index d69f717..0000000
--- a/taskapp/events/request.py
+++ /dev/null
@@ -1,130 +0,0 @@
-from datetime import datetime
-from pytask.taskapp.models import Profile
-from pytask.taskapp.events.task import addReviewer
-from pytask.taskapp.events.user import changeRole
-from pytask.taskapp.utilities.notification import create_notification
-
-def reply_to_request(request_obj, reply, replied_by):
- """
- makes a request replied with the given reply.
- arguments:
- request_obj - Request object for which change is intended
- reply - a boolean value to be given as reply (True/False)
- replied_by - the user object who replies to the request
- """
- if not request_obj.is_replied:
- request_obj.reply = reply
- request_obj.is_replied = True
- request_obj.reply_date = datetime.now()
- request_obj.replied_by = replied_by
- request_obj.save()
-
- if request_obj.role == "PY":
- ## note that we are not doing any check. we make requests invalid when an event like closing task happens.
- task = request_obj.task
- pynts = request_obj.pynts
- receiving_user = request_obj.receiving_user
- requested_by = request_obj.sent_by
- create_notification(request_obj.role, receiving_user, replied_by, reply, task, request_obj.remarks, requested_by, receiving_user, pynts)
- if receiving_user != requested_by:
- create_notification(request_obj.role, requested_by, replied_by, reply, task, request_obj.remarks, requested_by, receiving_user, pynts)
-
- elif request_obj.role == "MT":
- task = request_obj.task
- requested_by = request_obj.sent_by
- if reply:
- ## tell the replied user that he is reviewer for this task and give him learn more link
- create_notification("NT", request_obj.replied_by, task=task)
-
- ## now check if there are such similar requests and mark them as invalid
- ## they cannot be of type PY and so we can use the replied_by to get requests
- pending_requests = replied_by.request_sent_to.filter(is_valid=True, is_replied=False, role="MT",task=task)
- for req in pending_requests:
- create_notification("MT", req.sent_by, replied_by, False, task=req.task, remarks = "User has already accepted one such request and is a reviewer.", requested_by = req.sent_by)
- req.is_valid = False
- req.save()
-
- ## alert all the reviewers including who made request and all assigned users
- for a_reviewer in task.reviewers.all():
- create_notification(request_obj.role, a_reviewer, replied_by, True, task, request_obj.remarks, requested_by)
- for a_user in task.assigned_users.all():
- create_notification(request_obj.role, a_user, replied_by, True, task, request_obj.remarks, requested_by)
-
- addReviewer(task, request_obj.replied_by)
- else:
- ## tell the requested user that his request was rejected due to these reasons.
- create_notification(request_obj.role, requested_by, replied_by, False, task, request_obj.remarks, requested_by)
-
- elif request_obj.role == "DV":
- if reply:
- ## here we look for requests that are similar => requesting for DV and make them invalid
- ## also we drop a notification to user who made request
- pending_requests = request_obj.replied_by.request_sent_to.filter(is_valid=True,is_replied=False,role="DV")
- for req in pending_requests:
- req.is_valid = False
- req.save()
- create_notification(role = req.role, sent_to = req.sent_by, sent_from = replied_by, reply = False, \
- remarks = "User has accepted a similar request and has rights same or higher privileged than the request", \
- requested_by = req.sent_by )
-
- ## tell only the user who made him a DV
- ## drop a welcome message to that fucker
- create_notification(request_obj.role, request_obj.sent_by, request_obj.replied_by, reply, requested_by=request_obj.sent_by)
- create_notification("ND", request_obj.replied_by, requested_by=request_obj.sent_by)
- changeRole(role=request_obj.role, user=request_obj.replied_by)
-
- else:
- create_notification(request_obj.role, request_obj.sent_by, request_obj.replied_by, reply, remarks=request_obj.remarks, requested_by=request_obj.sent_by)
-
- elif request_obj.role == "MG":
- if reply:
- ## tell all the MG and AD
- alerting_users = Profile.objects.filter(user__is_active=True).exclude(rights="CT").exclude(rights="DV")
- for a_profile in alerting_users:
- create_notification(request_obj.role, a_profile.user, request_obj.replied_by, reply, requested_by=request_obj.sent_by)
-
- ## here we look for requests that less or similar => requesting for DV or MG and make them invalid
- ## also we drop a notification to user who made request
- active_requests = request_obj.replied_by.request_sent_to.filter(is_valid=True,is_replied=False)
- pending_requests = active_requests.filter(role="DV") | active_requests.filter(role="MG")
- for req in pending_requests:
- req.is_valid = False
- req.save()
- create_notification(role = req.role, sent_to = req.sent_by, sent_from = replied_by, reply = False, \
- remarks = "User has accepted a similar request and has rights same or higher privileged than the request", \
- requested_by = req.sent_by )
-
- ## drop a welcome message to that fucker
- create_notification("NG", request_obj.replied_by, requested_by=request_obj.sent_by)
- changeRole(role=request_obj.role, user=request_obj.replied_by)
-
- else:
- create_notification(request_obj.role, request_obj.sent_by, request_obj.replied_by, reply, remarks=request_obj.remarks, requested_by=request_obj.sent_by)
-
- elif request_obj.role == "AD":
- if reply:
-
- ## here we look for requests that less or similar => requesting for DV or MG or AD and make them invalid
- ## also we drop a notification to user who made request
- active_requests = request_obj.replied_by.request_sent_to.filter(is_valid=True,is_replied=False)
- pending_requests = active_requests.filter(role="DV") | active_requests.filter(role="MG") | active_requests.filter(role="AD")
- for req in pending_requests:
- req.is_valid = False
- req.save()
- create_notification(role = req.role, sent_to = req.sent_by, sent_from = replied_by, reply = False, \
- remarks = "User has accepted a similar request and has rights same or higher privileged than the request", \
- requested_by = req.sent_by )
- ## tell all the AD
- alerting_users = Profile.objects.filter(user__is_active=True).filter(rights="AD")
- for a_profile in alerting_users:
- create_notification(request_obj.role, a_profile.user, request_obj.replied_by, reply, requested_by=request_obj.sent_by)
-
- ## drop a welcome message to that fucker
- create_notification("NA", request_obj.replied_by, requested_by=request_obj.sent_by)
- changeRole(role=request_obj.role, user=request_obj.replied_by)
-
- else:
- create_notification(request_obj.role, request_obj.sent_by, request_obj.replied_by, reply, remarks=request_obj.remarks, requested_by=request_obj.sent_by)
-
- return True #Reply has been added successfully
- return False #Already replied