diff options
author | nishanth | 2010-02-26 13:22:13 +0530 |
---|---|---|
committer | nishanth | 2010-02-26 13:22:13 +0530 |
commit | 783a2c959f365588849b2af728aa7e9b0c19bf02 (patch) | |
tree | 0c110808e97f728ef0e2d624739ef8a07de6c0de /taskapp | |
parent | 8f9406383064921f8cf50bad0a6d4f1bd06f9cb4 (diff) | |
download | pytask-783a2c959f365588849b2af728aa7e9b0c19bf02.tar.gz pytask-783a2c959f365588849b2af728aa7e9b0c19bf02.tar.bz2 pytask-783a2c959f365588849b2af728aa7e9b0c19bf02.zip |
mark task as complete functionality is added.
Diffstat (limited to 'taskapp')
-rw-r--r-- | taskapp/events/task.py | 14 | ||||
-rw-r--r-- | taskapp/management/commands/seed_db.py | 2 | ||||
-rw-r--r-- | taskapp/views/task.py | 45 |
3 files changed, 60 insertions, 1 deletions
diff --git a/taskapp/events/task.py b/taskapp/events/task.py index 308ed0f..f9dae13 100644 --- a/taskapp/events/task.py +++ b/taskapp/events/task.py @@ -223,3 +223,17 @@ def addCredits(task, given_by, given_to, points): creditobj.points = points creditobj.given_time = datetime.now() creditobj.save() + +def completeTask(task, marked_by): + """ set the status of task as completed. + We dont have to inform parent tasks. + That part is taken care by getTask method. + """ + + task.status = "CM" + task.save() + + ## generate notification appropriately using marked_by + ## we also have to mark unread requests as invalid + + diff --git a/taskapp/management/commands/seed_db.py b/taskapp/management/commands/seed_db.py index 4e65065..6e57338 100644 --- a/taskapp/management/commands/seed_db.py +++ b/taskapp/management/commands/seed_db.py @@ -12,6 +12,8 @@ def seed_db(): """ a method to seed the database with random data """ defaultMentor = userEvents.createSuUser("admin", "admin@example.com", "123456", datetime.now(), "M") + mentor_profile = defaultMentor.get_profile() + userEvents.updateProfile(mentor_profile, {'rights':"AD"}) for i in range(1,10): diff --git a/taskapp/views/task.py b/taskapp/views/task.py index 443596a..b88a43e 100644 --- a/taskapp/views/task.py +++ b/taskapp/views/task.py @@ -5,7 +5,7 @@ from django.shortcuts import render_to_response, redirect from pytask.taskapp.models import User, Task, Comment, Claim, Credit 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 +from pytask.taskapp.events.task import createTask, reqMentor, publishTask, addSubTask, addDep, addClaim, assignTask, getTask, 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 @@ -470,3 +470,46 @@ def edit_task(request, tid): """ task = Task.objects.get(id=tid) + +def complete_task(request, tid): + + """ call the event called complete task. + and also pass it the current user to know who marked it as complete. + """ + + 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 + + claimed_users = task.claimed_users.all() + assigned_users = task.assigned_users.all() + + assign_credits_url = '/task/assigncredits/tid=%s'%task.id + task_assigned_credits = task.credit_set.all() + + + if is_mentor: + if task.status in ["OP", "WR"]: + + context = { + 'user':user, + 'task':task, + } + + if task_assigned_credits: + if request.method=="POST": + completeTask(task, user) + return redirect(task_url) + else: + return render_to_response('task/complete.html', context) + else: + return show_msg(user, "Nobody has been credited for doing this task.", assign_credits_url, "assign credits") + else: + return show_msg(user, "The task cannot be marked as completed 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") + |