# HG changeset patch
# User nishanth
# Date 1267211930 -19800
# Node ID e5377fdaf11094866ea661d6210a6143ba13ec50
# Parent d3cfceb8e120c8721343c2a5211c0110e4e3d942
added the functionality to close a task.
diff -r d3cfceb8e120 -r e5377fdaf110 taskapp/events/task.py
--- a/taskapp/events/task.py Fri Feb 26 23:22:23 2010 +0530
+++ b/taskapp/events/task.py Sat Feb 27 00:48:50 2010 +0530
@@ -222,9 +222,23 @@
task.status = "CM"
task.save()
- task.request_task.filter(is_replied=False).update(is_valid=False)
+ pending_requests = task.request_task.filter(is_replied=False)
+ pending_requests.update(is_valid=False)
## generate notification appropriately using marked_by
## we also have to mark unread requests as invalid
+def closeTask(task, closed_by):
+ """ set the status of task as CD.
+ generate notifications accordingly.
+ """
+ task.status = "CD"
+ task.save()
+
+ pending_requests = task.request_task.filter(is_replied=False)
+ pending_requests.update(is_valid=False)
+
+ ## generate notifications here
+
+
diff -r d3cfceb8e120 -r e5377fdaf110 taskapp/views/task.py
--- a/taskapp/views/task.py Fri Feb 26 23:22:23 2010 +0530
+++ b/taskapp/views/task.py Sat Feb 27 00:48:50 2010 +0530
@@ -6,7 +6,7 @@
from pytask.taskapp.models import User, Task, Comment, Claim, Credit
from pytask.taskapp.utilities.task import getTask
from pytask.taskapp.forms.task import TaskCreateForm, AddMentorForm, AddTaskForm, ChoiceForm, AssignCreditForm, RemoveUserForm
-from pytask.taskapp.events.task import createTask, reqMentor, publishTask, addSubTask, addDep, addClaim, assignTask, updateTask, removeTask, removeUser, assignCredits, completeTask
+from pytask.taskapp.events.task import createTask, reqMentor, publishTask, addSubTask, addDep, addClaim, assignTask, updateTask, removeTask, removeUser, assignCredits, completeTask, closeTask
from pytask.taskapp.views.user import show_msg
## everywhere if there is no task, django should display 500 message.. but take care of that in sensitive views like add mentor and all
@@ -83,7 +83,7 @@
}
context['can_publish'] = True if task.status == "UP" and user == task.created_by else False
- context['task_viewable'] = True if ( task.status not in ["UP", "DL"] ) or is_mentor else False
+ context['task_viewable'] = True if ( task.status != "DL" ) or is_mentor else False
context['task_claimable'] = True if task.status in ["OP", "WR"] else False
context['can_mod_mentors'] = True if task.status in ["UP", "OP", "LO", "WR"] and is_mentor else False
@@ -513,3 +513,38 @@
else:
return show_msg(user, "You are not authorised to do this", task_url, "view the task")
+def close_task(request, tid):
+ """ task can be closed only if task is published.
+ call the event close task if everything is fine.
+ """
+
+ task_url = "/task/view/tid=%s"%tid
+
+ user = request.user
+ task = getTask(tid)
+
+ is_guest = True if not user.is_authenticated() else False
+ is_mentor = True if user in task.mentors.all() else False
+
+ if is_mentor:
+
+ context = {
+ 'user':user,
+ 'task':task,
+ }
+
+ if not task.status in ["UP", "CD", "DL", "CM"]:
+ if request.method == "POST":
+ data = request.POST
+ if not data.get("reason", None):
+ context["error"] = "Please enter a reason for closing the task"
+ return render_to_response('task/close.html', context)
+ else:
+ closeTask(task, user)
+ return show_msg(user, "The task has been closed.", task_url, "view the task.")
+ else:
+ return render_to_response('task/close.html', context)
+ else:
+ return show_msg(user, "The task is already closed or the task cannot be closed at this stage", task_url, "view the task")
+ else:
+ return show_msg(user, "You are not authorised to do this", task_url, "view the task")
diff -r d3cfceb8e120 -r e5377fdaf110 templates/task/close.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/task/close.html Sat Feb 27 00:48:50 2010 +0530
@@ -0,0 +1,22 @@
+{% extends 'base.html' %}
+{% block title %}
+ {{task.title}}
+{% endblock %}
+{% block content %}
+ Disclaimer:
+ If a task is closed, it implies the task is no more a valid task. The task cannot be edited or added subtasks/dependencies.
+ Please click here to return to assign credits page if you want to request assign of credits.
+ You cannot request assign of credits and all the pending requests on this task will be made invalid when a task is closed.
+
+ The only difference between marking a task as closed and completed is that the tasks depending on completed tasks will be free to be claimed
+ and worked on. This action cannot be undone. If you have double checked every thing, please provide a reason and close the task.
+
+
+ {% if error %}
+ Please provide a reason for closing the task.
+ {% endif %}
+