# HG changeset patch # User nishanth # Date 1267170733 -19800 # Node ID 38793914921b96b304603fd9eca122bd77cd078d # Parent ea962d5fe99e15e704a7e6609a928f870179b36c mark task as complete functionality is added. diff -r ea962d5fe99e -r 38793914921b taskapp/events/task.py --- a/taskapp/events/task.py Fri Feb 26 11:34:17 2010 +0530 +++ b/taskapp/events/task.py Fri Feb 26 13:22:13 2010 +0530 @@ -223,3 +223,17 @@ 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 -r ea962d5fe99e -r 38793914921b taskapp/management/commands/seed_db.py --- a/taskapp/management/commands/seed_db.py Fri Feb 26 11:34:17 2010 +0530 +++ b/taskapp/management/commands/seed_db.py Fri Feb 26 13:22:13 2010 +0530 @@ -12,6 +12,8 @@ """ 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 -r ea962d5fe99e -r 38793914921b taskapp/views/task.py --- a/taskapp/views/task.py Fri Feb 26 11:34:17 2010 +0530 +++ b/taskapp/views/task.py Fri Feb 26 13:22:13 2010 +0530 @@ -5,7 +5,7 @@ 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 @@ """ 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") + diff -r ea962d5fe99e -r 38793914921b templates/task/assigncredits.html --- a/templates/task/assigncredits.html Fri Feb 26 11:34:17 2010 +0530 +++ b/templates/task/assigncredits.html Fri Feb 26 13:22:13 2010 +0530 @@ -11,6 +11,7 @@ {{credit.points}} pynts were given by {{credit.given_by.username}} to {{credit.given_to.username}} at {{credit.given_time.ctime}}
{% endfor %} + Mark task as complete. {% endif %}
diff -r ea962d5fe99e -r 38793914921b templates/task/complete.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/templates/task/complete.html Fri Feb 26 13:22:13 2010 +0530 @@ -0,0 +1,19 @@ +{% extends 'base.html' %} +{% block title %} + {{task.title}} +{% endblock %} +{% block content %} + Disclaimer:
+ Marking a task as complete implies the task has been completed successfully. It implies that all the required files + are available as attatchments in comments and all the users worked on this task were credited accordingly.

+ This action sets the task as completed and frees all the tasks depending on this task. Henceforth, the task can not be + commented upon or edited by anyone.

+ If there are pending requests for assigning credits, they will be deleted and admins will not be able to approve those requests. + Hence you cannot assign credits to anyone for this task anymore. You must wait for the requests to be approved by any of the admins. + If you would like to request for assigning more credits, return to assign credits page by clicking + here.

+ If you have double checked everything, confirm this action by clicking the button below. + + +
+{% endblock %} diff -r ea962d5fe99e -r 38793914921b templates/task/publish.html --- a/templates/task/publish.html Fri Feb 26 11:34:17 2010 +0530 +++ b/templates/task/publish.html Fri Feb 26 13:22:13 2010 +0530 @@ -5,8 +5,9 @@ {% block content %} Disclaimer:
Publishing a task will make the task visible to every one. - All the existing mentors will be removed from the list of mentors and only you will have the rights to edit and mentor the task. - But mentors can be added by sending them a request later on.

+ Only you will have mentoring rights on this task. But you can request another user also to mentor the task.
+ This action cannot be undone. +

Please confirm if you want to publish.
diff -r ea962d5fe99e -r 38793914921b templates/task/view.html --- a/templates/task/view.html Fri Feb 26 11:34:17 2010 +0530 +++ b/templates/task/view.html Fri Feb 26 13:22:13 2010 +0530 @@ -7,6 +7,7 @@

{{ task.title }}


created by {{ task.created_by.username }} on {{ task.creation_datetime.ctime }}
+ if task_editable ..
{% if is_mentor %} Edit task {% if can_publish %}|Publish task{% endif %} @@ -71,25 +72,32 @@
{{ task.desc }}

- status of task is {{task.status}}
- {% if assigned_users %} - Users working on this task: - {% for user in assigned_users %} - {{user.username}}| - {% endfor %} - {% if is_mentor %} - Remove an existing user -
+ {% ifnotequal task.status "CM" %} + {% if assigned_users %} + Users working on this task: + {% for user in assigned_users %} + {{user.username}}| + {% endfor %} + {% if is_mentor %} + Remove an existing user +
+ {% endif %} + {% else %} + There are no users currently working on this task.
+ {% endif %} + {% if can_assign_credits %} + Assign credits + {% endif %} + {% if not is_guest and task_claimable %} + View claims for this task.
{% endif %} {% else %} - There are no users currently working on this task.
- {% endif %} - {% if can_assign_credits %} - Assign credits - {% endif %} - {% if not is_guest and task_claimable %} - View claims for this task.
- {% endif %} + {% ifequal task.status "CD" %} + The task has been closed by .. due to .. + {% else %} + The task is complete. + {% endifequal %} + {% endifnotequal %} {% if comments %}
@@ -101,12 +109,14 @@ {% endif %} {% if not is_guest %} -
Add comment:
- - -
- -
+ {% ifnotequal task.status "CM" %} +
Add comment:
+
+ +
+ +
+ {% endifnotequal %} {% endif %} {% else %} You are not authorised to view this task. click here to return to browsing the tasks. diff -r ea962d5fe99e -r 38793914921b urls.py --- a/urls.py Fri Feb 26 11:34:17 2010 +0530 +++ b/urls.py Fri Feb 26 13:22:13 2010 +0530 @@ -36,6 +36,7 @@ (r'^task/addtask/tid=(\d+)$', taskViews.add_tasks), (r'^task/remtask/tid=(\d+)$', taskViews.remove_task), (r'^task/assigncredits/tid=(\d+)$', taskViews.assign_credits), + (r'^task/complete/tid=(\d+)$', taskViews.complete_task), (r'^admin/', include(admin.site.urls)),