pytask/taskapp/views/task.py
author Madhusudan.C.S <madhusudancs@gmail.com>
Thu, 06 Jan 2011 19:07:04 +0530
branchbuildout
changeset 227 3c8f3b0e5b00
permissions -rw-r--r--
Add support for buildout and move the files to the directory to support buildout structure.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
227
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     1
from datetime import datetime
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     2
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     3
from django.http import HttpResponse, Http404
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     4
from django.shortcuts import render_to_response, redirect
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     5
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     6
from pytask.taskapp.models import User, Task, Comment, Request, Notification
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     7
from pytask.taskapp.utilities.task import getTask
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     8
from pytask.taskapp.forms.task import TaskCreateForm, AddMentorForm, AddTaskForm, ChoiceForm, AssignCreditForm, RemoveUserForm, EditTaskForm, ClaimTaskForm
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     9
from pytask.taskapp.events.task import createTask, reqMentor, publishTask, addSubTask, addDep, addClaim, assignTask, updateTask, removeTask, removeUser, assignCredits, completeTask, closeTask, addMentor, deleteTask
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    10
from pytask.taskapp.views.user import show_msg
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    11
from pytask.taskapp.utilities.user import get_user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    12
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    13
## everywhere if there is no task, django should display 500 message.. but take care of that in sensitive views like add mentor and all
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    14
## do not create su user thro syncdb
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    15
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    16
def browse_tasks(request):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    17
    """ display all the tasks """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    18
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    19
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    20
    task_list = Task.objects.exclude(status="UP").exclude(status="DL").order_by('published_datetime').reverse()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    21
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    22
    context = {'user':user,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    23
               'task_list':task_list,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    24
               }
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    25
    return render_to_response('task/browse.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    26
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    27
def publish_task(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    28
    """ check if user is the mentor and also if the task status is UP.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    29
    """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    30
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    31
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    32
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    33
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    34
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    35
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    36
    is_guest = True if not user.is_authenticated() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    37
    is_mentor = True if user in task.mentors.all() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    38
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    39
    if user == task.created_by:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    40
        context = {
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    41
            'user':user,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    42
        }
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    43
        if task.status == "UP":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    44
            if request.method == "POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    45
                publishTask(task)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    46
                return show_msg(user, "The task has been published", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    47
            else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    48
                return render_to_response('task/publish.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    49
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    50
            return show_msg(user, "The task is already published", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    51
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    52
        return show_msg(user, "You are not authorised to do this", '/task/browse/', "browse tasks")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    53
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    54
def view_task(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    55
    """ get the task depending on its tid and display accordingly if it is a get.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    56
    check for authentication and add a comment if it is a post request.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    57
    """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    58
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    59
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    60
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    61
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    62
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    63
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    64
    if task.status == "DL":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    65
        return show_msg(user, 'This task no longer exists', '/task/browse/','browse the tasks')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    66
    comments = task.comment_set.filter(is_deleted=False).order_by('creation_datetime')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    67
    mentors = task.mentors.all()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    68
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    69
    deps, subs = task.deps, task.subs
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    70
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    71
    is_guest = True if not user.is_authenticated() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    72
    is_mentor = True if user in task.mentors.all() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    73
    context = {'user':user,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    74
               'task':task,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    75
               'comments':comments,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    76
               'mentors':mentors,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    77
               'subs':subs,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    78
               'deps':deps,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    79
               'is_guest':is_guest,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    80
               'is_mentor':is_mentor,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    81
              }
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    82
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    83
    claimed_users = task.claimed_users.all()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    84
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    85
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    86
    is_requested_mentor = True if user.is_authenticated() and user.request_sent_to.filter(is_valid=True,is_replied=False,role="MT",task=task) else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    87
    task_viewable = True if ( task.status != "UP" ) or is_mentor or is_requested_mentor else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    88
    if not task_viewable:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    89
        return show_msg(user, "You are not authorised to view this task", "/task/browse/", "browse the tasks")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    90
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    91
    context['is_requested_mentor'] = is_requested_mentor
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    92
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    93
    context['can_publish'] = True if task.status == "UP" and user == task.created_by else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    94
    context['can_edit'] = True if task.status == "UP" and is_mentor else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    95
    context['can_close'] = True if task.status not in ["UP", "CD", "CM"] and is_mentor else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    96
    context['can_delete'] = True if task.status == "UP" and user == task.created_by else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    97
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    98
    context['can_mod_mentors'] = True if task.status in ["UP", "OP", "LO", "WR"] and is_mentor else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    99
    context['can_mod_tasks'] = True if task.status in ["UP", "OP", "LO"] and is_mentor else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   100
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   101
    context['can_assign_credits'] = True if task.status in ["OP", "WR"] and is_mentor else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   102
    context['task_claimable'] = True if task.status in ["OP", "WR"] and not is_guest else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   103
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   104
    if task.status == "CD":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   105
        context['closing_notification'] =  Notification.objects.filter(task=task,role="CD")[0]
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   106
    elif task.status == "CM":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   107
        context['completed_notification'] =  Notifications.objects.filter(task=task,role="CM")[0]
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   108
    elif task.status == "WR":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   109
        context['assigned_users'] = task.assigned_users.all()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   110
   
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   111
    if request.method == 'POST':
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   112
        if not is_guest:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   113
            data = request.POST.get("data", "").strip()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   114
            if not data:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   115
                context['error_msg'] = "Enter some message to comment"
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   116
                return render_to_response('task/view.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   117
            new_comment = Comment(task=task, data=data, created_by=user, creation_datetime=datetime.now())
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   118
            new_comment.save()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   119
            return redirect(task_url)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   120
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   121
            errors.append("You must be logged in to post a comment")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   122
            return render_to_response('task/view.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   123
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   124
        return render_to_response('task/view.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   125
        
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   126
def create_task(request):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   127
    """ check for rights and create a task if applicable.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   128
    if user cannot create a task, redirect to homepage.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   129
    """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   130
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   131
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   132
    is_guest = True if not user.is_authenticated() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   133
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   134
    if not is_guest:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   135
        user_profile = user.get_profile()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   136
        can_create_task = False if user_profile.rights == "CT" else True
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   137
        if can_create_task:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   138
            if request.method == "POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   139
                form = TaskCreateForm(request.POST)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   140
                if form.is_valid():
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   141
                    data = form.cleaned_data
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   142
                    title = data['title']
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   143
                    desc = data['desc']
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   144
                    credits = data['credits']
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   145
                    #publish = data['publish'] # just in case if we have to show the option
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   146
                    task = createTask(title,desc,user,credits)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   147
                    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   148
                    addMentor(task, user)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   149
                    updateTask(task,tags_field=data['tags_field'])
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   150
                    # if publish: publishTask(task)    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   151
                    task_url = '/task/view/tid=%s'%task.id
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   152
                    return redirect(task_url)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   153
                else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   154
                    return render_to_response('task/create.html',{'user':user, 'form':form})
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   155
            else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   156
                form = TaskCreateForm()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   157
                return render_to_response('task/create.html',{'user':user, 'form':form})
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   158
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   159
            return show_msg(user, 'You are not authorised to create a task.')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   160
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   161
        return show_msg(user, 'You are not authorised to create a task.', "/", "home page")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   162
        
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   163
def add_mentor(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   164
    """ check if the current user has the rights to edit the task and add him.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   165
    if user is not authenticated, redirect him to concerned page. """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   166
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   167
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   168
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   169
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   170
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   171
    errors = []
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   172
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   173
    is_guest = True if not user.is_authenticated() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   174
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   175
    if (not is_guest) and user in task.mentors.all():
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   176
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   177
        pending_requests = Request.objects.filter(is_replied=False,is_valid=True,role="MT",task=task).order_by('creation_date').reverse()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   178
        user_pending_requests = pending_requests.filter(sent_by=user)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   179
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   180
        ## now iam going for a brute force method
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   181
        user_list = list(User.objects.filter(is_active=True))
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   182
        for mentor in task.mentors.all():
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   183
            user_list.remove(mentor)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   184
            
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   185
        for a_user in task.claimed_users.all():
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   186
            user_list.remove(a_user)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   187
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   188
        for a_user in task.assigned_users.all():
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   189
            user_list.remove(a_user)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   190
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   191
        for req in user_pending_requests:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   192
            user_list.remove(req.sent_to.all()[0])
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   193
            
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   194
        non_mentors = ((_.id, _.username) for _ in user_list)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   195
        non_mentor_ids = [ str(a_user.id) for a_user in user_list ]
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   196
        ## code till must be made elegant and not brute force like above
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   197
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   198
        form = AddMentorForm(non_mentors)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   199
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   200
        context = {
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   201
            'user':user,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   202
            'task':task,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   203
            'pending_requests':pending_requests,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   204
            'form':form,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   205
        }
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   206
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   207
        if request.method == "POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   208
            data = request.POST
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   209
            uid = data.get('mentor', None)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   210
            if uid in non_mentor_ids:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   211
                new_mentor = User.objects.get(id=int(uid))
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   212
                reqMentor(task, new_mentor, user)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   213
                return redirect('/task/addmentor/tid=%s'%task.id)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   214
            else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   215
                ## bogus post request
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   216
                raise Http404
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   217
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   218
            return render_to_response('task/addmentor.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   219
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   220
        return show_msg(user, 'You are not authorised to add mentors for this task', task_url, 'view the task')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   221
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   222
def add_tasks(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   223
    """ first display tasks which can be subtasks for the task and do the rest.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   224
    """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   225
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   226
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   227
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   228
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   229
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   230
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   231
    deps, subs = task.deps, task.subs
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   232
    is_plain = False if deps or subs else True
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   233
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   234
    ## again a brute force method
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   235
    valid_tasks = []
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   236
    for a_task in Task.objects.all():
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   237
        if not ( a_task in deps or a_task in subs or a_task.status=="CD" or a_task==task ):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   238
            valid_tasks.append(a_task)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   239
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   240
    task_choices = [ (_.id,_.title) for _ in valid_tasks ]
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   241
    errors = []
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   242
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   243
    is_guest = True if not user.is_authenticated() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   244
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   245
    if (not is_guest) and user in task.mentors.all():
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   246
        if task.status in ["UP", "OP", "LO"]:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   247
            form = AddTaskForm(task_choices, is_plain)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   248
            if request.method == "POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   249
                ## first decide if adding subs and deps can be in same page
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   250
                ## only exclude tasks with status deleted
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   251
                data = request.POST
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   252
                if is_plain and not data.get('type', None): errors.append('Please choose which type of task(s) do you want to add.')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   253
                if not data.get('task', None): errors.append('Please choose a one task')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   254
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   255
                if not errors:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   256
                    if is_plain:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   257
                        update_method = addDep if data['type'] == "D" else addSubTask
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   258
                    elif deps:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   259
                        update_method = addDep
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   260
                    elif subs:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   261
                        update_method = addSubTask
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   262
                    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   263
                        print "Screw you"
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   264
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   265
                    ## we might iterate over a task list later on
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   266
                    task_id = data['task']
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   267
                    sub_or_dep = getTask(task_id)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   268
                    update_method(task, sub_or_dep)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   269
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   270
                    return redirect(task_url)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   271
                else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   272
                    return render_to_response('task/addtask.html', {'user':user, 'form':form, 'errors':errors})
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   273
            else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   274
                return render_to_response('task/addtask.html', {'user':user, 'form':form, 'errors':errors})
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   275
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   276
            errors = ["The task cannot be added subtasks or dependencies in this state"]
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   277
#            return render_to_response('task/add.html', {'form':form, 'errors':errors})
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   278
            return show_msg(user, 'The task cannot be added subtasks or dependencies now', task_url, 'view the task')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   279
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   280
        return show_msg(user, 'You are not authorised to add subtasks or dependencies for this task', task_url, 'view the task')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   281
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   282
def remove_task(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   283
    """ display a list of tasks and remove the selectes ones.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   284
    """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   285
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   286
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   287
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   288
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   289
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   290
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   291
    is_guest = True if not user.is_authenticated() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   292
    if (not is_guest) and user in task.mentors.all():
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   293
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   294
        if task.status in ["UP", "LO", "OP"]:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   295
            
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   296
            deps, subs = task.deps, task.subs
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   297
            task_list = deps if task.sub_type == "D" else subs
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   298
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   299
            if task_list:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   300
                choices = [(_.id,_.title) for _ in task_list ]
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   301
                form = ChoiceForm(choices)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   302
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   303
                errors = []
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   304
                
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   305
                context = {
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   306
                    'user':user,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   307
                    'task':task,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   308
                    'form':form,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   309
                }
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   310
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   311
                if request.method == "POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   312
                    data = request.POST
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   313
                    if not data.get('choice', None):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   314
                        errors.append("Please choose a task to remove.")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   315
                        context['errors'] = errors
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   316
                    if not errors:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   317
                        tid = data['choice']
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   318
                        sub_task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   319
                        removeTask(task, sub_task)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   320
                        return redirect(task_url)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   321
                    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   322
                        return render_to_response('task/removetask.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   323
                else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   324
                    return render_to_response('task/removetask.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   325
            else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   326
                return show_msg(user, "The task has no subtasks/dependencies to be removed", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   327
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   328
            return show_msg(user, "subtasks/dependencies cannot be removed at this stage", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   329
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   330
        return show_msg(user, "You are not authorised to do this", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   331
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   332
def claim_task(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   333
    """ display a list of claims for get and display submit only if claimable """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   334
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   335
    ## create claims model and create a new database with required tables for it
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   336
    ## see if that "one to n" or "n to one" relationship has a special field
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   337
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   338
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   339
    claim_url = "/task/claim/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   340
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   341
    errors = []
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   342
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   343
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   344
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   345
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   346
    #claims = task.notifications_task.filter(role="CL",sent_to=task.created_by) 
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   347
    # this is what the next line should be when i re sync the db
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   348
    claims = Notification.objects.filter(task=task, sent_to=task.created_by, role="CL")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   349
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   350
    mentors = task.mentors.all()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   351
    claimed_users = task.claimed_users.all()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   352
    assigned_users = task.assigned_users.all()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   353
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   354
    is_guest = True if not user.is_authenticated() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   355
    is_mentor = True if user in mentors else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   356
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   357
    task_claimable = True if task.status in ["OP", "WR"] else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   358
    user_can_claim = True if  task_claimable and not ( is_guest or is_mentor ) and ( user not in claimed_users ) and ( user not in assigned_users )  else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   359
    task_claimed = True if claimed_users else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   360
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   361
    context = {'user':user,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   362
               'is_mentor':is_mentor,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   363
               'task':task,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   364
               'claims':claims,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   365
               'user_can_claim':user_can_claim,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   366
               'task_claimable':task_claimable,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   367
               'task_claimed':task_claimed,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   368
               'errors':errors}
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   369
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   370
    if not is_guest:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   371
        form = ClaimTaskForm()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   372
        context['form'] = form
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   373
        if request.method == "POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   374
            form = ClaimTaskForm(request.POST)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   375
            context['form'] = form
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   376
            if form.is_valid():
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   377
                claim_proposal = form.cleaned_data['message']
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   378
                addClaim(task, claim_proposal, user)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   379
                return redirect(claim_url)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   380
            else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   381
                return render_to_response('task/claim.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   382
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   383
            return render_to_response('task/claim.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   384
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   385
        return show_msg(user, 'You are not logged in to view claims for this task', task_url, 'view the task')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   386
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   387
def rem_user(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   388
    """ show a list of working users and ask for a message/reason for removing user.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   389
    """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   390
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   391
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   392
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   393
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   394
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   395
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   396
    is_guest = True if not user.is_authenticated() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   397
    is_mentor = True if user in task.mentors.all() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   398
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   399
    if (not is_guest) and is_mentor:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   400
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   401
        assigned_users = task.assigned_users.all()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   402
        choices = [ (_.id,_.username) for _ in assigned_users ]
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   403
        context = {
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   404
            'user':user,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   405
            'task':task,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   406
        }
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   407
        
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   408
        if task.status in ["WR"]:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   409
            if assigned_users:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   410
                form = RemoveUserForm(choices)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   411
                context['form'] = form
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   412
                if request.method == "POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   413
                    data = request.POST
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   414
                    form = RemoveUserForm(choices, data)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   415
                    if form.is_valid():
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   416
                        data = form.cleaned_data
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   417
                        uid = data['user']
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   418
                        reason = data['reason']
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   419
                        rem_user = User.objects.get(id=uid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   420
                        removeUser(task, rem_user, user, reason)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   421
                        return redirect(task_url)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   422
                    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   423
                        context['form'] = form
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   424
                        return render_to_response('task/remove_user.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   425
                else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   426
                    return render_to_response('task/remove_user.html',context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   427
            else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   428
                return show_msg(user, "There is no one working on this task to be kicked off", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   429
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   430
            return show_msg(user, "This is not the stage to remove users", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   431
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   432
        return show_msg(user, "You are not authorised to do this", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   433
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   434
def assign_task(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   435
    """ first get the status of the task and then assign it to one of claimed users
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   436
    generate list of claimed users by passing it as an argument to a function.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   437
    """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   438
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   439
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   440
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   441
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   442
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   443
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   444
    is_guest = True if not user.is_authenticated() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   445
    is_mentor = True if user in task.mentors.all() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   446
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   447
    claimed_users = task.claimed_users.all()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   448
    assigned_users = task.assigned_users.all()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   449
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   450
    task_claimed = True if claimed_users else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   451
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   452
    if (not is_guest) and is_mentor:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   453
        if task.status in ["OP", "WR"]:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   454
            if task_claimed:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   455
                user_list = ((user.id,user.username) for user in claimed_users)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   456
                form = ChoiceForm(user_list)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   457
        
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   458
                if request.method == "POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   459
                    uid = request.POST['choice']
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   460
                    assigned_user = User.objects.get(id=uid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   461
                    assignTask(task, assigned_user, user)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   462
                    return redirect(task_url)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   463
                else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   464
                    return render_to_response('task/assign.html',{'user':user, 'task':task,'form':form})
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   465
            elif assigned_users:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   466
                return show_msg(user, 'When the no of users you need for the task is more than the no of users willing to do the task, I\'d say please re consider the task :P',task_url, 'view the task')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   467
            else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   468
                return show_msg(user, 'Wait for ppl to claim dude... slow and steady wins the race :)', task_url, 'view the task')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   469
        else: 
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   470
            return show_msg(user, "The task cannot be assigned to users at this stage", task_url, 'view the task')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   471
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   472
        return show_msg(user, 'You are not authorised to perform this action', task_url, 'view the task')
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   473
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   474
def assign_credits(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   475
    """ Check if the user is a mentor and credits can be assigned.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   476
    Then display all the approved credits.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   477
    Then see if mentor can assign credits to users also or only mentors.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   478
    Then put up a form for mentor to assign credits accordingly.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   479
    """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   480
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   481
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   482
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   483
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   484
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   485
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   486
    ## the moment we see that user had requested credits, it means he had worked and hence we change the status to WR
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   487
    ## we have to discuss on this since, credits may also be given to mentor
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   488
    task.status = "WR"
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   489
    task.save()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   490
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   491
    is_guest = True if not user.is_authenticated() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   492
    is_mentor = True if (not is_guest) and user in task.mentors.all() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   493
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   494
    if is_mentor:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   495
        if task.status in ["OP", "WR"]:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   496
            choices = [(_.id,_.username) for _ in task.mentors.all()]
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   497
            if task.status == "WR":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   498
                choices.extend([(_.id, _.username) for _  in task.assigned_users.all() ])
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   499
            prev_credits = task.request_task.filter(role="PY",is_valid=True,is_replied=True,reply=True).count()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   500
            credit_requests = task.request_task.filter(role="PY",is_valid=True).order_by('creation_date').reverse()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   501
            form = AssignCreditForm(choices)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   502
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   503
            context = {
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   504
                'user':user,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   505
                'task':task,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   506
                'prev_credits':prev_credits,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   507
                'credit_requests':credit_requests,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   508
                'form':form,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   509
            }
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   510
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   511
            if request.method == "POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   512
                data = request.POST
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   513
                form = AssignCreditForm(choices, data)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   514
                if form.is_valid():
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   515
                    data = form.cleaned_data
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   516
                    uid = data['user']
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   517
                    points = data['pynts']
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   518
                    given_to = User.objects.get(id=uid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   519
                    assignCredits(task=task, given_by=user, given_to=given_to, points=points)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   520
                    return redirect('/task/assigncredits/tid=%s'%task.id)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   521
                else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   522
                    context['form'] = form
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   523
                    return render_to_response('task/assigncredits.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   524
            else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   525
                return render_to_response('task/assigncredits.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   526
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   527
            return show_msg(user, "Credits cannot be assigned at this stage", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   528
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   529
        return show_msg(user, "You are not authorised to perform this action", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   530
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   531
def edit_task(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   532
    """ see what are the attributes that can be edited depending on the current status
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   533
    and then give the user fields accordingly.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   534
    """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   535
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   536
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   537
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   538
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   539
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   540
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   541
    is_mentor = True if user in task.mentors.all() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   542
    can_edit = True if is_mentor and task.status == "UP" else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   543
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   544
    if can_edit:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   545
        form = EditTaskForm(instance=task)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   546
        if request.method=="POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   547
            data = request.POST
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   548
            form = EditTaskForm(data, instance=task)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   549
            if form.is_valid():
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   550
                form.save()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   551
                return redirect(task_url)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   552
            else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   553
                return render_to_response('task/edittask.html',{'user':user, 'form':form})
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   554
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   555
            return render_to_response('task/edittask.html',{'user':user, 'form':form})
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   556
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   557
        return show_msg(user, "You cannot edit the task at this stage", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   558
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   559
def complete_task(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   560
    """ call the event called complete task.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   561
    and also pass it the current user to know who marked it as complete. 
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   562
    """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   563
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   564
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   565
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   566
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   567
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   568
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   569
    is_guest = True if not user.is_authenticated() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   570
    is_mentor = True if user in task.mentors.all() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   571
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   572
    claimed_users = task.claimed_users.all()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   573
    assigned_users = task.assigned_users.all()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   574
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   575
    assign_credits_url = '/task/assigncredits/tid=%s'%task.id
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   576
    task_assigned_credits = task.credit_set.all()
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   577
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   578
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   579
    if is_mentor:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   580
        if task.status in ["OP", "WR"]:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   581
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   582
            context = {
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   583
                'user':user,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   584
                'task':task,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   585
            }
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   586
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   587
            if task_assigned_credits:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   588
                if request.method=="POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   589
                    completeTask(task, user)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   590
                    return redirect(task_url)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   591
                else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   592
                    return render_to_response('task/complete.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   593
            else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   594
                return show_msg(user, "Nobody has been credited for doing this task.", assign_credits_url, "assign credits")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   595
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   596
            return show_msg(user, "The task cannot be marked as completed at this stage", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   597
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   598
        return show_msg(user, "You are not authorised to do this", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   599
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   600
def close_task(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   601
    """ task can be closed only if task is published.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   602
    call the event close task if everything is fine.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   603
    """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   604
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   605
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   606
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   607
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   608
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   609
    
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   610
    is_guest = True if not user.is_authenticated() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   611
    is_mentor = True if user in task.mentors.all() else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   612
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   613
    if is_mentor:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   614
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   615
        context = {
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   616
            'user':user,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   617
            'task':task,
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   618
        }
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   619
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   620
        if not task.status in ["UP", "CD", "DL", "CM"]:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   621
            if request.method == "POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   622
                data = request.POST
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   623
                if not data.get("reason", None):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   624
                    context["error"] = "Please enter a reason for closing the task"
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   625
                    return render_to_response('task/close.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   626
                else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   627
                    closeTask(task, user, data['reason'])
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   628
                    return show_msg(user, "The task has been closed.", task_url, "view the task.")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   629
            else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   630
                return render_to_response('task/close.html', context)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   631
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   632
            return show_msg(user, "The task is either already closed or cannot be closed at this stage", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   633
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   634
        return show_msg(user, "You are not authorised to do this", task_url, "view the task")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   635
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   636
def delete_task(request, tid):
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   637
    """ mark the task status as DL.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   638
    take a reason from the user and pass on to all the other mentors.
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   639
    """
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   640
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   641
    task_url = "/task/view/tid=%s"%tid
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   642
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   643
    task = getTask(tid)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   644
    user = get_user(request.user) if request.user.is_authenticated() else request.user
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   645
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   646
    if task.status == "DL":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   647
        return show_msg(user, "This task no longer exists", '/task/browse/', "to browse other tasks")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   648
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   649
    can_delete = True if task.status == "UP" and task.created_by == user else False
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   650
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   651
    if can_delete:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   652
        if request.method == "POST":
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   653
            data = request.POST
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   654
            reason = data.get('reason', None)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   655
            deleteTask(task, user, reason)
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   656
            return show_msg(user, "The task is deleted", '/', "to return to home page")
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   657
        else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   658
            return render_to_response('task/delete.html',{'user':user,})
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   659
    else:
3c8f3b0e5b00 Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   660
        return show_msg(user, "You are not authorised to do this at this stage", task_url, "view the task")