pytask/taskapp/views/task.py
author Madhusudan.C.S <madhusudancs@gmail.com>
Tue, 01 Feb 2011 02:14:28 +0530
changeset 538 478c7fc9a223
child 543 57b0f8f80ebf
permissions -rwxr-xr-x
Create a package for taskapp views and break the views into task and textbook. Now all the view functions common to any two entities along with all tasks related views sit in task module. Even if the view is not directly related to the task entity, it sits in the task module since task is the base for every other entity in the application.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
538
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     1
"""Module containing the views for all the task related activities.
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     2
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     3
If there is something common to all other views. They sit here, here
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     4
even if there nothing relevant to tasks alone since task is the basis
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     5
for everything else.
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     6
"""
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     7
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     8
__authors__ = [
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     9
    '"Nishanth Amuluru" <nishanth@fossee.in>',
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    10
    '"Madhusudan.C.S" <madhusudancs@fossee.in>',
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    11
    ]
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    12
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    13
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    14
from datetime import datetime
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    15
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    16
from django import shortcuts
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    17
from django import http
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    18
from django.contrib.auth.decorators import login_required
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    19
from django.contrib.auth.models import User
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    20
from django.core.context_processors import csrf
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    21
from django.core.urlresolvers import reverse
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    22
from django.template import RequestContext
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    23
from django.utils import simplejson as json
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    24
from django.utils.translation import ugettext
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    25
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    26
from tagging.models import Tag
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    27
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    28
from pytask.views import show_msg
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    29
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    30
from pytask.profile import models as profile_models
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    31
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    32
from pytask.taskapp import forms as taskapp_forms
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    33
from pytask.taskapp import models as taskapp_models
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    34
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    35
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    36
DONT_CLAIM_TASK_MSG = ugettext(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    37
  "Please don't submit any claims for the tasks until the workshop is "
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    38
  "over. During the workshop we will introduce you to the work-flow of "
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    39
  "this entire project. Also please be warned that the task claim work-"
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    40
  "flow may change. So all the claims submitted before the workshop may "
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    41
  "not be valid.")
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    42
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    43
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    44
@login_required
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    45
def create_task(request):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    46
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    47
    user = request.user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    48
    profile = user.get_profile()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    49
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    50
    context = {"user": user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    51
               "profile": profile,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    52
              }
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    53
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    54
    context.update(csrf(request))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    55
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    56
    can_create_task = False if (
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    57
      profile.role == profile_models.ROLES_CHOICES[3][0]) else True
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    58
    if can_create_task:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    59
        if request.method == "POST":
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    60
            form = taskapp_forms.CreateTaskForm(request.POST)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    61
            if form.is_valid():
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    62
                data = form.cleaned_data.copy()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    63
                data.update({"created_by": user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    64
                             "creation_datetime": datetime.now(),
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    65
                            })
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    66
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    67
                task = taskapp_models.Task(**data)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    68
                task.save()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    69
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    70
                task_url = reverse('view_task', kwargs={'task_id': task.id})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    71
                return shortcuts.redirect(task_url)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    72
            else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    73
                context.update({'form':form})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    74
                return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    75
                  'task/edit.html', RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    76
        else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    77
            form = taskapp_forms.CreateTaskForm()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    78
            context.update({'form': form})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    79
            return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    80
              'task/edit.html', RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    81
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    82
        return show_msg(user, 'You are not authorised to create a task.')
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    83
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    84
def browse_tasks(request):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    85
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    86
    context = {}
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    87
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    88
    # TODO(disable): Disable once the tasks can be claimed
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    89
    context['uberbar_message'] = DONT_CLAIM_TASK_MSG
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    90
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    91
    open_tasks = taskapp_models.Task.objects.filter(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    92
      status=taskapp_models.TASK_STATUS_CHOICES[1][0])
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    93
    working_tasks = taskapp_models.Task.objects.filter(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    94
      status=taskapp_models.TASK_STATUS_CHOICES[3][0])
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    95
    comp_tasks = taskapp_models.Task.objects.filter(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    96
      status=taskapp_models.TASK_STATUS_CHOICES[6][0])
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    97
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    98
    context.update({
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    99
      'open_tasks': open_tasks,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   100
      'working_tasks': working_tasks,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   101
      'comp_tasks': comp_tasks,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   102
      })
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   103
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   104
    user = request.user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   105
    if not user.is_authenticated():
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   106
        return shortcuts.render_to_response('task/browse.html',
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   107
                                            RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   108
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   109
    profile = user.get_profile()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   110
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   111
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   112
    if profile.role in [profile_models.ROLES_CHOICES[0][0],
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   113
                        profile_models.ROLES_CHOICES[1][0]]:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   114
        can_approve = True
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   115
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   116
        can_approve = False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   117
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   118
    unpub_tasks = taskapp_models.Task.objects.filter(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   119
      status=taskapp_models.TASK_STATUS_CHOICES[0][0]).exclude(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   120
        status=taskapp_models.TASK_STATUS_CHOICES[5][0])
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   121
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   122
    if can_approve:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   123
        context.update({'unpub_tasks': unpub_tasks})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   124
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   125
    context.update({'user': user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   126
                    'profile': profile,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   127
                   })
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   128
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   129
    return shortcuts.render_to_response('task/browse.html',
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   130
                                        RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   131
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   132
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   133
def view_task(request, task_id):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   134
    """ get the task depending on its task_id and display accordingly if it is a get.
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   135
    check for authentication and add a comment if it is a post request.
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   136
    """
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   137
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   138
    context = {}
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   139
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   140
    # TODO(disable): Disable once the tasks can be claimed
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   141
    context['uberbar_message'] = DONT_CLAIM_TASK_MSG
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   142
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   143
    task_url = reverse('view_task', kwargs={'task_id': task_id})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   144
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   145
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   146
    user = request.user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   147
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   148
    if not user.is_authenticated():
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   149
        return shortcuts.render_to_response('task/view.html', {'task': task})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   150
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   151
    profile = user.get_profile()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   152
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   153
    context.update({
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   154
      'user': user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   155
      'profile': profile,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   156
      'task': task,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   157
      })
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   158
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   159
    context.update(csrf(request))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   160
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   161
    if task.status == taskapp_models.TASK_STATUS_CHOICES[5][0]:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   162
        return show_msg(user, 'This task no longer exists',
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   163
                        reverse('browse_tasks'), 'browse the tasks')
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   164
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   165
    if ((task.status != taskapp_models.TASK_STATUS_CHOICES[0][0] )
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   166
      or profile.role != profile_models.ROLES_CHOICES[3][0]):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   167
        task_viewable = True
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   168
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   169
        task_viewable = False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   170
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   171
    if not task_viewable:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   172
        return show_msg(user, 'You are not authorised to view this task',
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   173
                        reverse('browse_tasks'), 'browse the tasks')
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   174
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   175
    reviewers = task.reviewers.all()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   176
    is_reviewer = True if user in task.reviewers.all() else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   177
    comments = task.comments.filter(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   178
      is_deleted=False).order_by('comment_datetime')
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   179
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   180
    context.update({'is_reviewer':is_reviewer,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   181
                    'comments':comments,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   182
                    'reviewers':reviewers,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   183
                   })
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   184
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   185
    selected_users = task.selected_users.all()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   186
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   187
    user_role = user.get_profile().role
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   188
    is_creator = True if user == task.created_by else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   189
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   190
    context['selected_users'] = selected_users
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   191
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   192
    context['is_selected'] = True if user in selected_users else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   193
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   194
    if (task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] and
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   195
      profile.role in [profile_models.ROLES_CHOICES[0][0],
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   196
      profile_models.ROLES_CHOICES[1][0]]):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   197
        context['can_approve'] = True
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   198
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   199
        context['can_approve'] = False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   200
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   201
    if ((is_creator or user_role != profile_models.ROLES_CHOICES[3][0])
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   202
      and task.status == taskapp_models.TASK_STATUS_CHOICES[0][0]):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   203
        context['can_edit'] = True
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   204
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   205
        context['can_edit'] = False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   206
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   207
    if (task.status not in [taskapp_models.TASK_STATUS_CHOICES[0][0],
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   208
      taskapp_models.TASK_STATUS_CHOICES[4][0],
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   209
      taskapp_models.TASK_STATUS_CHOICES[6][0]] and is_reviewer):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   210
        context['can_close'] = True
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   211
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   212
        context['can_close'] = False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   213
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   214
    if task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] and is_creator:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   215
        context['can_delete'] = True
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   216
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   217
        context['can_delete'] = False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   218
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   219
    if (task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0],
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   220
      taskapp_models.TASK_STATUS_CHOICES[3][0]] and is_reviewer):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   221
        context['can_assign_pynts'] = True
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   222
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   223
        context['can_assign_pynts'] = False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   224
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   225
    if (task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0],
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   226
      taskapp_models.TASK_STATUS_CHOICES[3][0]]):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   227
        context['task_claimable'] = True
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   228
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   229
        context['task_claimable'] = False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   230
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   231
    if (task.status != taskapp_models.TASK_STATUS_CHOICES[0][0] or\
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   232
      profile.role != profile_models.ROLES_CHOICES[3][0]):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   233
        context['can_comment'] = True
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   234
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   235
        context['can_comment'] = False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   236
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   237
    if (profile.role in [profile_models.ROLES_CHOICES[0][0],
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   238
      profile_models.ROLES_CHOICES[1][0]]):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   239
        context['can_mod_reviewers'] = True
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   240
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   241
        context['can_mod_reviewers'] = False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   242
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   243
    if request.method == 'POST':
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   244
        form = taskapp_forms.TaskCommentForm(request.POST)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   245
        if form.is_valid():
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   246
            data = form.cleaned_data['data']
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   247
            new_comment = taskapp_forms.TaskComment(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   248
              task=task, data=data, commented_by=user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   249
              comment_datetime=datetime.now())
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   250
            new_comment.save()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   251
            return shortcuts.redirect(task_url)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   252
        else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   253
            context['form'] = form
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   254
            return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   255
              'task/view.html', RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   256
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   257
        form = taskapp_forms.TaskCommentForm()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   258
        context['form'] = form
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   259
        return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   260
          'task/view.html', RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   261
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   262
@login_required
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   263
def edit_task(request, task_id):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   264
    """ only creator gets to edit the task and that too only before it gets
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   265
    approved.
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   266
    """
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   267
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   268
    user = request.user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   269
    profile = user.get_profile()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   270
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   271
    task_url = reverse('view_task', kwargs={'task_id': task_id})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   272
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   273
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   274
    is_creator = True if user == task.created_by else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   275
    can_edit = True if task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] and is_creator else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   276
    if not can_edit:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   277
        raise http.Http404
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   278
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   279
    context = {"user": user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   280
               "profile": profile,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   281
               "task": task,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   282
              }
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   283
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   284
    context.update(csrf(request))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   285
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   286
    if request.method == "POST":
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   287
        form = taskapp_forms.EditTaskForm(request.POST, instance=task)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   288
        if form.is_valid():
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   289
            form.save()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   290
            return shortcuts.redirect(task_url)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   291
        else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   292
            context.update({"form": form})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   293
            return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   294
              "task/edit.html", RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   295
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   296
        form = taskapp_forms.EditTaskForm(instance=task)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   297
        context.update({"form": form})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   298
        return shortcuts.render_to_response("task/edit.html",
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   299
                                            RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   300
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   301
@login_required
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   302
def approve_task(request, task_id):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   303
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   304
    user = request.user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   305
    profile = user.get_profile()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   306
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   307
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   308
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   309
    if profile.role not in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] or task.status != taskapp_models.TASK_STATUS_CHOICES[0][0]:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   310
        raise http.Http404
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   311
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   312
    context = {"user": user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   313
               "profile": profile,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   314
               "task": task,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   315
              }
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   316
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   317
    return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   318
      "task/confirm_approval.html", RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   319
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   320
@login_required
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   321
def approved_task(request, task_id):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   322
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   323
    user = request.user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   324
    profile = user.get_profile()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   325
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   326
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   327
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   328
    if profile.role not in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] or task.status != taskapp_models.TASK_STATUS_CHOICES[0][0]:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   329
        raise http.Http404
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   330
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   331
    task.approved_by = user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   332
    task.approval_datetime = datetime.now()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   333
    task.status = taskapp_models.TASK_STATUS_CHOICES[1][0]
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   334
    task.save()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   335
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   336
    context = {"user": user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   337
               "profile": profile,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   338
               "task": task,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   339
              }
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   340
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   341
    return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   342
      "task/approved_task.html", RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   343
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   344
@login_required
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   345
def addreviewer(request, task_id):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   346
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   347
    user = request.user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   348
    profile = user.get_profile()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   349
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   350
    task_url = reverse('view_task', kwargs={'task_id': task_id})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   351
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   352
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   353
    can_mod_reviewers = True if profile.role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   354
    if not can_mod_reviewers:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   355
        raise http.Http404
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   356
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   357
    context = {"user": user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   358
               "profile": profile,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   359
               "task": task,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   360
              }
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   361
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   362
    context.update(csrf(request))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   363
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   364
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   365
    # This part has to be made better
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   366
    reviewer_choices = User.objects.filter(is_active=True).\
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   367
                                           exclude(reviewing_tasks__id=task_id).\
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   368
                                           exclude(claimed_tasks__id=task_id).\
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   369
                                           exclude(selected_tasks__id=task_id).\
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   370
                                           exclude(created_tasks__id=task_id)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   371
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   372
    choices = ((a_user.id,a_user.username) for a_user in reviewer_choices)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   373
    label = "Reviewer"
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   374
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   375
    if request.method == "POST":
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   376
        form = taskapp_forms.ChoiceForm(choices, data=request.POST, label=label)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   377
        if form.is_valid():
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   378
            data = form.cleaned_data.copy()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   379
            uid = data['choice']
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   380
            reviewer = User.objects.get(id=uid)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   381
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   382
            task.reviewers.add(reviewer)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   383
            return shortcuts.redirect(task_url)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   384
        else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   385
            context.update({"form": form})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   386
            return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   387
              "task/addreviewer.html", RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   388
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   389
        form = taskapp_forms.ChoiceForm(choices, label=label)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   390
        context.update({"form": form})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   391
        return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   392
          "task/addreviewer.html", RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   393
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   394
def view_work(request, task_id):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   395
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   396
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   397
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   398
    user = request.user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   399
    old_reports = task.reports.all()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   400
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   401
    context = {
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   402
      'task': task,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   403
      'old_reports': old_reports,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   404
      }
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   405
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   406
    if not user.is_authenticated():
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   407
        return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   408
          "task/view_work.html", RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   409
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   410
    profile = user.get_profile()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   411
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   412
    context.update({"user": user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   413
                    "profile": profile,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   414
                   })
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   415
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   416
    context.update(csrf(request))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   417
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   418
    working_users = task.selected_users.all()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   419
    is_working = True if user in working_users else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   420
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   421
    context.update({"is_working": is_working})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   422
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   423
    return shortcuts.render_to_response("task/view_work.html",
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   424
                                        RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   425
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   426
@login_required
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   427
def view_report(request, report_id):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   428
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   429
    report = shortcuts.get_object_or_404(taskapp_models.WorkReport,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   430
                                         pk=report_id)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   431
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   432
    user = request.user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   433
    context = {"report": report,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   434
               "user": user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   435
              }
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   436
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   437
    if not user.is_authenticated():
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   438
        return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   439
          "task/view_report.html", RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   440
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   441
    profile = user.get_profile()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   442
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   443
    context.update({"profile": profile})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   444
    return shortcuts.render_to_response("task/view_report.html",
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   445
                                        RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   446
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   447
@login_required
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   448
def submit_report(request, task_id):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   449
    """ Check if the work is in WR state and the user is in assigned_users.
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   450
    """
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   451
    task_url = reverse('view_task', kwargs={'task_id': task_id})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   452
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   453
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   454
    user = request.user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   455
    old_reports = task.reports.all()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   456
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   457
    if not task.status == taskapp_models.TASK_STATUS_CHOICES[3][0]:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   458
        raise http.Http404
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   459
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   460
    can_upload = True if user in task.selected_users.all() else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   461
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   462
    context = {
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   463
        'user': user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   464
        'task': task,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   465
        'can_upload': can_upload,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   466
    }
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   467
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   468
    context.update(csrf(request))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   469
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   470
    if request.method == "POST":
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   471
        if not can_upload:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   472
            return show_msg(user, "You are not authorised to upload data to this task", task_url, "view the task")
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   473
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   474
        form = taskapp_forms.WorkReportForm(request.POST, request.FILES)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   475
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   476
        if form.is_valid():
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   477
            data = form.cleaned_data.copy()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   478
            data.update({"task":task,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   479
                         "revision": old_reports.count(),
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   480
                         "submitted_by": user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   481
                         "submitted_at": datetime.now(),
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   482
                        })
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   483
            r = taskapp_models.WorkReport(**data)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   484
            r.save()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   485
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   486
            report_url = reverse('view_report', kwargs={'report_id': r.id})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   487
            return shortcuts.redirect(report_url)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   488
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   489
        else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   490
            context.update({"form":form})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   491
            return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   492
              'task/submit_report.html', RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   493
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   494
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   495
        form = taskapp_forms.WorkReportForm()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   496
        context.update({"form":form})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   497
        return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   498
          'task/submit_report.html', RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   499
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   500
@login_required
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   501
def claim_task(request, task_id):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   502
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   503
    context = {}
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   504
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   505
    # TODO(disable): Disable once the tasks can be claimed
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   506
    context['uberbar_message'] = DONT_CLAIM_TASK_MSG
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   507
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   508
    claim_url = reverse('claim_task', kwargs={'task_id': task_id})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   509
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   510
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   511
    if task.status == taskapp_models.TASK_STATUS_CHOICES[0][0]:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   512
        raise http.Http404
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   513
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   514
    user = request.user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   515
    profile = user.get_profile()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   516
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   517
    context.update({
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   518
      'user': user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   519
      'profile': profile,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   520
      'task': task,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   521
      })
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   522
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   523
    context.update(csrf(request))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   524
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   525
    reviewers = task.reviewers.all()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   526
    claimed_users = task.claimed_users.all()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   527
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   528
    is_creator = True if user == task.created_by else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   529
    is_reviewer = True if user in reviewers else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   530
    has_claimed = True if user in claimed_users else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   531
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   532
    task_claimable = True if task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]] else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   533
    can_claim = True if task_claimable and ( not has_claimed )\
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   534
                        and ( not is_reviewer ) and (not is_creator ) \
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   535
                        else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   536
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   537
    old_claims = task.claims.all()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   538
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   539
    context.update({"is_creator": is_creator,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   540
                    "task_claimable": task_claimable,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   541
                    "can_claim": can_claim,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   542
                    "old_claims": old_claims})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   543
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   544
    if request.method == "POST" and can_claim:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   545
        form = taskapp_forms.ClaimTaskForm(request.POST)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   546
        if form.is_valid():
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   547
            data = form.cleaned_data.copy()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   548
            data.update({"task": task,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   549
                         "claim_datetime": datetime.now(),
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   550
                         "claimed_by": user,})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   551
            new_claim = taskapp_models.TaskClaim(**data)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   552
            new_claim.save()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   553
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   554
            task.claimed_users.add(user)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   555
            task.save()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   556
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   557
            return shortcuts.redirect(claim_url)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   558
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   559
        else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   560
            context.update({"form": form})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   561
            return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   562
              "task/claim.html", RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   563
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   564
        form = taskapp_forms.ClaimTaskForm()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   565
        context.update({"form": form})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   566
        return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   567
          "task/claim.html", RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   568
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   569
@login_required
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   570
def select_user(request, task_id):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   571
    """ first get the status of the task and then select one of claimed users
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   572
    generate list of claimed users by passing it as an argument to a function.
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   573
    """
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   574
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   575
    task_url = reverse('view_task', kwargs={'task_id': task_id})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   576
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   577
    user = request.user
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   578
    profile = user.get_profile()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   579
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   580
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   581
    context = {"user": user,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   582
               "profile": profile,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   583
               "task": task,
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   584
              }
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   585
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   586
    context.update(csrf(request))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   587
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   588
    claimed_users = task.claimed_users.all()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   589
    task_claimed = True if claimed_users else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   590
    
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   591
    is_creator = True if user == task.created_by else False
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   592
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   593
    if (is_creator or profile.role in [profile_models.ROLES_CHOICES[1][0], profile_models.ROLES_CHOICES[2][0]]) and \
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   594
       task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]]:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   595
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   596
        if task_claimed:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   597
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   598
            user_list = ((user.id,user.username) for user in claimed_users)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   599
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   600
            if request.method == "POST":
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   601
                form = taskapp_forms.ChoiceForm(user_list, request.POST)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   602
                if form.is_valid():
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   603
                    uid = form.cleaned_data['choice']
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   604
                    selected_user = User.objects.get(id=uid)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   605
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   606
                    task.selected_users.add(selected_user)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   607
                    task.claimed_users.remove(selected_user)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   608
                    task.status = taskapp_models.TASK_STATUS_CHOICES[3][0]
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   609
                    task.save()
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   610
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   611
                    return shortcuts.redirect(task_url)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   612
                else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   613
                    context.update({"form": form})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   614
                    return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   615
                      'task/select_user.html',
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   616
                      RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   617
            else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   618
                form = taskapp_forms.ChoiceForm(user_list)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   619
                context.update({"form": form})
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   620
                return shortcuts.render_to_response(
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   621
                  'task/select_user.html',
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   622
                  RequestContext(request, context))
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   623
        else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   624
            return show_msg(user, 'There are no pending claims for this task',
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   625
                            task_url, 'view the task')
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   626
    else:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   627
        raise http.Http404
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   628
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   629
def suggest_task_tags(request):
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   630
    """Returns the tags matching the query for the AJAXy autocomplete
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   631
    to get tags related to tasks.
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   632
    """
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   633
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   634
    term = request.GET.get('term', None)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   635
    response = []
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   636
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   637
    if term:
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   638
      tag_entities = Tag.objects.filter(name__icontains=term)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   639
      response = [tag.name for tag in tag_entities]
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   640
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   641
    json_response = json.dumps(response)
478c7fc9a223 Create a package for taskapp views and break the views into task and textbook.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   642
    return http.HttpResponse(json_response)