pytask/taskapp/views.py
author Madhusudan.C.S <madhusudancs@gmail.com>
Thu, 20 Jan 2011 17:46:49 +0530
changeset 501 b84d6a1d4603
parent 500 42516ec56822
child 506 db2edf922849
permissions -rwxr-xr-x
Change all the queries to Textbook model to Tasks. Since Textbook model is deprecated now, implemented the changes in the views to query respected queries and make corresponding changes in the views.
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
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
     4
from django import http
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
     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
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
     9
from django.template import RequestContext
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
    10
from django.utils import simplejson as json
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    11
497
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
    12
from tagging.managers import TaggedItem
428
c9d8cd54195e Remove the redundant function for suggesting tags and added the required import.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 427
diff changeset
    13
from tagging.models import Tag
c9d8cd54195e Remove the redundant function for suggesting tags and added the required import.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 427
diff changeset
    14
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
    15
from pytask.views import show_msg
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    16
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
    17
from pytask.profile import models as profile_models
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
    18
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    19
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
    20
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
    21
339
bce480ff6ddc used proper import for show_msg
Nishanth Amuluru <nishanth@fossee.in>
parents: 333
diff changeset
    22
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    23
@login_required
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    24
def create_task(request):
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
    user = request.user
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    27
    profile = user.get_profile()
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    28
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    29
    context = {"user": user,
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    30
               "profile": profile,
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    31
              }
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    32
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    33
    context.update(csrf(request))
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    34
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
    35
    can_create_task = False if (
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
    36
      profile.role == profile_models.ROLES_CHOICES[3][0]) else True
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    37
    if can_create_task:
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    38
        if request.method == "POST":
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    39
            form = taskapp_forms.CreateTaskForm(request.POST)
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    40
            if form.is_valid():
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    41
                data = form.cleaned_data.copy()
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    42
                data.update({"created_by": user,
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    43
                             "creation_datetime": datetime.now(),
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    44
                            })
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
    45
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    46
                task = taskapp_models.Task(**data)
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    47
                task.save()
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    48
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
    49
                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
    50
                return shortcuts.redirect(task_url)
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    51
            else:
340
0f9d485609ac fixed a few bugs
Nishanth Amuluru <nishanth@fossee.in>
parents: 339
diff changeset
    52
                context.update({'form':form})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    53
                return shortcuts.render_to_response(
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
    54
                  'task/edit.html', RequestContext(request, context))
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    55
        else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
    56
            form = taskapp_forms.CreateTaskForm()
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
    57
            context.update({'form': form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
    58
            return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
    59
              'task/edit.html', RequestContext(request, context))
333
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    60
    else:
eb3a191850a1 created a view for create task
Nishanth Amuluru <nishanth@fossee.in>
parents: 307
diff changeset
    61
        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
    62
376
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    63
def browse_tasks(request):
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    64
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
    65
    open_tasks = taskapp_models.Task.objects.filter(status=taskapp_models.TASK_STATUS_CHOICES[1][0])
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
    66
    working_tasks = taskapp_models.Task.objects.filter(status=taskapp_models.TASK_STATUS_CHOICES[3][0])
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
    67
    comp_tasks = taskapp_models.Task.objects.filter(status=taskapp_models.TASK_STATUS_CHOICES[6][0])
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
    context = {"open_tasks": open_tasks,
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    70
               "working_tasks": working_tasks,
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    71
               "comp_tasks": comp_tasks,
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    72
              }
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    73
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    74
    user = request.user
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    75
    if not user.is_authenticated():
489
9cd090b8cd52 Return whatever context can be shown for non-logged in user for tasks browse.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 451
diff changeset
    76
        return shortcuts.render_to_response("task/browse.html",
9cd090b8cd52 Return whatever context can be shown for non-logged in user for tasks browse.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 451
diff changeset
    77
                                            RequestContext(request, context))
376
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
    profile = user.get_profile()
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    80
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
    81
    can_approve = True if profile.role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] else False
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
    82
    unpub_tasks = taskapp_models.Task.objects.filter(status=taskapp_models.TASK_STATUS_CHOICES[0][0]).exclude(status=taskapp_models.TASK_STATUS_CHOICES[5][0])
376
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    83
    if can_approve:
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    84
        context.update({"unpub_tasks": unpub_tasks})
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    85
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    86
    context.update({"user": user,
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    87
                    "profile": profile,
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    88
                   })
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    89
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
    90
    return shortcuts.render_to_response("task/browse.html",
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
    91
                                        RequestContext(request, context))
376
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    92
5a94c774473c browse tasks works fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 374
diff changeset
    93
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
    94
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
    95
    """ 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
    96
    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
    97
    """
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
    98
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
    99
    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
   100
    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
   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
    user = request.user
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   103
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   104
    if not user.is_authenticated():
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   105
        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
   106
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
   107
    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
   108
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
   109
    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
   110
               "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
   111
               "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
   112
              }
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
   113
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
    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
   115
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   116
    if task.status == taskapp_models.TASK_STATUS_CHOICES[5][0]:
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
        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
   118
                        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
   119
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
   120
    task_viewable = True if ( task.status != taskapp_models.TASK_STATUS_CHOICES[0][0] ) or profile.role != profile_models.ROLES_CHOICES[3][0] \
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   121
                         else False
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   122
    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
   123
        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
   124
                        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
   125
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   126
    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
   127
    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
   128
    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
   129
      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
   130
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   131
    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
   132
                    '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
   133
                    '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
   134
                   })
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
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   136
    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
   137
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   138
    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
   139
365
32457bce3437 prettified a few pages
Nishanth Amuluru <nishanth@fossee.in>
parents: 363
diff changeset
   140
    context['selected_users'] = selected_users
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   141
    context['is_selected'] = True if user in selected_users else False
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   142
    context['can_approve'] = True if task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] and\
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
   143
                                     profile.role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]]\
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   144
                                     else False
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   145
    context['can_edit'] = True if is_creator and task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] else False
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   146
    context['can_close'] = True if task.status not in [taskapp_models.TASK_STATUS_CHOICES[0][0], taskapp_models.TASK_STATUS_CHOICES[4][0], taskapp_models.TASK_STATUS_CHOICES[6][0]] and is_reviewer else False
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   147
    context['can_delete'] = True if task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] 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
   148
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   149
    context['can_assign_pynts'] = True if task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]] and is_reviewer else False
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   150
    context['task_claimable'] = True if task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]] else False
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   151
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   152
    context['can_comment'] = True if task.status != taskapp_models.TASK_STATUS_CHOICES[0][0] or\
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
   153
                                     profile.role != profile_models.ROLES_CHOICES[3][0] 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
   154
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
   155
    context['can_mod_reviewers'] = True if profile.role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] else\
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   156
                                   False
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   157
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
   158
    if request.method == 'POST':
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   159
        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
   160
        if form.is_valid():
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   161
            data = form.cleaned_data['data']
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   162
            new_comment = taskapp_forms.TaskComment(
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   163
              task=task, data=data, commented_by=user,
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   164
              comment_datetime=datetime.now())
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   165
            new_comment.save()
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   166
            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
   167
        else:
350
4cc40503bf3c view task is now in some shape atleast
Nishanth Amuluru <nishanth@fossee.in>
parents: 349
diff changeset
   168
            context['form'] = form
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   169
            return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   170
              'task/view.html', RequestContext(request, 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
   171
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   172
        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
   173
        context['form'] = form
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   174
        return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   175
          'task/view.html', RequestContext(request, 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
   176
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   177
@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
   178
def edit_task(request, task_id):
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   179
    """ 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
   180
    approved.
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   181
    """
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   182
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   183
    user = request.user
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   184
    profile = user.get_profile()
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   185
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
   186
    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
   187
    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
   188
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   189
    is_creator = True if user == task.created_by else False
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   190
    can_edit = True if task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] and is_creator else False
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   191
    if not can_edit:
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   192
        raise http.Http404
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   193
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   194
    context = {"user": user,
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   195
               "profile": profile,
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   196
               "task": task,
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   197
              }
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   198
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   199
    context.update(csrf(request))
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   200
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   201
    if request.method == "POST":
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   202
        form = taskapp_forms.EditTaskForm(request.POST, instance=task)
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   203
        if form.is_valid():
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   204
            form.save()
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   205
            return shortcuts.redirect(task_url)
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   206
        else:
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   207
            context.update({"form": form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   208
            return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   209
              "task/edit.html", RequestContext(request, context))
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   210
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   211
        form = taskapp_forms.EditTaskForm(instance=task)
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   212
        context.update({"form": form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   213
        return shortcuts.render_to_response("task/edit.html",
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   214
                                            RequestContext(request, context))
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   215
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   216
@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
   217
def approve_task(request, task_id):
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
    user = request.user
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   220
    profile = user.get_profile()
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   221
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   222
    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
   223
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
   224
    if profile.role not in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] or task.status != taskapp_models.TASK_STATUS_CHOICES[0][0]:
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   225
        raise http.Http404
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
    context = {"user": user,
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   228
               "profile": profile,
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   229
               "task": task,
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   230
              }
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   231
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   232
    return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   233
      "task/confirm_approval.html", RequestContext(request, context))
374
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
@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
   236
def approved_task(request, task_id):
374
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   237
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   238
    user = request.user
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   239
    profile = user.get_profile()
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   240
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   241
    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
   242
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
   243
    if profile.role not in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] or task.status != taskapp_models.TASK_STATUS_CHOICES[0][0]:
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   244
        raise http.Http404
374
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   245
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   246
    task.approved_by = user
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   247
    task.approval_datetime = datetime.now()
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   248
    task.status = taskapp_models.TASK_STATUS_CHOICES[1][0]
374
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   249
    task.save()
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   250
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   251
    context = {"user": user,
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   252
               "profile": profile,
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   253
               "task": task,
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   254
              }
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   255
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   256
    return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   257
      "task/approved_task.html", RequestContext(request, context))
374
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   258
cdd8026ee60e task approval is fine now
Nishanth Amuluru <nishanth@fossee.in>
parents: 373
diff changeset
   259
@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
   260
def addreviewer(request, task_id):
381
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
    user = request.user
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   263
    profile = user.get_profile()
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   264
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
   265
    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
   266
    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
   267
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
   268
    can_mod_reviewers = True if profile.role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] else False
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   269
    if not can_mod_reviewers:
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   270
        raise http.Http404
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   271
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   272
    context = {"user": user,
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   273
               "profile": profile,
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   274
               "task": task,
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   275
              }
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   276
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   277
    context.update(csrf(request))
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   278
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
    # This part has to be made better
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   281
    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
   282
                                           exclude(reviewing_tasks__id=task_id).\
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   283
                                           exclude(claimed_tasks__id=task_id).\
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   284
                                           exclude(selected_tasks__id=task_id).\
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   285
                                           exclude(created_tasks__id=task_id)
382
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   286
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   287
    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
   288
    label = "Reviewer"
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   289
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   290
    if request.method == "POST":
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   291
        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
   292
        if form.is_valid():
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   293
            data = form.cleaned_data.copy()
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   294
            uid = data['choice']
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   295
            reviewer = User.objects.get(id=uid)
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   296
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   297
            task.reviewers.add(reviewer)
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   298
            return shortcuts.redirect(task_url)
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   299
        else:
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   300
            context.update({"form": form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   301
            return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   302
              "task/addreviewer.html", RequestContext(request, context))
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   303
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   304
        form = taskapp_forms.ChoiceForm(choices, label=label)
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   305
        context.update({"form": form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   306
        return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   307
          "task/addreviewer.html", RequestContext(request, context))
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   308
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
   309
def view_work(request, task_id):
382
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   310
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   311
    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
   312
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   313
    user = request.user
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   314
    old_reports = task.reports.all()
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   315
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   316
    context = {"task": task,
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   317
               "old_reports": old_reports,
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
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   320
    if not user.is_authenticated():
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   321
        return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   322
          "task/view_work.html", RequestContext(request, context))
382
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   323
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   324
    profile = user.get_profile()
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   325
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   326
    context.update({"user": user,
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   327
                    "profile": profile,
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   328
                   })
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   329
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   330
    context.update(csrf(request))
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   331
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   332
    working_users = task.selected_users.all()
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   333
    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
   334
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   335
    context.update({"is_working": is_working})
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   336
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   337
    return shortcuts.render_to_response("task/view_work.html",
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   338
                                        RequestContext(request, context))
382
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   339
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
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 view_report(request, report_id):
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   342
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   343
    report = shortcuts.get_object_or_404(taskapp_models.WorkReport,
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   344
                                         pk=report_id)
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   345
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   346
    user = request.user
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   347
    context = {"report": report,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   348
               "user": user,
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
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   351
    if not user.is_authenticated():
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   352
        return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   353
          "task/view_report.html", RequestContext(request, context))
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   354
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   355
    profile = user.get_profile()
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   356
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   357
    context.update({"profile": profile})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   358
    return shortcuts.render_to_response("task/view_report.html",
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   359
                                        RequestContext(request, context))
383
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
@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
   362
def submit_report(request, task_id):
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   363
    """ 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
   364
    """
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
   365
    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
   366
    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
   367
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   368
    user = request.user
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   369
    old_reports = task.reports.all()
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   370
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   371
    if not task.status == taskapp_models.TASK_STATUS_CHOICES[3][0]:
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   372
        raise http.Http404
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   373
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   374
    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
   375
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   376
    context = {
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   377
        'user': user,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   378
        'task': task,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   379
        'can_upload': can_upload,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   380
    }
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
    context.update(csrf(request))
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   384
    if request.method == "POST":
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   385
        if not can_upload:
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   386
            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
   387
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   388
        form = taskapp_forms.WorkReportForm(request.POST, request.FILES)
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   389
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   390
        if form.is_valid():
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   391
            data = form.cleaned_data.copy()
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   392
            data.update({"task":task,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   393
                         "revision": old_reports.count(),
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   394
                         "submitted_by": user,
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   395
                         "submitted_at": datetime.now(),
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   396
                        })
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   397
            r = taskapp_models.WorkReport(**data)
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   398
            r.save()
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   399
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
   400
            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
   401
            return shortcuts.redirect(report_url)
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   402
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   403
        else:
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   404
            context.update({"form":form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   405
            return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   406
              'task/submit_report.html', RequestContext(request, context))
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   407
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   408
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   409
        form = taskapp_forms.WorkReportForm()
383
4252da60a4ef submit report works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 382
diff changeset
   410
        context.update({"form":form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   411
        return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   412
          'task/submit_report.html', RequestContext(request, context))
382
daca865314e7 view_work is now working
Nishanth Amuluru <nishanth@fossee.in>
parents: 381
diff changeset
   413
381
da4c6b1cec7d add reviewer works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 380
diff changeset
   414
@login_required
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   415
def create_textbook(request):
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   416
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   417
    user = request.user
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   418
    profile = user.get_profile()
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   419
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
   420
    can_create = True if profile.role != profile_models.ROLES_CHOICES[3][0] else False
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   421
    if not can_create:
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   422
        raise http.Http404
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   423
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   424
    context = {"user": user,
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   425
               "profile": profile,
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   426
              }
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   427
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   428
    context.update(csrf(request))
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   429
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   430
    if request.method == "POST":
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   431
        form = taskapp_forms.CreateTextbookForm(request.POST)
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   432
        if form.is_valid():
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   433
            data = form.cleaned_data.copy()
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   434
            data.update({"created_by": user,
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   435
                         "creation_datetime": datetime.now()})
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   436
            del data['chapters']
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   437
            new_textbook = taskapp_models.TextBook(**data)
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   438
            new_textbook.save()
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   439
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   440
            new_textbook.chapters = form.cleaned_data['chapters']
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   441
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
   442
            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
   443
              '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
   444
            return shortcuts.redirect(textbook_url)
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   445
        else:
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   446
            context.update({"form": form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   447
            return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   448
              "task/edit.html", RequestContext(request, context))
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   449
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   450
        form = taskapp_forms.CreateTextbookForm()
368
a4fa11b2cb5c add textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 366
diff changeset
   451
        context.update({"form": form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   452
        return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   453
          "task/edit.html", RequestContext(request, context))
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   454
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
   455
def view_textbook(request, task_id):
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   456
501
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   457
    # Shortcut to get_object_or_404 is not used since django-tagging
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   458
    # api expects a queryset object for tag filtering.
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   459
    task = taskapp_models.Task.objects.filter(pk=task_id)
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   460
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   461
    textbooks = TaggedItem.objects.get_by_model(task, ['Textbook'])
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   462
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   463
    if textbooks:
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   464
        textbook = textbooks[0]
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   465
    else:
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   466
        raise http.Http404
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   467
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   468
    #chapters = textbook.chapters.all()
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   469
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   470
    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
   471
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   472
    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
   473
               "textbook": textbook,
501
b84d6a1d4603 Change all the queries to Textbook model to Tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 500
diff changeset
   474
    #           "chapters": chapters,
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
   475
              }
32dd15eaf9d0 fixed a bug where guest users were not able to view the page correctly
Nishanth Amuluru <nishanth@fossee.in>
parents: 386
diff changeset
   476
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   477
    if not user.is_authenticated():
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   478
        return shortcuts.render_to_response("task/view_textbook.html",
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   479
                                            RequestContext(request, context))
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   480
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   481
    profile = user.get_profile()
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   482
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
   483
    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
   484
                    "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
   485
                   })
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   486
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   487
    context.update(csrf(request))
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   488
500
42516ec56822 Fix styling issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 497
diff changeset
   489
    if (user == textbook.created_by and
42516ec56822 Fix styling issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 497
diff changeset
   490
      textbook.status == taskapp_models.TB_STATUS_CHOICES[0][0]):
42516ec56822 Fix styling issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 497
diff changeset
   491
        can_edit = True
42516ec56822 Fix styling issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 497
diff changeset
   492
    else:
42516ec56822 Fix styling issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 497
diff changeset
   493
        can_edit = False
42516ec56822 Fix styling issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 497
diff changeset
   494
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   495
500
42516ec56822 Fix styling issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 497
diff changeset
   496
    if (profile.role in [profile_models.ROLES_CHOICES[0][0],
42516ec56822 Fix styling issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 497
diff changeset
   497
      profile_models.ROLES_CHOICES[1][0]] and
42516ec56822 Fix styling issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 497
diff changeset
   498
      textbook.status == taskapp_models.TB_STATUS_CHOICES[0][0]):
42516ec56822 Fix styling issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 497
diff changeset
   499
        can_approve = True
42516ec56822 Fix styling issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 497
diff changeset
   500
    else:
42516ec56822 Fix styling issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 497
diff changeset
   501
        can_approve = False
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   502
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
   503
    context.update({"can_edit": can_edit,
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   504
                    "can_approve": can_approve})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   505
    return shortcuts.render_to_response("task/view_textbook.html",
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   506
                                        RequestContext(request, context))
370
1be4a3c09a47 view textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 368
diff changeset
   507
372
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   508
def browse_textbooks(request):
495
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   509
    """View to list all the open textbooks. This view fetches tasks
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   510
    tagged with Textbook.
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   511
    """
372
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   512
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   513
    user = request.user
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   514
495
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   515
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   516
    # Get all the textbooks that are Open.
497
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   517
    open_textbooks = taskapp_models.Task.objects.filter(
495
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   518
      status=taskapp_models.TASK_STATUS_CHOICES[1][0]).order_by(
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   519
      'creation_datetime')
372
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   520
497
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   521
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   522
    context = {
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   523
      'aero_textbooks': TaggedItem.objects.get_by_model(
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   524
        open_textbooks, ['Textbook', 'Aerospace']),
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   525
      'chemical_textbooks': TaggedItem.objects.get_by_model(
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   526
        open_textbooks, ['Textbook', 'Chemical']),
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   527
      'computerscience_textbooks': TaggedItem.objects.get_by_model(
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   528
        open_textbooks, ['Textbook', 'ComputerScience']),
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   529
      'electrical_textbooks': TaggedItem.objects.get_by_model(
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   530
        open_textbooks, ['Textbook', 'Electrical']),
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   531
      'engineeringphysics_textbooks': TaggedItem.objects.get_by_model(
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   532
        open_textbooks, ['Textbook', 'EngineeringPhysics']),
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   533
      'mechanical_textbooks': TaggedItem.objects.get_by_model(
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   534
        open_textbooks, ['Mechanical', 'Textbook']),
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   535
      'metallurgical_textbooks': TaggedItem.objects.get_by_model(
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   536
        open_textbooks, ['Textbook', 'Metallurgical']),
6386458d749b List each department textbooks separately for now, think of a clever way later.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 495
diff changeset
   537
      }
495
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   538
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   539
    # Nothing
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   540
    if user.is_authenticated() and (user.get_profile().role in
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   541
      [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]]):
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   542
        unpub_textbooks = taskapp_models.TextBook.objects.filter(
773e886d9b80 Textbooks list page should list all the tasks tagged with textbooks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 489
diff changeset
   543
          status=taskapp_models.TB_STATUS_CHOICES[0][0])
372
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   544
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   545
        context.update({"unpub_textbooks": unpub_textbooks})
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   546
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   547
    return shortcuts.render_to_response("task/browse_textbooks.html",
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   548
                                        RequestContext(request, context))
372
563fe356947d created browse textbooks page
Nishanth Amuluru <nishanth@fossee.in>
parents: 370
diff changeset
   549
366
4c349f310dfc edit task works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 365
diff changeset
   550
@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
   551
def edit_textbook(request, task_id):
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   552
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   553
    user = request.user
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   554
    profile = user.get_profile()
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   555
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   556
    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
   557
    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
   558
      'view_textbook', kwargs={'task_id': textbook.id})
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   559
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   560
    can_edit = True if user == textbook.created_by and textbook.status == taskapp_models.TB_STATUS_CHOICES[0][0]\
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   561
                       else False
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   562
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   563
    if not can_edit:
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   564
        raise http.Http404
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   565
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   566
    context = {"user": user,
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   567
               "profile": profile,
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   568
               "textbook": textbook,
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   569
              }
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   570
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   571
    context.update(csrf(request))
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   572
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   573
    if request.method == "POST":
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   574
        form = taskapp_forms.EditTextbookForm(request.POST, instance=textbook)
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   575
        if form.is_valid():
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   576
            form.save()
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   577
            return shortcuts.redirect(textbook_url)
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   578
        else:
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   579
            context.update({"form": form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   580
            return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   581
              "task/edit.html", RequestContext(request, context))
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   582
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   583
        form = taskapp_forms.EditTextbookForm(instance=textbook)
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   584
        context.update({"form": form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   585
        return shortcuts.render_to_response("task/edit.html",
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   586
                                            RequestContext(request, context))
373
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   587
014d812e625e edit textbook works fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 372
diff changeset
   588
@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
   589
def claim_task(request, task_id):
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   590
430
a11a778fca54 Use reverse function instead of hard coded URL.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 429
diff changeset
   591
    claim_url = reverse('claim_task', kwargs={'task_id': task_id})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   592
    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
   593
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   594
    if task.status == taskapp_models.TASK_STATUS_CHOICES[0][0]:
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   595
        raise http.Http404
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   596
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   597
    user = request.user
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   598
    profile = user.get_profile()
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   599
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   600
    context = {"user": user,
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   601
               "profile": profile,
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   602
               "task": task,
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   603
              }
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   604
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   605
    context.update(csrf(request))
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   606
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   607
    reviewers = task.reviewers.all()
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   608
    claimed_users = task.claimed_users.all()
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   609
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   610
    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
   611
    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
   612
    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
   613
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   614
    task_claimable = True if task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]] else False
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   615
    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
   616
                        and ( not is_reviewer ) and (not is_creator ) \
ec7f2f4256f5 now the creator can select users
Nishanth Amuluru <nishanth@fossee.in>
parents: 356
diff changeset
   617
                        else False
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   618
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   619
    old_claims = task.claims.all()
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   620
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   621
    context.update({"is_creator": is_creator,
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   622
                    "task_claimable": task_claimable,
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   623
                    "can_claim": can_claim,
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   624
                    "old_claims": old_claims})
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   625
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   626
    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
   627
        form = taskapp_forms.ClaimTaskForm(request.POST)
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   628
        if form.is_valid():
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   629
            data = form.cleaned_data.copy()
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   630
            data.update({"task": task,
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   631
                         "claim_datetime": datetime.now(),
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   632
                         "claimed_by": user,})
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   633
            new_claim = taskapp_models.TaskClaim(**data)
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   634
            new_claim.save()
355
c693def6510f added the step of adding user to claimed users
Nishanth Amuluru <nishanth@fossee.in>
parents: 353
diff changeset
   635
c693def6510f added the step of adding user to claimed users
Nishanth Amuluru <nishanth@fossee.in>
parents: 353
diff changeset
   636
            task.claimed_users.add(user)
c693def6510f added the step of adding user to claimed users
Nishanth Amuluru <nishanth@fossee.in>
parents: 353
diff changeset
   637
            task.save()
c693def6510f added the step of adding user to claimed users
Nishanth Amuluru <nishanth@fossee.in>
parents: 353
diff changeset
   638
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   639
            return shortcuts.redirect(claim_url)
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   640
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   641
        else:
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   642
            context.update({"form": form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   643
            return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   644
              "task/claim.html", RequestContext(request, context))
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   645
    else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   646
        form = taskapp_forms.ClaimTaskForm()
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   647
        context.update({"form": form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   648
        return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   649
          "task/claim.html", RequestContext(request, context))
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   650
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   651
@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
   652
def select_user(request, task_id):
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   653
    """ 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
   654
    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
   655
    """
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
   656
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
   657
    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
   658
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   659
    user = request.user
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   660
    profile = user.get_profile()
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   661
    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
   662
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   663
    context = {"user": user,
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   664
               "profile": profile,
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   665
               "task": task,
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   666
              }
353
181d4eb9f419 created a view for making claim
Nishanth Amuluru <nishanth@fossee.in>
parents: 350
diff changeset
   667
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   668
    context.update(csrf(request))
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   669
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   670
    claimed_users = task.claimed_users.all()
362
070f01dd7d8e Select user works completely fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 360
diff changeset
   671
    task_claimed = True if claimed_users else False
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   672
    
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   673
    is_creator = True if user == task.created_by else False
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   674
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
   675
    if (is_creator or profile.role in [profile_models.ROLES_CHOICES[1][0], profile_models.ROLES_CHOICES[2][0]]) and \
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   676
       task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]]:
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   677
362
070f01dd7d8e Select user works completely fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 360
diff changeset
   678
        if task_claimed:
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   679
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   680
            user_list = ((user.id,user.username) for user in claimed_users)
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   681
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   682
            if request.method == "POST":
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   683
                form = taskapp_forms.ChoiceForm(user_list, request.POST)
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   684
                if form.is_valid():
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   685
                    uid = form.cleaned_data['choice']
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   686
                    selected_user = User.objects.get(id=uid)
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   687
362
070f01dd7d8e Select user works completely fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 360
diff changeset
   688
                    task.selected_users.add(selected_user)
070f01dd7d8e Select user works completely fine
Nishanth Amuluru <nishanth@fossee.in>
parents: 360
diff changeset
   689
                    task.claimed_users.remove(selected_user)
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   690
                    task.status = taskapp_models.TASK_STATUS_CHOICES[3][0]
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   691
                    task.save()
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   692
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   693
                    return shortcuts.redirect(task_url)
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   694
                else:
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   695
                    context.update({"form": form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   696
                    return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   697
                      'task/select_user.html',
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   698
                      RequestContext(request, context))
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   699
            else:
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   700
                form = taskapp_forms.ChoiceForm(user_list)
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   701
                context.update({"form": form})
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   702
                return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   703
                  'task/select_user.html',
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   704
                  RequestContext(request, context))
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   705
        else:
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   706
            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
   707
                            task_url, 'view the task')
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   708
    else:
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   709
        raise http.Http404
360
b4988ede9e3d created the view
Nishanth Amuluru <nishanth@fossee.in>
parents: 357
diff changeset
   710
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   711
@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
   712
def approve_textbook(request, task_id):
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   713
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   714
    user = request.user
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   715
    profile = user.get_profile()
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   716
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   717
    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
   718
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
   719
    if profile.role not in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] or textbook.status != taskapp_models.TB_STATUS_CHOICES[0][0]:
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   720
        raise http.Http404
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   721
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   722
    context = {"user": user,
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   723
               "profile": profile,
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   724
               "textbook": textbook,
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   725
              }
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   726
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   727
    return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   728
      "task/confirm_textbook_approval.html",
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   729
      RequestContext(request, context))
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   730
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   731
@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
   732
def approved_textbook(request, task_id):
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   733
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   734
    user = request.user
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   735
    profile = user.get_profile()
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   736
422
4bb891fc7a54 Change imports to be more readable.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 408
diff changeset
   737
    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
   738
443
a13ea00c1a3f Use the correct choices variable for the role and status.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 440
diff changeset
   739
    if profile.role not in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] or textbook.status != taskapp_models.TB_STATUS_CHOICES[0][0]:
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   740
        raise http.Http404
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   741
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   742
    textbook.approved_by = user
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   743
    textbook.approval_datetime = datetime.now()
440
56ea209e559f Use the right form of names to be stored in the database.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 430
diff changeset
   744
    textbook.status = taskapp_models.TB_STATUS_CHOICES[1][0]
380
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   745
    textbook.save()
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   746
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   747
    context = {"user": user,
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   748
               "profile": profile,
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   749
               "textbook": textbook,
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   750
              }
e848bd3ad41f approval of textbooks works now
Nishanth Amuluru <nishanth@fossee.in>
parents: 377
diff changeset
   751
451
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   752
    return shortcuts.render_to_response(
09a1ee04a3f4 Replace all occurences of context with RequestContext in taskapp views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 443
diff changeset
   753
      "task/approved_textbook.html", RequestContext(request, context))
425
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   754
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   755
def suggest_task_tags(request):
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   756
    """Returns the tags matching the query for the AJAXy autocomplete
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   757
    to get tags related to tasks.
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   758
    """
e15749fab2e4 Restructured create form to use templatetags and use Javascript for autcomplete.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 422
diff changeset
   759
427
42156890006d Move all the content from create form to edit form for tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 425
diff changeset
   760
    term = request.GET.get('term', None)
42156890006d Move all the content from create form to edit form for tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 425
diff changeset
   761
    response = []
42156890006d Move all the content from create form to edit form for tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 425
diff changeset
   762
42156890006d Move all the content from create form to edit form for tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 425
diff changeset
   763
    if term:
42156890006d Move all the content from create form to edit form for tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 425
diff changeset
   764
      tag_entities = Tag.objects.filter(name__icontains=term)
42156890006d Move all the content from create form to edit form for tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 425
diff changeset
   765
      response = [tag.name for tag in tag_entities]
42156890006d Move all the content from create form to edit form for tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 425
diff changeset
   766
42156890006d Move all the content from create form to edit form for tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 425
diff changeset
   767
    json_response = json.dumps(response)
42156890006d Move all the content from create form to edit form for tasks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 425
diff changeset
   768
    return http.HttpResponse(json_response)