commenting on a task works as of now and there is a lot to do with view task
authorNishanth Amuluru <nishanth@fossee.in>
Sun, 09 Jan 2011 00:53:51 +0530
changeset 349 1cc8d0b2eefb
parent 348 1eb24b1662cf
child 350 4cc40503bf3c
commenting on a task works as of now and there is a lot to do with view task
pytask/taskapp/views.py
pytask/templates/task/view.html
--- 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 %}