taskapp/views/task.py
changeset 218 59107ce0a618
parent 217 307f699e6102
child 219 f04a1ec7a07f
equal deleted inserted replaced
217:307f699e6102 218:59107ce0a618
     3 from django.http import HttpResponse, Http404
     3 from django.http import HttpResponse, Http404
     4 from django.shortcuts import render_to_response, redirect
     4 from django.shortcuts import render_to_response, redirect
     5 
     5 
     6 from pytask.taskapp.models import User, Task, Comment, Request, Notification
     6 from pytask.taskapp.models import User, Task, Comment, Request, Notification
     7 from pytask.taskapp.utilities.task import getTask
     7 from pytask.taskapp.utilities.task import getTask
     8 from pytask.taskapp.forms.task import TaskCreateForm, AddMentorForm, AddTaskForm, ChoiceForm, AssignCreditForm, RemoveUserForm, EditTaskForm, ClaimTaskForm
     8 from pytask.taskapp.forms.task import TaskCreateForm, AddReviewerForm, AddTaskForm, ChoiceForm, AssignCreditForm, RemoveUserForm, EditTaskForm, ClaimTaskForm
     9 from pytask.taskapp.events.task import createTask, reqMentor, publishTask, addSubTask, addDep, addClaim, assignTask, updateTask, removeTask, removeUser, assignCredits, completeTask, closeTask, addMentor, deleteTask
     9 from pytask.taskapp.events.task import createTask, reqReviewer, publishTask, addSubTask, addDep, addClaim, assignTask, updateTask, removeTask, removeUser, assignCredits, completeTask, closeTask, addReviewer, deleteTask
    10 from pytask.taskapp.views.user import show_msg
    10 from pytask.taskapp.views.user import show_msg
    11 from pytask.taskapp.utilities.user import get_user
    11 from pytask.taskapp.utilities.user import get_user
    12 
    12 
    13 ## everywhere if there is no task, django should display 500 message.. but take care of that in sensitive views like add mentor and all
    13 ## everywhere if there is no task, django should display 500 message.. but take care of that in sensitive views like add reviewer and all
    14 ## do not create su user thro syncdb
    14 ## do not create su user thro syncdb
    15 
    15 
    16 def browse_tasks(request):
    16 def browse_tasks(request):
    17     """ display all the tasks """
    17     """ display all the tasks """
    18     
    18     
    38                'task_list':task_list,
    38                'task_list':task_list,
    39                }
    39                }
    40     return render_to_response('task/browse.html', context)
    40     return render_to_response('task/browse.html', context)
    41 
    41 
    42 def publish_task(request, tid):
    42 def publish_task(request, tid):
    43     """ check if user is the mentor and also if the task status is UP.
    43     """ check if user is the reviewer and also if the task status is UP.
    44     """
    44     """
    45 
    45 
    46     task_url = "/task/view/tid=%s"%tid
    46     task_url = "/task/view/tid=%s"%tid
    47     
    47     
    48     user = get_user(request.user) if request.user.is_authenticated() else request.user
    48     user = get_user(request.user) if request.user.is_authenticated() else request.user
    49     task = getTask(tid)
    49     task = getTask(tid)
    50 
    50 
    51     is_guest = True if not user.is_authenticated() else False
    51     is_guest = True if not user.is_authenticated() else False
    52     is_mentor = True if user in task.mentors.all() else False
    52     is_reviewer = True if user in task.reviewers.all() else False
    53 
    53 
    54     if user == task.created_by:
    54     if user == task.created_by:
    55         context = {
    55         context = {
    56             'user':user,
    56             'user':user,
    57         }
    57         }
    77     task = getTask(tid)
    77     task = getTask(tid)
    78 
    78 
    79     if task.status == "DL":
    79     if task.status == "DL":
    80         return show_msg(user, 'This task no longer exists', '/task/browse/','browse the tasks')
    80         return show_msg(user, 'This task no longer exists', '/task/browse/','browse the tasks')
    81     comments = task.comment_set.filter(is_deleted=False).order_by('creation_datetime')
    81     comments = task.comment_set.filter(is_deleted=False).order_by('creation_datetime')
    82     mentors = task.mentors.all()
    82     reviewers = task.reviewers.all()
    83 
    83 
    84     deps, subs = task.deps, task.subs
    84     deps, subs = task.deps, task.subs
    85     
    85     
    86     is_guest = True if not user.is_authenticated() else False
    86     is_guest = True if not user.is_authenticated() else False
    87     is_mentor = True if user in task.mentors.all() else False
    87     is_reviewer = True if user in task.reviewers.all() else False
    88     context = {'user':user,
    88     context = {'user':user,
    89                'task':task,
    89                'task':task,
    90                'comments':comments,
    90                'comments':comments,
    91                'mentors':mentors,
    91                'reviewers':reviewers,
    92                'subs':subs,
    92                'subs':subs,
    93                'deps':deps,
    93                'deps':deps,
    94                'is_guest':is_guest,
    94                'is_guest':is_guest,
    95                'is_mentor':is_mentor,
    95                'is_reviewer':is_reviewer,
    96               }
    96               }
    97 
    97 
    98     claimed_users = task.claimed_users.all()
    98     claimed_users = task.claimed_users.all()
    99 
    99 
   100 
   100 
   101     is_requested_mentor = True if user.is_authenticated() and user.request_sent_to.filter(is_valid=True,is_replied=False,role="MT",task=task) else False
   101     is_requested_reviewer = True if user.is_authenticated() and user.request_sent_to.filter(is_valid=True,is_replied=False,role="MT",task=task) else False
   102     task_viewable = True if ( task.status != "UP" ) or is_mentor or is_requested_mentor else False
   102     task_viewable = True if ( task.status != "UP" ) or is_reviewer or is_requested_reviewer else False
   103     if not task_viewable:
   103     if not task_viewable:
   104         return show_msg(user, "You are not authorised to view this task", "/task/browse/", "browse the tasks")
   104         return show_msg(user, "You are not authorised to view this task", "/task/browse/", "browse the tasks")
   105 
   105 
   106     context['is_requested_mentor'] = is_requested_mentor
   106     context['is_requested_reviewer'] = is_requested_reviewer
   107 
   107 
   108     context['can_publish'] = True if task.status == "UP" and user == task.created_by else False
   108     context['can_publish'] = True if task.status == "UP" and user == task.created_by else False
   109     context['can_edit'] = True if task.status == "UP" and is_mentor else False
   109     context['can_edit'] = True if task.status == "UP" and is_reviewer else False
   110     context['can_close'] = True if task.status not in ["UP", "CD", "CM"] and is_mentor else False
   110     context['can_close'] = True if task.status not in ["UP", "CD", "CM"] and is_reviewer else False
   111     context['can_delete'] = True if task.status == "UP" and user == task.created_by else False
   111     context['can_delete'] = True if task.status == "UP" and user == task.created_by else False
   112 
   112 
   113     context['can_mod_mentors'] = True if task.status in ["UP", "OP", "LO", "WR"] and is_mentor else False
   113     context['can_mod_reviewers'] = True if task.status in ["UP", "OP", "LO", "WR"] and is_reviewer else False
   114     context['can_mod_tasks'] = True if task.status in ["UP", "OP", "LO"] and is_mentor else False
   114     context['can_mod_tasks'] = True if task.status in ["UP", "OP", "LO"] and is_reviewer else False
   115 
   115 
   116     context['can_assign_credits'] = True if task.status in ["OP", "WR"] and is_mentor else False
   116     context['can_assign_credits'] = True if task.status in ["OP", "WR"] and is_reviewer else False
   117     context['task_claimable'] = True if task.status in ["OP", "WR"] and not is_guest else False
   117     context['task_claimable'] = True if task.status in ["OP", "WR"] and not is_guest else False
   118 
   118 
   119     if task.status == "CD":
   119     if task.status == "CD":
   120         context['closing_notification'] =  Notification.objects.filter(task=task,role="CD")[0]
   120         context['closing_notification'] =  Notification.objects.filter(task=task,role="CD")[0]
   121     elif task.status == "CM":
   121     elif task.status == "CM":
   158                     desc = data['desc']
   158                     desc = data['desc']
   159                     credits = data['credits']
   159                     credits = data['credits']
   160                     #publish = data['publish'] # just in case if we have to show the option
   160                     #publish = data['publish'] # just in case if we have to show the option
   161                     task = createTask(title,desc,user,credits)
   161                     task = createTask(title,desc,user,credits)
   162                     
   162                     
   163                     addMentor(task, user)
   163                     addReviewer(task, user)
   164                     updateTask(task,tags_field=data['tags_field'])
   164                     updateTask(task,tags_field=data['tags_field'])
   165                     # if publish: publishTask(task)    
   165                     # if publish: publishTask(task)    
   166                     task_url = '/task/view/tid=%s'%task.id
   166                     task_url = '/task/view/tid=%s'%task.id
   167                     return redirect(task_url)
   167                     return redirect(task_url)
   168                 else:
   168                 else:
   173         else:
   173         else:
   174             return show_msg(user, 'You are not authorised to create a task.')
   174             return show_msg(user, 'You are not authorised to create a task.')
   175     else:
   175     else:
   176         return show_msg(user, 'You are not authorised to create a task.', "/", "home page")
   176         return show_msg(user, 'You are not authorised to create a task.', "/", "home page")
   177         
   177         
   178 def add_mentor(request, tid):
   178 def add_reviewer(request, tid):
   179     """ check if the current user has the rights to edit the task and add him.
   179     """ check if the current user has the rights to edit the task and add him.
   180     if user is not authenticated, redirect him to concerned page. """
   180     if user is not authenticated, redirect him to concerned page. """
   181     
   181     
   182     task_url = "/task/view/tid=%s"%tid
   182     task_url = "/task/view/tid=%s"%tid
   183     
   183     
   185     task = getTask(tid)
   185     task = getTask(tid)
   186     errors = []
   186     errors = []
   187     
   187     
   188     is_guest = True if not user.is_authenticated() else False
   188     is_guest = True if not user.is_authenticated() else False
   189     
   189     
   190     if (not is_guest) and user in task.mentors.all():
   190     if (not is_guest) and user in task.reviewers.all():
   191 
   191 
   192         pending_requests = Request.objects.filter(is_replied=False,is_valid=True,role="MT",task=task).order_by('creation_date').reverse()
   192         pending_requests = Request.objects.filter(is_replied=False,is_valid=True,role="MT",task=task).order_by('creation_date').reverse()
   193         user_pending_requests = pending_requests.filter(sent_by=user)
   193         user_pending_requests = pending_requests.filter(sent_by=user)
   194 
   194 
   195         ## now iam going for a brute force method
   195         ## now iam going for a brute force method
   196         user_list = list(User.objects.filter(is_active=True))
   196         user_list = list(User.objects.filter(is_active=True))
   197         for mentor in task.mentors.all():
   197         for reviewer in task.reviewers.all():
   198             user_list.remove(mentor)
   198             user_list.remove(reviewer)
   199             
   199             
   200         for a_user in task.claimed_users.all():
   200         for a_user in task.claimed_users.all():
   201             user_list.remove(a_user)
   201             user_list.remove(a_user)
   202 
   202 
   203         for a_user in task.assigned_users.all():
   203         for a_user in task.assigned_users.all():
   204             user_list.remove(a_user)
   204             user_list.remove(a_user)
   205 
   205 
   206         for req in user_pending_requests:
   206         for req in user_pending_requests:
   207             user_list.remove(req.sent_to.all()[0])
   207             user_list.remove(req.sent_to.all()[0])
   208             
   208             
   209         non_mentors = ((_.id, _.username) for _ in user_list)
   209         non_reviewers = ((_.id, _.username) for _ in user_list)
   210         non_mentor_ids = [ str(a_user.id) for a_user in user_list ]
   210         non_reviewer_ids = [ str(a_user.id) for a_user in user_list ]
   211         ## code till must be made elegant and not brute force like above
   211         ## code till must be made elegant and not brute force like above
   212 
   212 
   213         form = AddMentorForm(non_mentors)
   213         form = AddReviewerForm(non_reviewers)
   214 
   214 
   215         context = {
   215         context = {
   216             'user':user,
   216             'user':user,
   217             'task':task,
   217             'task':task,
   218             'pending_requests':pending_requests,
   218             'pending_requests':pending_requests,
   219             'form':form,
   219             'form':form,
   220         }
   220         }
   221 
   221 
   222         if request.method == "POST":
   222         if request.method == "POST":
   223             data = request.POST
   223             data = request.POST
   224             uid = data.get('mentor', None)
   224             uid = data.get('reviewer', None)
   225             if uid in non_mentor_ids:
   225             if uid in non_reviewer_ids:
   226                 new_mentor = User.objects.get(id=int(uid))
   226                 new_reviewer = User.objects.get(id=int(uid))
   227                 reqMentor(task, new_mentor, user)
   227                 reqReviewer(task, new_reviewer, user)
   228                 return redirect('/task/addmentor/tid=%s'%task.id)
   228                 return redirect('/task/addreviewer/tid=%s'%task.id)
   229             else:
   229             else:
   230                 ## bogus post request
   230                 ## bogus post request
   231                 raise Http404
   231                 raise Http404
   232         else:
   232         else:
   233             return render_to_response('task/addmentor.html', context)
   233             return render_to_response('task/addreviewer.html', context)
   234     else:
   234     else:
   235         return show_msg(user, 'You are not authorised to add mentors for this task', task_url, 'view the task')
   235         return show_msg(user, 'You are not authorised to add reviewers for this task', task_url, 'view the task')
   236     
   236     
   237 def add_tasks(request, tid):
   237 def add_tasks(request, tid):
   238     """ first display tasks which can be subtasks for the task and do the rest.
   238     """ first display tasks which can be subtasks for the task and do the rest.
   239     """
   239     """
   240     
   240     
   255     task_choices = [ (_.id,_.title) for _ in valid_tasks ]
   255     task_choices = [ (_.id,_.title) for _ in valid_tasks ]
   256     errors = []
   256     errors = []
   257     
   257     
   258     is_guest = True if not user.is_authenticated() else False
   258     is_guest = True if not user.is_authenticated() else False
   259     
   259     
   260     if (not is_guest) and user in task.mentors.all():
   260     if (not is_guest) and user in task.reviewers.all():
   261         if task.status in ["UP", "OP", "LO"]:
   261         if task.status in ["UP", "OP", "LO"]:
   262             form = AddTaskForm(task_choices, is_plain)
   262             form = AddTaskForm(task_choices, is_plain)
   263             if request.method == "POST":
   263             if request.method == "POST":
   264                 ## first decide if adding subs and deps can be in same page
   264                 ## first decide if adding subs and deps can be in same page
   265                 ## only exclude tasks with status deleted
   265                 ## only exclude tasks with status deleted
   302     
   302     
   303     user = get_user(request.user) if request.user.is_authenticated() else request.user
   303     user = get_user(request.user) if request.user.is_authenticated() else request.user
   304     task = getTask(tid)
   304     task = getTask(tid)
   305 
   305 
   306     is_guest = True if not user.is_authenticated() else False
   306     is_guest = True if not user.is_authenticated() else False
   307     if (not is_guest) and user in task.mentors.all():
   307     if (not is_guest) and user in task.reviewers.all():
   308 
   308 
   309         if task.status in ["UP", "LO", "OP"]:
   309         if task.status in ["UP", "LO", "OP"]:
   310             
   310             
   311             deps, subs = task.deps, task.subs
   311             deps, subs = task.deps, task.subs
   312             task_list = deps if task.sub_type == "D" else subs
   312             task_list = deps if task.sub_type == "D" else subs
   360     
   360     
   361     #claims = task.notifications_task.filter(role="CL",sent_to=task.created_by) 
   361     #claims = task.notifications_task.filter(role="CL",sent_to=task.created_by) 
   362     # this is what the next line should be when i re sync the db
   362     # this is what the next line should be when i re sync the db
   363     claims = Notification.objects.filter(task=task, sent_to=task.created_by, role="CL")
   363     claims = Notification.objects.filter(task=task, sent_to=task.created_by, role="CL")
   364 
   364 
   365     mentors = task.mentors.all()
   365     reviewers = task.reviewers.all()
   366     claimed_users = task.claimed_users.all()
   366     claimed_users = task.claimed_users.all()
   367     assigned_users = task.assigned_users.all()
   367     assigned_users = task.assigned_users.all()
   368     
   368     
   369     is_guest = True if not user.is_authenticated() else False
   369     is_guest = True if not user.is_authenticated() else False
   370     is_mentor = True if user in mentors else False
   370     is_reviewer = True if user in reviewers else False
   371 
   371 
   372     task_claimable = True if task.status in ["OP", "WR"] else False
   372     task_claimable = True if task.status in ["OP", "WR"] else False
   373     user_can_claim = True if  task_claimable and not ( is_guest or is_mentor ) and ( user not in claimed_users ) and ( user not in assigned_users )  else False
   373     user_can_claim = True if  task_claimable and not ( is_guest or is_reviewer ) and ( user not in claimed_users ) and ( user not in assigned_users )  else False
   374     task_claimed = True if claimed_users else False
   374     task_claimed = True if claimed_users else False
   375     
   375     
   376     context = {'user':user,
   376     context = {'user':user,
   377                'is_mentor':is_mentor,
   377                'is_reviewer':is_reviewer,
   378                'task':task,
   378                'task':task,
   379                'claims':claims,
   379                'claims':claims,
   380                'user_can_claim':user_can_claim,
   380                'user_can_claim':user_can_claim,
   381                'task_claimable':task_claimable,
   381                'task_claimable':task_claimable,
   382                'task_claimed':task_claimed,
   382                'task_claimed':task_claimed,
   407     
   407     
   408     user = get_user(request.user) if request.user.is_authenticated() else request.user
   408     user = get_user(request.user) if request.user.is_authenticated() else request.user
   409     task = getTask(tid)
   409     task = getTask(tid)
   410     
   410     
   411     is_guest = True if not user.is_authenticated() else False
   411     is_guest = True if not user.is_authenticated() else False
   412     is_mentor = True if user in task.mentors.all() else False
   412     is_reviewer = True if user in task.reviewers.all() else False
   413 
   413 
   414     if (not is_guest) and is_mentor:
   414     if (not is_guest) and is_reviewer:
   415 
   415 
   416         assigned_users = task.assigned_users.all()
   416         assigned_users = task.assigned_users.all()
   417         choices = [ (_.id,_.username) for _ in assigned_users ]
   417         choices = [ (_.id,_.username) for _ in assigned_users ]
   418         context = {
   418         context = {
   419             'user':user,
   419             'user':user,
   455     
   455     
   456     user = get_user(request.user) if request.user.is_authenticated() else request.user
   456     user = get_user(request.user) if request.user.is_authenticated() else request.user
   457     task = getTask(tid)
   457     task = getTask(tid)
   458     
   458     
   459     is_guest = True if not user.is_authenticated() else False
   459     is_guest = True if not user.is_authenticated() else False
   460     is_mentor = True if user in task.mentors.all() else False
   460     is_reviewer = True if user in task.reviewers.all() else False
   461 
   461 
   462     claimed_users = task.claimed_users.all()
   462     claimed_users = task.claimed_users.all()
   463     assigned_users = task.assigned_users.all()
   463     assigned_users = task.assigned_users.all()
   464 
   464 
   465     task_claimed = True if claimed_users else False
   465     task_claimed = True if claimed_users else False
   466     
   466     
   467     if (not is_guest) and is_mentor:
   467     if (not is_guest) and is_reviewer:
   468         if task.status in ["OP", "WR"]:
   468         if task.status in ["OP", "WR"]:
   469             if task_claimed:
   469             if task_claimed:
   470                 user_list = ((user.id,user.username) for user in claimed_users)
   470                 user_list = ((user.id,user.username) for user in claimed_users)
   471                 form = ChoiceForm(user_list)
   471                 form = ChoiceForm(user_list)
   472         
   472         
   485             return show_msg(user, "The task cannot be assigned to users at this stage", task_url, 'view the task')
   485             return show_msg(user, "The task cannot be assigned to users at this stage", task_url, 'view the task')
   486     else:
   486     else:
   487         return show_msg(user, 'You are not authorised to perform this action', task_url, 'view the task')
   487         return show_msg(user, 'You are not authorised to perform this action', task_url, 'view the task')
   488 
   488 
   489 def assign_credits(request, tid):
   489 def assign_credits(request, tid):
   490     """ Check if the user is a mentor and credits can be assigned.
   490     """ Check if the user is a reviewer and credits can be assigned.
   491     Then display all the approved credits.
   491     Then display all the approved credits.
   492     Then see if mentor can assign credits to users also or only mentors.
   492     Then see if reviewer can assign credits to users also or only reviewers.
   493     Then put up a form for mentor to assign credits accordingly.
   493     Then put up a form for reviewer to assign credits accordingly.
   494     """
   494     """
   495     
   495     
   496     task_url = "/task/view/tid=%s"%tid
   496     task_url = "/task/view/tid=%s"%tid
   497     
   497     
   498     user = get_user(request.user) if request.user.is_authenticated() else request.user
   498     user = get_user(request.user) if request.user.is_authenticated() else request.user
   499     task = getTask(tid)
   499     task = getTask(tid)
   500 
   500 
   501     ## the moment we see that user had requested credits, it means he had worked and hence we change the status to WR
   501     ## the moment we see that user had requested credits, it means he had worked and hence we change the status to WR
   502     ## we have to discuss on this since, credits may also be given to mentor
   502     ## we have to discuss on this since, credits may also be given to reviewer
   503     task.status = "WR"
   503     task.status = "WR"
   504     task.save()
   504     task.save()
   505 
   505 
   506     is_guest = True if not user.is_authenticated() else False
   506     is_guest = True if not user.is_authenticated() else False
   507     is_mentor = True if (not is_guest) and user in task.mentors.all() else False
   507     is_reviewer = True if (not is_guest) and user in task.reviewers.all() else False
   508 
   508 
   509     if is_mentor:
   509     if is_reviewer:
   510         if task.status in ["OP", "WR"]:
   510         if task.status in ["OP", "WR"]:
   511             choices = [(_.id,_.username) for _ in task.mentors.all()]
   511             choices = [(_.id,_.username) for _ in task.reviewers.all()]
   512             if task.status == "WR":
   512             if task.status == "WR":
   513                 choices.extend([(_.id, _.username) for _  in task.assigned_users.all() ])
   513                 choices.extend([(_.id, _.username) for _  in task.assigned_users.all() ])
   514             prev_credits = task.request_task.filter(role="PY",is_valid=True,is_replied=True,reply=True).count()
   514             prev_credits = task.request_task.filter(role="PY",is_valid=True,is_replied=True,reply=True).count()
   515             credit_requests = task.request_task.filter(role="PY",is_valid=True).order_by('creation_date').reverse()
   515             credit_requests = task.request_task.filter(role="PY",is_valid=True).order_by('creation_date').reverse()
   516             form = AssignCreditForm(choices)
   516             form = AssignCreditForm(choices)
   551     task = getTask(tid)
   551     task = getTask(tid)
   552 
   552 
   553     task_url = "/task/view/tid=%s"%tid
   553     task_url = "/task/view/tid=%s"%tid
   554     user = get_user(request.user) if request.user.is_authenticated() else request.user
   554     user = get_user(request.user) if request.user.is_authenticated() else request.user
   555 
   555 
   556     is_mentor = True if user in task.mentors.all() else False
   556     is_reviewer = True if user in task.reviewers.all() else False
   557     can_edit = True if is_mentor and task.status == "UP" else False
   557     can_edit = True if is_reviewer and task.status == "UP" else False
   558 
   558 
   559     if can_edit:
   559     if can_edit:
   560         form = EditTaskForm(instance=task)
   560         form = EditTaskForm(instance=task)
   561         if request.method=="POST":
   561         if request.method=="POST":
   562             data = request.POST
   562             data = request.POST
   580     
   580     
   581     user = get_user(request.user) if request.user.is_authenticated() else request.user
   581     user = get_user(request.user) if request.user.is_authenticated() else request.user
   582     task = getTask(tid)
   582     task = getTask(tid)
   583     
   583     
   584     is_guest = True if not user.is_authenticated() else False
   584     is_guest = True if not user.is_authenticated() else False
   585     is_mentor = True if user in task.mentors.all() else False
   585     is_reviewer = True if user in task.reviewers.all() else False
   586 
   586 
   587     claimed_users = task.claimed_users.all()
   587     claimed_users = task.claimed_users.all()
   588     assigned_users = task.assigned_users.all()
   588     assigned_users = task.assigned_users.all()
   589 
   589 
   590     assign_credits_url = '/task/assigncredits/tid=%s'%task.id
   590     assign_credits_url = '/task/assigncredits/tid=%s'%task.id
   591     task_assigned_credits = task.credit_set.all()
   591     task_assigned_credits = task.credit_set.all()
   592 
   592 
   593 
   593 
   594     if is_mentor:
   594     if is_reviewer:
   595         if task.status in ["OP", "WR"]:
   595         if task.status in ["OP", "WR"]:
   596 
   596 
   597             context = {
   597             context = {
   598                 'user':user,
   598                 'user':user,
   599                 'task':task,
   599                 'task':task,
   621     
   621     
   622     user = get_user(request.user) if request.user.is_authenticated() else request.user
   622     user = get_user(request.user) if request.user.is_authenticated() else request.user
   623     task = getTask(tid)
   623     task = getTask(tid)
   624     
   624     
   625     is_guest = True if not user.is_authenticated() else False
   625     is_guest = True if not user.is_authenticated() else False
   626     is_mentor = True if user in task.mentors.all() else False
   626     is_reviewer = True if user in task.reviewers.all() else False
   627 
   627 
   628     if is_mentor:
   628     if is_reviewer:
   629 
   629 
   630         context = {
   630         context = {
   631             'user':user,
   631             'user':user,
   632             'task':task,
   632             'task':task,
   633         }
   633         }
   648     else:
   648     else:
   649         return show_msg(user, "You are not authorised to do this", task_url, "view the task")
   649         return show_msg(user, "You are not authorised to do this", task_url, "view the task")
   650 
   650 
   651 def delete_task(request, tid):
   651 def delete_task(request, tid):
   652     """ mark the task status as DL.
   652     """ mark the task status as DL.
   653     take a reason from the user and pass on to all the other mentors.
   653     take a reason from the user and pass on to all the other reviewers.
   654     """
   654     """
   655 
   655 
   656     task_url = "/task/view/tid=%s"%tid
   656     task_url = "/task/view/tid=%s"%tid
   657 
   657 
   658     task = getTask(tid)
   658     task = getTask(tid)