taskapp/utilities/task.py
author nishanth
Sun, 28 Feb 2010 03:31:40 +0530
changeset 137 e56b95298254
parent 120 aad4e6065d85
child 155 52958289d81f
permissions -rw-r--r--
now requests in sidebar shows the no.of unread notifications.

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