taskapp/events/task.py
changeset 218 59107ce0a618
parent 205 0c317f68df49
child 219 f04a1ec7a07f
equal deleted inserted replaced
217:307f699e6102 218:59107ce0a618
     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)