pytask/taskapp/views.py
author Madhusudan.C.S <madhusudancs@gmail.com>
Sat, 15 Jan 2011 21:24:06 +0530
changeset 422 4bb891fc7a54
parent 408 0c12181e2c02
child 425 e15749fab2e4
permissions -rwxr-xr-x
Change imports to be more readable.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
     1
from datetime import datetime
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
     2
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
     3
from django import shortcuts
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
     4
from django.http import Http404
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
     5
from django.contrib.auth.decorators import login_required
362
070f01dd7d8e Select user works completely fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 360
diff changeset
     6
from django.contrib.auth.models import User
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
     7
from django.core.context_processors import csrf
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
     8
from django.core.urlresolvers import reverse
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
     9
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
    10
from pytask.views import show_msg
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    11
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    12
from pytask.taskapp import forms as taskapp_forms
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    13
from pytask.taskapp import models as taskapp_models
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    14
339
bce480ff6ddc used proper import for show_msg
Nishanth Amuluru <nishanth@fossee.in>
parents: 333
diff changeset
    15
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    16
@login_required
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    17
def create_task(request):
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    18
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    19
    user = request.user
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    20
    profile = user.get_profile()
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    21
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    22
    context = {"user": user,
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    23
               "profile": profile,
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    24
              }
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    25
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    26
    context.update(csrf(request))
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    27
340
0f9d485609ac fixed a few bugs
Nishanth Amuluru <nishanth@fossee.in>
parents: 339
diff changeset
    28
    can_create_task = False if profile.rights == "CT" else True
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    29
    if can_create_task:
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    30
        if request.method == "POST":
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    31
            form = taskapp_forms.CreateTaskForm(request.POST)
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    32
            if form.is_valid():
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    33
                data = form.cleaned_data.copy()
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    34
                data.update({"created_by": user,
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    35
                             "creation_datetime": datetime.now(),
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    36
                            })
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
    37
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    38
                task = taskapp_models.Task(**data)
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    39
                task.save()
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    40
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
    41
                task_url = reverse('view_task', kwargs={'task_id': task.id})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    42
                return shortcuts.redirect(task_url)
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    43
            else:
340
0f9d485609ac fixed a few bugs
Nishanth Amuluru <nishanth@fossee.in>
parents: 339
diff changeset
    44
                context.update({'form':form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    45
                return shortcuts.render_to_response(
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    46
                  'task/create.html', context)
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    47
        else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    48
            form = taskapp_forms.CreateTaskForm()
340
0f9d485609ac fixed a few bugs
Nishanth Amuluru <nishanth@fossee.in>
parents: 339
diff changeset
    49
            context.update({'form':form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    50
            return shortcuts.render_to_response('task/create.html', context)
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    51
    else:
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    52
        return show_msg(user, 'You are not authorised to create a task.')
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
    53
376
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    54
def browse_tasks(request):
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    55
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    56
    open_tasks = taskapp_models.Task.objects.filter(status="OP")
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    57
    working_tasks = taskapp_models.Task.objects.filter(status="WR")
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    58
    comp_tasks = taskapp_models.Task.objects.filter(status="CM")
376
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    59
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    60
    context = {"open_tasks": open_tasks,
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    61
               "working_tasks": working_tasks,
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    62
               "comp_tasks": comp_tasks,
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    63
              }
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    64
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    65
    user = request.user
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    66
    if not user.is_authenticated():
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    67
        return shortcuts.render_to_response("task/browse.html")
376
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    68
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    69
    profile = user.get_profile()
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    70
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    71
    can_approve = True if profile.rights in ["MG", "DC"] else False
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    72
    unpub_tasks = taskapp_models.Task.objects.filter(status="UP").exclude(status="DL")
376
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    73
    if can_approve:
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    74
        context.update({"unpub_tasks": unpub_tasks})
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    75
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    76
    context.update({"user": user,
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    77
                    "profile": profile,
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    78
                   })
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    79
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    80
    return shortcuts.render_to_response("task/browse.html", context)
376
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    81
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    82
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
    83
def view_task(request, task_id):
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
    84
    """ get the task depending on its task_id and display accordingly if it is a get.
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
    85
    check for authentication and add a comment if it is a post request.
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
    86
    """
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
    87
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
    88
    task_url = reverse('view_task', kwargs={'task_id': task_id})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    89
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
    90
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
    91
    user = request.user
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
    92
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
    93
    if not user.is_authenticated():
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    94
        return shortcuts.render_to_response("task/view.html", {"task": task})
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
    95
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
    96
    profile = user.get_profile()
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
    97
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
    98
    context = {"user": user,
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
    99
               "profile": profile,
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   100
               "task": task,
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   101
              }
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   102
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   103
    context.update(csrf(request))
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   104
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   105
    if task.status == "DL":
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   106
        return show_msg(user, 'This task no longer exists',
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   107
                        reverse('browse_tasks'), 'browse the tasks')
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   108
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   109
    task_viewable = True if ( task.status != "UP" ) or profile.rights != "CT"\
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   110
                         else False
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   111
    if not task_viewable:
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   112
        return show_msg(user, "You are not authorised to view this task",
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   113
                        reverse('browse_tasks'), "browse the tasks")
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   114
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   115
    reviewers = task.reviewers.all()
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   116
    is_reviewer = True if user in task.reviewers.all() else False
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   117
    comments = task.comments.filter(
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   118
      is_deleted=False).order_by('comment_datetime')
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   119
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   120
    context.update({'is_reviewer':is_reviewer,
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   121
                    'comments':comments,
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   122
                    'reviewers':reviewers,
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   123
                   })
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   124
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   125
    selected_users = task.selected_users.all()
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   126
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   127
    is_creator = True if user == task.created_by else False
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   128
365
32457bce3437 prettified a few pages
Nishanth Amuluru <nishanth@fossee.in>
parents: 363
diff changeset
   129
    context['selected_users'] = selected_users
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   130
    context['is_selected'] = True if user in selected_users else False
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   131
    context['can_approve'] = True if task.status == "UP" and\
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   132
                                     profile.rights in ["MG", "DC"]\
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   133
                                     else False
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   134
    context['can_edit'] = True if is_creator and task.status == "UP" else False
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   135
    context['can_close'] = True if task.status not in ["UP", "CD", "CM"] and is_reviewer else False
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   136
    context['can_delete'] = True if task.status == "UP" and is_creator else False
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   137
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   138
    context['can_assign_pynts'] = True if task.status in ["OP", "WR"] and is_reviewer else False
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   139
    context['task_claimable'] = True if task.status in ["OP", "WR"] else False
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   140
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   141
    context['can_comment'] = True if task.status != "UP" or\
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   142
                                     profile.rights!="CT" else False
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   143
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   144
    context['can_mod_reviewers'] = True if profile.rights in ["MG", "DC"] else\
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   145
                                   False
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   146
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   147
    if request.method == 'POST':
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   148
        form = taskapp_forms.TaskCommentForm(request.POST)
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   149
        if form.is_valid():
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   150
            data = form.cleaned_data['data']
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   151
            new_comment = taskapp_forms.TaskComment(
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   152
              task=task, data=data, commented_by=user,
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   153
              comment_datetime=datetime.now())
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   154
            new_comment.save()
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   155
            return shortcuts.redirect(task_url)
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   156
        else:
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   157
            context['form'] = form
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   158
            return shortcuts.render_to_response('task/view.html', context)
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   159
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   160
        form = taskapp_forms.TaskCommentForm()
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   161
        context['form'] = form
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   162
        return shortcuts.render_to_response('task/view.html', context)
349
1cc8d0b2eefb commenting on a task works as of now and there is a lot to do with view task
Nishanth Amuluru <nishanth@fossee.in>
parents: 340
diff changeset
   163
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   164
@login_required
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   165
def edit_task(request, task_id):
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   166
    """ only creator gets to edit the task and that too only before it gets
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   167
    approved.
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   168
    """
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   169
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   170
    user = request.user
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   171
    profile = user.get_profile()
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   172
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   173
    task_url = reverse('view_task', kwargs={'task_id': task_id})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   174
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   175
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   176
    is_creator = True if user == task.created_by else False
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   177
    can_edit = True if task.status == "UP" and is_creator else False
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   178
    if not can_edit:
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   179
        raise Http404
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   180
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   181
    context = {"user": user,
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   182
               "profile": profile,
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   183
               "task": task,
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   184
              }
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   185
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   186
    context.update(csrf(request))
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   187
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   188
    if request.method == "POST":
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   189
        form = taskapp_forms.EditTaskForm(request.POST, instance=task)
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   190
        if form.is_valid():
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   191
            form.save()
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   192
            return shortcuts.redirect(task_url)
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   193
        else:
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   194
            context.update({"form": form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   195
            return shortcuts.render_to_response("task/edit.html", context)
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   196
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   197
        form = taskapp_forms.EditTaskForm(instance=task)
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   198
        context.update({"form": form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   199
        return shortcuts.render_to_response("task/edit.html", context)
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   200
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   201
@login_required
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   202
def approve_task(request, task_id):
374
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   203
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   204
    user = request.user
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   205
    profile = user.get_profile()
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   206
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   207
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
374
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   208
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   209
    if profile.rights not in ["MG", "DC"] or task.status != "UP":
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   210
        raise Http404
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   211
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   212
    context = {"user": user,
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   213
               "profile": profile,
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   214
               "task": task,
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   215
              }
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   216
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   217
    return shortcuts.render_to_response("task/confirm_approval.html", context)
374
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   218
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   219
@login_required
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   220
def approved_task(request, task_id):
374
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   221
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   222
    user = request.user
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   223
    profile = user.get_profile()
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   224
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   225
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
374
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   226
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   227
    if profile.rights not in ["MG", "DC"] or task.status != "UP":
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   228
        raise Http404
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   229
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   230
    task.approved_by = user
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   231
    task.approval_datetime = datetime.now()
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   232
    task.status = "OP"
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   233
    task.save()
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   234
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   235
    context = {"user": user,
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   236
               "profile": profile,
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   237
               "task": task,
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   238
              }
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   239
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   240
    return shortcuts.render_to_response("task/approved_task.html", context)
374
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   241
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   242
@login_required
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   243
def addreviewer(request, task_id):
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   244
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   245
    user = request.user
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   246
    profile = user.get_profile()
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   247
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   248
    task_url = reverse('view_task', kwargs={'task_id': task_id})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   249
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   250
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   251
    can_mod_reviewers = True if profile.rights in ["MG", "DC"] else False
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   252
    if not can_mod_reviewers:
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   253
        raise Http404
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   254
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   255
    context = {"user": user,
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   256
               "profile": profile,
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   257
               "task": task,
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   258
              }
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   259
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   260
    context.update(csrf(request))
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   261
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   262
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   263
    # This part has to be made better
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   264
    reviewer_choices = User.objects.filter(is_active=True).\
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   265
                                           exclude(reviewing_tasks__id=task_id).\
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   266
                                           exclude(claimed_tasks__id=task_id).\
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   267
                                           exclude(selected_tasks__id=task_id).\
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   268
                                           exclude(created_tasks__id=task_id)
382
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   269
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   270
    choices = ((a_user.id,a_user.username) for a_user in reviewer_choices)
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   271
    label = "Reviewer"
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   272
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   273
    if request.method == "POST":
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   274
        form = taskapp_forms.ChoiceForm(choices, data=request.POST, label=label)
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   275
        if form.is_valid():
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   276
            data = form.cleaned_data.copy()
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   277
            uid = data['choice']
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   278
            reviewer = User.objects.get(id=uid)
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   279
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   280
            task.reviewers.add(reviewer)
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   281
            return shortcuts.redirect(task_url)
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   282
        else:
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   283
            context.update({"form": form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   284
            return shortcuts.render_to_response("task/addreviewer.html", context)
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   285
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   286
        form = taskapp_forms.ChoiceForm(choices, label=label)
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   287
        context.update({"form": form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   288
        return shortcuts.render_to_response("task/addreviewer.html", context)
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   289
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   290
def view_work(request, task_id):
382
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   291
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   292
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
382
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   293
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   294
    user = request.user
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   295
    old_reports = task.reports.all()
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   296
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   297
    context = {"task": task,
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   298
               "old_reports": old_reports,
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   299
              }
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   300
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   301
    if not user.is_authenticated():
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   302
        return shortcuts.render_to_response("task/view_work.html", context)
382
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   303
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   304
    profile = user.get_profile()
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   305
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   306
    context.update({"user": user,
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   307
                    "profile": profile,
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   308
                   })
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   309
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   310
    context.update(csrf(request))
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   311
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   312
    working_users = task.selected_users.all()
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   313
    is_working = True if user in working_users else False
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   314
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   315
    context.update({"is_working": is_working})
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   316
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   317
    return shortcuts.render_to_response("task/view_work.html", context)
382
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   318
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   319
@login_required
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   320
def view_report(request, report_id):
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   321
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   322
    try:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   323
        report = taskapp_models.WorkReport.objects.get(pk=report_id)
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   324
    except taskapp_models.WorkReport.DoesNotExist:
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   325
        raise Http404
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   326
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   327
    user = request.user
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   328
    context = {"report": report,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   329
               "user": user,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   330
              }
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   331
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   332
    if not user.is_authenticated():
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   333
        return shortcuts.render_to_response("task/view_report.html", context)
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   334
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   335
    profile = user.get_profile()
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   336
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   337
    context.update({"profile": profile})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   338
    return shortcuts.render_to_response("task/view_report.html", context)
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   339
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   340
@login_required
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   341
def submit_report(request, task_id):
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   342
    """ Check if the work is in WR state and the user is in assigned_users.
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   343
    """
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   344
    task_url = reverse('view_task', kwargs={'task_id': task_id})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   345
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   346
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   347
    user = request.user
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   348
    old_reports = task.reports.all()
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   349
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   350
    if not task.status == "WR":
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   351
        raise Http404
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   352
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   353
    can_upload = True if user in task.selected_users.all() else False
382
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   354
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   355
    context = {
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   356
        'user': user,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   357
        'task': task,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   358
        'can_upload': can_upload,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   359
    }
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   360
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   361
    context.update(csrf(request))
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   362
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   363
    if request.method == "POST":
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   364
        if not can_upload:
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   365
            return show_msg(user, "You are not authorised to upload data to this task", task_url, "view the task")
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   366
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   367
        form = taskapp_forms.WorkReportForm(request.POST, request.FILES)
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   368
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   369
        if form.is_valid():
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   370
            data = form.cleaned_data.copy()
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   371
            data.update({"task":task,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   372
                         "revision": old_reports.count(),
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   373
                         "submitted_by": user,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   374
                         "submitted_at": datetime.now(),
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   375
                        })
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   376
            r = taskapp_models.WorkReport(**data)
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   377
            r.save()
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   378
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   379
            report_url = reverse('view_report', kwargs={'report_id': r.id})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   380
            return shortcuts.redirect(report_url)
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   381
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   382
        else:
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   383
            context.update({"form":form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   384
            return shortcuts.render_to_response('task/submit_report.html', context)
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   385
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   386
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   387
        form = taskapp_forms.WorkReportForm()
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   388
        context.update({"form":form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   389
        return shortcuts.render_to_response('task/submit_report.html', context)
382
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   390
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   391
@login_required
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   392
def create_textbook(request):
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   393
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   394
    user = request.user
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   395
    profile = user.get_profile()
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   396
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   397
    can_create = True if profile.rights != "CT" else False
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   398
    if not can_create:
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   399
        raise Http404
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   400
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   401
    context = {"user": user,
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   402
               "profile": profile,
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   403
              }
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   404
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   405
    context.update(csrf(request))
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   406
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   407
    if request.method == "POST":
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   408
        form = taskapp_forms.CreateTextbookForm(request.POST)
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   409
        if form.is_valid():
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   410
            data = form.cleaned_data.copy()
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   411
            data.update({"created_by": user,
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   412
                         "creation_datetime": datetime.now()})
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   413
            del data['chapters']
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   414
            new_textbook = taskapp_models.TextBook(**data)
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   415
            new_textbook.save()
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   416
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   417
            new_textbook.chapters = form.cleaned_data['chapters']
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   418
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   419
            textbook_url = reverse(
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   420
              'view_textbook', kwargs={'task_id': new_textbook.id})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   421
            return shortcuts.redirect(textbook_url)
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   422
        else:
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   423
            context.update({"form": form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   424
            return shortcuts.render_to_response("task/create_textbook.html", context)
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   425
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   426
        form = taskapp_forms.CreateTextbookForm()
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   427
        context.update({"form": form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   428
        return shortcuts.render_to_response("task/create_textbook.html", context)
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   429
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   430
def view_textbook(request, task_id):
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   431
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   432
    textbook = shortcuts.get_object_or_404(taskapp_models.TextBook, pk=task_id)
387
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   433
    chapters = textbook.chapters.all()
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   434
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   435
    user = request.user
387
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   436
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   437
    context = {"user": user,
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   438
               "textbook": textbook,
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   439
               "chapters": chapters,
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   440
              }
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   441
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   442
    if not user.is_authenticated():
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   443
        return shortcuts.render_to_response("task/view_textbook.html", context)
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   444
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   445
    profile = user.get_profile()
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   446
387
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   447
    context.update({"profile": profile,
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   448
                    "textbook": textbook,
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   449
                   })
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   450
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   451
    context.update(csrf(request))
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   452
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   453
    can_edit = True if user == textbook.created_by and textbook.status == "UP"\
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   454
                       else False
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   455
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   456
    can_approve = True if profile.rights in ["MG", "DC"] and \
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   457
                          textbook.status == "UP" else False
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   458
387
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   459
    context.update({"can_edit": can_edit,
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   460
                    "can_approve": can_approve})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   461
    return shortcuts.render_to_response("task/view_textbook.html", context)
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   462
372
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   463
def browse_textbooks(request):
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   464
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   465
    user = request.user
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   466
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   467
    open_textbooks = taskapp_models.TextBook.objects.filter(status="OP").\
372
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   468
                                      order_by("creation_datetime")
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   469
    comp_textbooks = taskapp_models.TextBook.objects.filter(status="CM").\
372
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   470
                                      order_by("creation_datetime")
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   471
    context = {"user": user,
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   472
               "open_textbooks": open_textbooks,
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   473
               "comp_textbooks": comp_textbooks,
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   474
              }
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   475
377
4f0cfd486d9b approve text book is meaningful now
Nishanth Amuluru <nishanth@fossee.in>
parents: 376
diff changeset
   476
    if user.is_authenticated() and user.get_profile().rights in ["DC", "MG"]:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   477
        unpub_textbooks = taskapp_models.TextBook.objects.filter(status="UP")
372
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   478
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   479
        context.update({"unpub_textbooks": unpub_textbooks})
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   480
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   481
    return shortcuts.render_to_response("task/browse_textbooks.html", context)
372
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   482
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   483
@login_required
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   484
def edit_textbook(request, task_id):
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   485
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   486
    user = request.user
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   487
    profile = user.get_profile()
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   488
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   489
    textbook = shortcuts.get_object_or_404(taskapp_models.TextBook, pk=task_id)
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   490
    textbook_url = reverse(
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   491
      'view_textbook', kwargs={'task_id': textbook.id})
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   492
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   493
    can_edit = True if user == textbook.created_by and textbook.status == "UP"\
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   494
                       else False
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   495
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   496
    if not can_edit:
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   497
        raise Http404
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   498
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   499
    context = {"user": user,
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   500
               "profile": profile,
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   501
               "textbook": textbook,
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   502
              }
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   503
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   504
    context.update(csrf(request))
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   505
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   506
    if request.method == "POST":
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   507
        form = taskapp_forms.EditTextbookForm(request.POST, instance=textbook)
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   508
        if form.is_valid():
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   509
            form.save()
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   510
            return shortcuts.redirect(textbook_url)
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   511
        else:
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   512
            context.update({"form": form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   513
            return shortcuts.render_to_response("task/edit_textbook.html", context)
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   514
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   515
        form = taskapp_forms.EditTextbookForm(instance=textbook)
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   516
        context.update({"form": form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   517
        return shortcuts.render_to_response("task/edit_textbook.html", context)
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   518
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   519
@login_required
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   520
def claim_task(request, task_id):
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   521
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   522
    claim_url = "/task/claim/task_id=%s"%task_id
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   523
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   524
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   525
    if task.status == "UP":
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   526
        raise Http404
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   527
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   528
    user = request.user
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   529
    profile = user.get_profile()
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   530
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   531
    context = {"user": user,
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   532
               "profile": profile,
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   533
               "task": task,
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   534
              }
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   535
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   536
    context.update(csrf(request))
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   537
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   538
    reviewers = task.reviewers.all()
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   539
    claimed_users = task.claimed_users.all()
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   540
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   541
    is_creator = True if user == task.created_by else False
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   542
    is_reviewer = True if user in reviewers else False
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   543
    has_claimed = True if user in claimed_users else False
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   544
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   545
    task_claimable = True if task.status in ["OP", "WR"] else False
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   546
    can_claim = True if task_claimable and ( not has_claimed )\
357
ec7f2f4256f5 now the creator can select users
Nishanth Amuluru <nishanth@fossee.in>
parents: 356
diff changeset
   547
                        and ( not is_reviewer ) and (not is_creator ) \
ec7f2f4256f5 now the creator can select users
Nishanth Amuluru <nishanth@fossee.in>
parents: 356
diff changeset
   548
                        else False
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   549
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   550
    old_claims = task.claims.all()
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   551
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   552
    context.update({"is_creator": is_creator,
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   553
                    "task_claimable": task_claimable,
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   554
                    "can_claim": can_claim,
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   555
                    "old_claims": old_claims})
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   556
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   557
    if request.method == "POST" and can_claim:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   558
        form = taskapp_forms.ClaimTaskForm(request.POST)
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   559
        if form.is_valid():
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   560
            data = form.cleaned_data.copy()
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   561
            data.update({"task": task,
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   562
                         "claim_datetime": datetime.now(),
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   563
                         "claimed_by": user,})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   564
            new_claim = taskapp_models.TaskClaim(**data)
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   565
            new_claim.save()
355
c693def6510f added the step of adding user to claimed users
Nishanth Amuluru <nishanth@fossee.in>
parents: 353
diff changeset
   566
c693def6510f added the step of adding user to claimed users
Nishanth Amuluru <nishanth@fossee.in>
parents: 353
diff changeset
   567
            task.claimed_users.add(user)
c693def6510f added the step of adding user to claimed users
Nishanth Amuluru <nishanth@fossee.in>
parents: 353
diff changeset
   568
            task.save()
c693def6510f added the step of adding user to claimed users
Nishanth Amuluru <nishanth@fossee.in>
parents: 353
diff changeset
   569
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   570
            return shortcuts.redirect(claim_url)
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   571
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   572
        else:
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   573
            context.update({"form": form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   574
            return shortcuts.render_to_response("task/claim.html", context)
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   575
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   576
        form = taskapp_forms.ClaimTaskForm()
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   577
        context.update({"form": form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   578
        return shortcuts.render_to_response("task/claim.html", context)
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   579
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   580
@login_required
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   581
def select_user(request, task_id):
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   582
    """ first get the status of the task and then select one of claimed users
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   583
    generate list of claimed users by passing it as an argument to a function.
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   584
    """
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   585
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   586
    task_url = reverse('view_task', kwargs={'task_id': task_id})
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   587
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   588
    user = request.user
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   589
    profile = user.get_profile()
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   590
    task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   591
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   592
    context = {"user": user,
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   593
               "profile": profile,
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   594
               "task": task,
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   595
              }
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   596
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   597
    context.update(csrf(request))
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   598
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   599
    claimed_users = task.claimed_users.all()
362
070f01dd7d8e Select user works completely fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 360
diff changeset
   600
    task_claimed = True if claimed_users else False
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   601
    
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   602
    is_creator = True if user == task.created_by else False
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   603
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   604
    if ( is_creator or profile.rights in ["CR", "DC"] ) and \
362
070f01dd7d8e Select user works completely fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 360
diff changeset
   605
       task.status in ["OP", "WR"]:
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   606
362
070f01dd7d8e Select user works completely fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 360
diff changeset
   607
        if task_claimed:
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   608
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   609
            user_list = ((user.id,user.username) for user in claimed_users)
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   610
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   611
            if request.method == "POST":
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   612
                form = taskapp_forms.ChoiceForm(user_list, request.POST)
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   613
                if form.is_valid():
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   614
                    uid = form.cleaned_data['choice']
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   615
                    selected_user = User.objects.get(id=uid)
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   616
362
070f01dd7d8e Select user works completely fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 360
diff changeset
   617
                    task.selected_users.add(selected_user)
070f01dd7d8e Select user works completely fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 360
diff changeset
   618
                    task.claimed_users.remove(selected_user)
363
9b0812962133 created the home page
Nishanth Amuluru <nishanth@fossee.in>
parents: 362
diff changeset
   619
                    task.status = "WR"
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   620
                    task.save()
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   621
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   622
                    return shortcuts.redirect(task_url)
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   623
                else:
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   624
                    context.update({"form": form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   625
                    return shortcuts.render_to_response('task/select_user.html', context)
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   626
            else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   627
                form = taskapp_forms.ChoiceForm(user_list)
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   628
                context.update({"form": form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   629
                return shortcuts.render_to_response('task/select_user.html', context)
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   630
        else:
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   631
            return show_msg(user, 'There are no pending claims for this task',
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   632
                            task_url, 'view the task')
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   633
    else:
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   634
        raise Http404
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   635
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   636
@login_required
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   637
def approve_textbook(request, task_id):
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   638
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   639
    user = request.user
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   640
    profile = user.get_profile()
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   641
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   642
    textbook = shortcuts.get_object_or_404(taskapp_models.TextBook, pk=task_id)
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   643
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   644
    if profile.rights not in ["MG", "DC"] or textbook.status != "UP":
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   645
        raise Http404
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   646
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   647
    context = {"user": user,
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   648
               "profile": profile,
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   649
               "textbook": textbook,
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   650
              }
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   651
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   652
    return shortcuts.render_to_response("task/confirm_textbook_approval.html", context)
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   653
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   654
@login_required
408
0c12181e2c02 Make changes to the import styles, ids used and use reverse function for URL generation instead of hard coded URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 387
diff changeset
   655
def approved_textbook(request, task_id):
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   656
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   657
    user = request.user
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   658
    profile = user.get_profile()
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   659
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   660
    textbook = shortcuts.get_object_or_404(taskapp_models.TextBook, pk=task_id)
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   661
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   662
    if profile.rights not in ["MG", "DC"] or textbook.status != "UP":
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   663
        raise Http404
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   664
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   665
    textbook.approved_by = user
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   666
    textbook.approval_datetime = datetime.now()
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   667
    textbook.status = "OP"
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   668
    textbook.save()
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   669
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   670
    context = {"user": user,
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   671
               "profile": profile,
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   672
               "textbook": textbook,
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   673
              }
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   674
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   675
    return shortcuts.render_to_response("task/approved_textbook.html", context)