--- a/pytask/taskapp/views.py Sun Jan 09 00:53:11 2011 +0530
+++ b/pytask/taskapp/views.py Sun Jan 09 00:53:51 2011 +0530
@@ -10,8 +10,9 @@
from pytask.utils import make_key
from pytask.views import show_msg
-from pytask.taskapp.models import Task
-from pytask.taskapp.forms import CreateTaskForm, EditTaskForm
+from pytask.taskapp.models import Task, TaskComment
+from pytask.taskapp.forms import CreateTaskForm, EditTaskForm, TaskCommentForm
+from pytask.taskapp.utils import getTask
from pytask.profile.utils import get_notification
@@ -52,3 +53,85 @@
return render_to_response('task/create.html', context)
else:
return show_msg(user, 'You are not authorised to create a task.')
+
+def view_task(request, tid):
+ """ get the task depending on its tid and display accordingly if it is a get.
+ check for authentication and add a comment if it is a post request.
+ """
+
+ task_url = "/task/view/tid=%s"%tid
+ task = getTask(tid)
+
+ user = request.user
+ profile = user.get_profile()
+
+ context = {"user": user,
+ "profile": profile,
+ "task": task,
+ }
+
+ context.update(csrf(request))
+
+ if task.status == "DL":
+ return show_msg(user, 'This task no longer exists', '/task/browse/','browse the tasks')
+
+ comments = task.comments.filter(is_deleted=False).order_by('comment_datetime')
+ reviewers = task.reviewers.all()
+
+ is_guest = True if not user.is_authenticated() else False
+ is_reviewer = True if user in task.reviewers.all() else False
+
+ context.update({'is_guest':is_guest,
+ 'is_reviewer':is_reviewer,
+ 'comments':comments,
+ 'reviewers':reviewers,
+ })
+
+ claimed_users = task.claimed_users.all()
+
+
+# is_requested_reviewer = True if user.is_authenticated() and user.request_sent_to.filter(is_valid=True,is_replied=False,role="MT",task=task) else False
+# task_viewable = True if ( task.status != "UP" ) or is_reviewer or is_requested_reviewer else False
+# if not task_viewable:
+# return show_msg(user, "You are not authorised to view this task", "/task/browse/", "browse the tasks")
+
+# context['is_requested_reviewer'] = is_requested_reviewer
+
+ context['can_publish'] = True if task.status == "UP" and user == task.created_by else False
+ context['can_edit'] = True if task.status == "UP" and is_reviewer else False
+ context['can_close'] = True if task.status not in ["UP", "CD", "CM"] and is_reviewer else False
+ context['can_delete'] = True if task.status == "UP" and user == task.created_by else False
+
+ context['can_mod_reviewers'] = True if task.status in ["UP", "OP", "LO", "WR"] and is_reviewer else False
+ context['can_mod_tasks'] = True if task.status in ["UP", "OP", "LO"] and is_reviewer else False
+
+ context['can_assign_pynts'] = True if task.status in ["OP", "WR"] and is_reviewer else False
+ context['task_claimable'] = True if task.status in ["OP", "WR"] and not is_guest else False
+
+# if task.status == "CD":
+# context['closing_notification'] = Notification.objects.filter(task=task,role="CD")[0]
+# elif task.status == "CM":
+# context['completed_notification'] = Notifications.objects.filter(task=task,role="CM")[0]
+# elif task.status == "WR":
+# context['assigned_users'] = task.assigned_users.all()
+
+ if request.method == 'POST':
+ if not is_guest:
+ form = TaskCommentForm(request.POST)
+ if form.is_valid():
+ data = form.cleaned_data['data']
+ new_comment = TaskComment(task=task, data=data,
+ uniq_key=make_key(TaskComment),
+ commented_by=user, comment_datetime=datetime.now())
+ new_comment.save()
+ return redirect(task_url)
+ else:
+ context['form'] = form
+ return render_to_response('task/view.html', context)
+ else:
+ return redirect(task_url)
+ else:
+ form = TaskCommentForm()
+ context['form'] = form
+ return render_to_response('task/view.html', context)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pytask/templates/task/view.html Sun Jan 09 00:53:51 2011 +0530
@@ -0,0 +1,138 @@
+{% extends 'base.html' %}
+{% block title %}
+ {{task.title}}
+{% endblock %}
+{% block content %}
+ <h3>{{ task.title }}</h3>
+
+ {% if can_edit %}
+ <a href="/task/edit/tid={{task.uniq_key}}">Edit task</a>
+ {% endif %}
+
+ {% if can_publish %}
+ <a href="/task/approve/tid={{task.uniq_key}}">Approve task</a>
+ {% endif %}
+
+ {% if can_close %}
+ <a href="/task/close/tid={{task.uniq_key}}">Close task</a>
+ {% endif %}
+
+ {% if can_delete %}
+ <a href="/task/delete/tid={{task.uniq_key}}">Delete task</a>
+ {% endif %}
+
+ <hr />created by <a href="/user/view/uid={{ task.created_by.uniq_key }}">{{ task.created_by.username }}</a>
+ on {{task.creation_datetime|date:"D d M Y"}} at {{task.creation_datetime|time:"H:i"}}<br />
+
+ {% ifequal task.status "UP" %}
+ Task can be viewed by:
+ {% else %}
+ Reviewers:
+ {% endifequal %}
+
+ {% for reviewer in reviewers %}
+ <a href="/user/view/uid={{reviewer.id}}">{{reviewer.username}}</a>
+ {% endfor %}
+
+ {% if can_mod_reviewers %}
+ <a href="/task/addreviewer/tid={{task.uniq_key}}">
+ {% ifequal task.status "UP" %}
+ Request others to view/edit the task
+ {% else %}
+ Add another Reviewer to this task
+ {% endifequal %}</a>
+ {% endif %}
+ <br />
+
+ <hr />
+ <b>Description:</b><br />
+ {{ task.desc|linebreaksbr }}
+ <br /><br /><hr />
+ {% if task.tags.count %}
+ Tags:
+ {% for tag in task.tags %}
+ {{tag}}
+ {% endfor %}
+ <hr />
+ {% endif %}
+
+
+ {% ifequal task.status "CD" %}
+ Task has been closed by <a href="/user/view={{closing_notification.sent_from.id}}">{{closing_notification.sent_from.username}}</a>
+ on {{closing_notification.sent_date|date:"D d M Y"}} at {{closing_notification.sent_date|time:"H:i"}}<br />
+ <b>Reason: </b>{{closing_notification.remarks}}<br />
+ {% endifequal %}
+
+ {% ifequal task.status "CM" %}
+ Task has been marked complete by <a href="/user/view={{completed_notification.sent_from.id}}">
+ {{completed_notification.sent_from.username}}</a>
+ on {{completed_notification.sent_date|date:"D d M Y"}} at {{completed_notification.sent_date|time:"H:i"}}<br />
+ {% endifequal %}
+
+ {% ifequal task.status "OP" %}
+ <br />There are no users working on this task.<br />
+ {% endifequal %}
+
+ {% if subs %}
+ <br />This task cannot be claimed.. It exists only to show all of its sub tasks in one place.<br />
+ {% endif %}
+
+ {% if assigned_users %}
+ Users working on this task:
+ {% for user in assigned_users %}
+ <a href="/user/view/uid={{user.id}}">{{user.username}}</a>
+ {% endfor %}
+ {% if is_reviewer %}
+ <a href="/task/remuser/tid={{task.uniq_key}}">Remove an existing user</a>
+ {% endif %}
+ <br />
+ {% endif %}
+
+ {% if can_assign_pynts %}
+ <a href="/task/assignpynts/tid={{task.uniq_key}}">View/Assign pynts</a>
+ {% endif %}
+
+ {% if task_claimable %}
+ <a href="/task/claim/tid={{task.uniq_key}}">
+ {% if is_reviewer %}
+ View claims
+ {% else %}
+ <a href="/task/report/tid={{task.uniq_key}}">Submit Work</a>
+ Claim the task
+ {% endif %}</a>
+ {% endif %}
+
+ {% if comments %}
+ <hr />
+ comments:<br /><br />
+ {% for comment in comments %}
+ <a href="/user/view/uid={{comment.created_by.uniq_key}}">{{ comment.created_by.username }}</a>
+ on {{ comment.comment_datetime|date:"D d M Y"}} at {{comment.comment_datetime|time:"H:i"}} wrote:<br />
+ {{ comment.data|linebreaksbr }}<br /><br />
+ {% endfor %}
+ {% endif %}
+
+ {% if not is_guest %}
+ <hr />
+ {% if error_msg %}
+ {{error_msg}}<br />
+ {% endif %}
+ {% ifnotequal task.status "UP" %}
+ Add comment:<br />
+ <form action="" method="post">
+ {% csrf_token %}
+ {{form.as_p}}
+ <input type="submit" value="Submit">
+ </form>
+ {% else %}
+ {% if is_reviewer %}
+ Add comment:<br />
+ <form action="" method="post">
+ {% csrf_token %}
+ {{form.as_p}}
+ <input type="submit" value="Submit">
+ </form>
+ {% endif %}
+ {% endifnotequal %}
+ {% endif %}
+{% endblock %}