summaryrefslogtreecommitdiff
path: root/taskapp
diff options
context:
space:
mode:
Diffstat (limited to 'taskapp')
-rw-r--r--taskapp/events/task.py29
-rw-r--r--taskapp/utilities/task.py35
-rw-r--r--taskapp/views/task.py3
3 files changed, 38 insertions, 29 deletions
diff --git a/taskapp/events/task.py b/taskapp/events/task.py
index b60fb20..417d94d 100644
--- a/taskapp/events/task.py
+++ b/taskapp/events/task.py
@@ -1,5 +1,6 @@
from datetime import datetime
from pytask.taskapp.models import Profile, Task, Comment, Credit, Claim, Map
+from pytask.taskapp.utilities.task import getTask
from pytask.taskapp.utilities.request import create_request
from pytask.taskapp.utilities.helper import get_key
@@ -150,34 +151,6 @@ def assignTask(task, user):
task.status = "WR"
task.save()
-def getTask(tid):
- """ retreive the task from database.
- if the task has deps or subs, update its status correspondingly.
- """
-
- task = Task.objects.get(id=tid)
- 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
def updateTask(task, title=None, desc=None, credits=None, tags_field=None):
""" update the property accordingly.
diff --git a/taskapp/utilities/task.py b/taskapp/utilities/task.py
new file mode 100644
index 0000000..b5da99e
--- /dev/null
+++ b/taskapp/utilities/task.py
@@ -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
+
diff --git a/taskapp/views/task.py b/taskapp/views/task.py
index b88a43e..c85d809 100644
--- a/taskapp/views/task.py
+++ b/taskapp/views/task.py
@@ -4,8 +4,9 @@ from django.http import HttpResponse
from django.shortcuts import render_to_response, redirect
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, getTask, updateTask, removeTask, removeUser, assignCredits, completeTask
+from pytask.taskapp.events.task import createTask, reqMentor, publishTask, addSubTask, addDep, addClaim, assignTask, updateTask, removeTask, removeUser, assignCredits, completeTask
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