taskapp/utilities/task.py
changeset 120 aad4e6065d85
child 155 52958289d81f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskapp/utilities/task.py	Fri Feb 26 16:15:58 2010 +0530
@@ -0,0 +1,35 @@
+from django.http import Http404
+from pytask.taskapp.models import Task, Map
+
+def getTask(tid):
+    """ retreive the task from database.
+    if the task has deps or subs, update its status correspondingly.
+    """
+
+    try:
+        task = Task.objects.get(id=tid)
+    except Task.DoesNotExist:
+        raise Http404
+    try:
+        mapobj = Map.objects.get(main=task)
+    except Map.DoesNotExist:
+        mapobj = Map()
+        mapobj.main = task
+        mapobj.save()
+        
+    task_subs = mapobj.subs.all()
+
+    if task.sub_type == "D":
+        task.deps, task.subs = task_subs, []
+    elif task.sub_type == "S":
+        task.subs, task.deps = task_subs, []
+
+    deps, subs = task.deps, task.subs
+    if deps and task.status in ["OP", "LO"]:
+        task.status = "OP" if all(map(lambda t:t.status=="CM",deps)) else "LO"
+    if subs and task.status in ["OP", "LO", "CM"]:
+        task.status = "CM" if all(map(lambda t:t.status=="CM",subs)) else "LO"
+
+    task.save()
+    return task
+