3 from pytask.taskapp.utilities.task import getTask |
3 from pytask.taskapp.utilities.task import getTask |
4 from pytask.taskapp.utilities.request import create_request |
4 from pytask.taskapp.utilities.request import create_request |
5 from pytask.taskapp.utilities.helper import get_key |
5 from pytask.taskapp.utilities.helper import get_key |
6 from pytask.taskapp.utilities.notification import create_notification |
6 from pytask.taskapp.utilities.notification import create_notification |
7 |
7 |
8 def publishTask(task, rem_mentors=True, rem_comments=True): |
8 def publishTask(task, rem_reviewers=True, rem_comments=True): |
9 """ set the task status to open """ |
9 """ set the task status to open """ |
10 |
10 |
11 # if task.sub_type == 'D': |
11 # if task.sub_type == 'D': |
12 # deps, subs = task.map_subs.all(), [] |
12 # deps, subs = task.map_subs.all(), [] |
13 #else: |
13 #else: |
17 if task.subs or any(map(lambda t:t.status!="CM",task.deps)): |
17 if task.subs or any(map(lambda t:t.status!="CM",task.deps)): |
18 task.status = "LO" |
18 task.status = "LO" |
19 else: |
19 else: |
20 task.status = "OP" |
20 task.status = "OP" |
21 |
21 |
22 if rem_mentors: |
22 if rem_reviewers: |
23 task.mentors.clear() |
23 task.reviewers.clear() |
24 task.mentors.add(task.created_by) |
24 task.reviewers.add(task.created_by) |
25 |
25 |
26 if rem_comments: |
26 if rem_comments: |
27 task.comment_set.update(is_deleted=True) |
27 task.comment_set.update(is_deleted=True) |
28 task.comment_set.update(deleted_by=task.created_by) |
28 task.comment_set.update(deleted_by=task.created_by) |
29 |
29 |
91 else: |
91 else: |
92 main_task.status = "LO" |
92 main_task.status = "LO" |
93 |
93 |
94 main_task.save() |
94 main_task.save() |
95 |
95 |
96 def reqMentor(task, mentor, req_by): |
96 def reqReviewer(task, reviewer, req_by): |
97 """ create a request object with role as MT. |
97 """ create a request object with role as MT. |
98 """ |
98 """ |
99 |
99 |
100 create_request(sent_by=req_by, role="MT", sent_to=mentor, task=task) |
100 create_request(sent_by=req_by, role="MT", sent_to=reviewer, task=task) |
101 |
101 |
102 def addMentor(task,mentor): |
102 def addReviewer(task,reviewer): |
103 """ add the mentor to mentors list of the task """ |
103 """ add the reviewer to reviewers list of the task """ |
104 |
104 |
105 task.mentors.add(mentor) |
105 task.reviewers.add(reviewer) |
106 task.save() |
106 task.save() |
107 return task |
107 return task |
108 |
108 |
109 def createTask(title,desc,created_by,credits): |
109 def createTask(title,desc,created_by,credits): |
110 """ creates a bare minimum task with title, description and credits. |
110 """ creates a bare minimum task with title, description and credits. |
111 the creator of the task will be assigned as a mentor for the task. |
111 the creator of the task will be assigned as a reviewer for the task. |
112 """ |
112 """ |
113 |
113 |
114 while True: |
114 while True: |
115 id = get_key() |
115 id = get_key() |
116 try: |
116 try: |
145 pending_reqs = user.request_sent_to.filter(is_replied=False, is_valid=True, role="MT", task=task).all() |
145 pending_reqs = user.request_sent_to.filter(is_replied=False, is_valid=True, role="MT", task=task).all() |
146 for req in pending_reqs: |
146 for req in pending_reqs: |
147 req.is_valid = False |
147 req.is_valid = False |
148 req.save() |
148 req.save() |
149 user_url = '<a href="/user/view/uid=%s">%s</a>'%(user.id, user.username) |
149 user_url = '<a href="/user/view/uid=%s">%s</a>'%(user.id, user.username) |
150 reason = "User has claimed the task and hence cannot be a mentor and this request was made invalid." |
150 reason = "User has claimed the task and hence cannot be a reviewer and this request was made invalid." |
151 create_notification("MT", req.sent_by, user, task=task, reply=False, remarks=reason, requested_by=req.sent_by) |
151 create_notification("MT", req.sent_by, user, task=task, reply=False, remarks=reason, requested_by=req.sent_by) |
152 |
152 |
153 for a_mentor in task.mentors.all(): |
153 for a_reviewer in task.reviewers.all(): |
154 create_notification("CL", a_mentor, user, task=task, remarks=message) |
154 create_notification("CL", a_reviewer, user, task=task, remarks=message) |
155 |
155 |
156 def assignTask(task, added_user, assigned_by): |
156 def assignTask(task, added_user, assigned_by): |
157 """ check for the status of task and assign it to the particular user """ |
157 """ check for the status of task and assign it to the particular user """ |
158 |
158 |
159 if task.status in ['OP', 'WR']: |
159 if task.status in ['OP', 'WR']: |
229 create_notification(role="CM", sent_to=a_user, sent_from=marked_by, task=task) |
229 create_notification(role="CM", sent_to=a_user, sent_from=marked_by, task=task) |
230 |
230 |
231 for a_user in task.claimed_users.all(): |
231 for a_user in task.claimed_users.all(): |
232 create_notification(role="CM", sent_to=a_user, sent_from=marked_by, task=task) |
232 create_notification(role="CM", sent_to=a_user, sent_from=marked_by, task=task) |
233 |
233 |
234 for a_mentor in task.mentors.all(): |
234 for a_reviewer in task.reviewers.all(): |
235 create_notification(role="CM", sent_to=a_mentor, sent_from=marked_by, task=task) |
235 create_notification(role="CM", sent_to=a_reviewer, sent_from=marked_by, task=task) |
236 |
236 |
237 def closeTask(task, closed_by, reason=None): |
237 def closeTask(task, closed_by, reason=None): |
238 """ set the status of task as CD. |
238 """ set the status of task as CD. |
239 generate notifications accordingly. |
239 generate notifications accordingly. |
240 """ |
240 """ |
251 create_notification(role="CD", sent_to=a_user, sent_from=closed_by, task=task, remarks=reason) |
251 create_notification(role="CD", sent_to=a_user, sent_from=closed_by, task=task, remarks=reason) |
252 |
252 |
253 for a_user in task.claimed_users.all(): |
253 for a_user in task.claimed_users.all(): |
254 create_notification(role="CD", sent_to=a_user, sent_from=closed_by, task=task, remarks=reason) |
254 create_notification(role="CD", sent_to=a_user, sent_from=closed_by, task=task, remarks=reason) |
255 |
255 |
256 for a_mentor in task.mentors.all(): |
256 for a_reviewer in task.reviewers.all(): |
257 create_notification(role="CD", sent_to=a_mentor, sent_from=closed_by, task=task, remarks=reason) |
257 create_notification(role="CD", sent_to=a_reviewer, sent_from=closed_by, task=task, remarks=reason) |
258 |
258 |
259 def deleteTask(task, deleted_by, reason=None): |
259 def deleteTask(task, deleted_by, reason=None): |
260 """ set the task status as DL |
260 """ set the task status as DL |
261 notify all its other viewers about the deleting of task. |
261 notify all its other viewers about the deleting of task. |
262 """ |
262 """ |
265 task.save() |
265 task.save() |
266 |
266 |
267 pending_requests = task.request_task.filter(is_replied=False,is_valid=True) |
267 pending_requests = task.request_task.filter(is_replied=False,is_valid=True) |
268 pending_requests.update(is_valid=False) |
268 pending_requests.update(is_valid=False) |
269 |
269 |
270 for a_mentor in task.mentors.exclude(id=deleted_by.id): |
270 for a_reviewer in task.reviewers.exclude(id=deleted_by.id): |
271 create_notification("DL", sent_to=a_mentor, sent_from=deleted_by, task=task, remarks=reason) |
271 create_notification("DL", sent_to=a_reviewer, sent_from=deleted_by, task=task, remarks=reason) |