pytask/taskapp/views.py
changeset 451 09a1ee04a3f4
parent 443 a13ea00c1a3f
child 489 9cd090b8cd52
equal deleted inserted replaced
450:7984094bf6c4 451:09a1ee04a3f4
     4 from django import http
     4 from django import http
     5 from django.contrib.auth.decorators import login_required
     5 from django.contrib.auth.decorators import login_required
     6 from django.contrib.auth.models import User
     6 from django.contrib.auth.models import User
     7 from django.core.context_processors import csrf
     7 from django.core.context_processors import csrf
     8 from django.core.urlresolvers import reverse
     8 from django.core.urlresolvers import reverse
       
     9 from django.template import RequestContext
     9 from django.utils import simplejson as json
    10 from django.utils import simplejson as json
    10 
    11 
    11 from tagging.models import Tag
    12 from tagging.models import Tag
    12 
    13 
    13 from pytask.views import show_msg
    14 from pytask.views import show_msg
    47                 task_url = reverse('view_task', kwargs={'task_id': task.id})
    48                 task_url = reverse('view_task', kwargs={'task_id': task.id})
    48                 return shortcuts.redirect(task_url)
    49                 return shortcuts.redirect(task_url)
    49             else:
    50             else:
    50                 context.update({'form':form})
    51                 context.update({'form':form})
    51                 return shortcuts.render_to_response(
    52                 return shortcuts.render_to_response(
    52                   'task/edit.html', context)
    53                   'task/edit.html', RequestContext(request, context))
    53         else:
    54         else:
    54             form = taskapp_forms.CreateTaskForm()
    55             form = taskapp_forms.CreateTaskForm()
    55             context.update({'form': form})
    56             context.update({'form': form})
    56             return shortcuts.render_to_response('task/edit.html', context)
    57             return shortcuts.render_to_response(
       
    58               'task/edit.html', RequestContext(request, context))
    57     else:
    59     else:
    58         return show_msg(user, 'You are not authorised to create a task.')
    60         return show_msg(user, 'You are not authorised to create a task.')
    59 
    61 
    60 def browse_tasks(request):
    62 def browse_tasks(request):
    61 
    63 
    81 
    83 
    82     context.update({"user": user,
    84     context.update({"user": user,
    83                     "profile": profile,
    85                     "profile": profile,
    84                    })
    86                    })
    85 
    87 
    86     return shortcuts.render_to_response("task/browse.html", context)
    88     return shortcuts.render_to_response("task/browse.html",
       
    89                                         RequestContext(request, context))
    87 
    90 
    88 
    91 
    89 def view_task(request, task_id):
    92 def view_task(request, task_id):
    90     """ get the task depending on its task_id and display accordingly if it is a get.
    93     """ get the task depending on its task_id and display accordingly if it is a get.
    91     check for authentication and add a comment if it is a post request.
    94     check for authentication and add a comment if it is a post request.
   159               comment_datetime=datetime.now())
   162               comment_datetime=datetime.now())
   160             new_comment.save()
   163             new_comment.save()
   161             return shortcuts.redirect(task_url)
   164             return shortcuts.redirect(task_url)
   162         else:
   165         else:
   163             context['form'] = form
   166             context['form'] = form
   164             return shortcuts.render_to_response('task/view.html', context)
   167             return shortcuts.render_to_response(
       
   168               'task/view.html', RequestContext(request, context))
   165     else:
   169     else:
   166         form = taskapp_forms.TaskCommentForm()
   170         form = taskapp_forms.TaskCommentForm()
   167         context['form'] = form
   171         context['form'] = form
   168         return shortcuts.render_to_response('task/view.html', context)
   172         return shortcuts.render_to_response(
       
   173           'task/view.html', RequestContext(request, context))
   169 
   174 
   170 @login_required
   175 @login_required
   171 def edit_task(request, task_id):
   176 def edit_task(request, task_id):
   172     """ only creator gets to edit the task and that too only before it gets
   177     """ only creator gets to edit the task and that too only before it gets
   173     approved.
   178     approved.
   196         if form.is_valid():
   201         if form.is_valid():
   197             form.save()
   202             form.save()
   198             return shortcuts.redirect(task_url)
   203             return shortcuts.redirect(task_url)
   199         else:
   204         else:
   200             context.update({"form": form})
   205             context.update({"form": form})
   201             return shortcuts.render_to_response("task/edit.html", context)
   206             return shortcuts.render_to_response(
       
   207               "task/edit.html", RequestContext(request, context))
   202     else:
   208     else:
   203         form = taskapp_forms.EditTaskForm(instance=task)
   209         form = taskapp_forms.EditTaskForm(instance=task)
   204         context.update({"form": form})
   210         context.update({"form": form})
   205         return shortcuts.render_to_response("task/edit.html", context)
   211         return shortcuts.render_to_response("task/edit.html",
       
   212                                             RequestContext(request, context))
   206 
   213 
   207 @login_required
   214 @login_required
   208 def approve_task(request, task_id):
   215 def approve_task(request, task_id):
   209 
   216 
   210     user = request.user
   217     user = request.user
   218     context = {"user": user,
   225     context = {"user": user,
   219                "profile": profile,
   226                "profile": profile,
   220                "task": task,
   227                "task": task,
   221               }
   228               }
   222 
   229 
   223     return shortcuts.render_to_response("task/confirm_approval.html", context)
   230     return shortcuts.render_to_response(
       
   231       "task/confirm_approval.html", RequestContext(request, context))
   224 
   232 
   225 @login_required
   233 @login_required
   226 def approved_task(request, task_id):
   234 def approved_task(request, task_id):
   227 
   235 
   228     user = request.user
   236     user = request.user
   241     context = {"user": user,
   249     context = {"user": user,
   242                "profile": profile,
   250                "profile": profile,
   243                "task": task,
   251                "task": task,
   244               }
   252               }
   245 
   253 
   246     return shortcuts.render_to_response("task/approved_task.html", context)
   254     return shortcuts.render_to_response(
       
   255       "task/approved_task.html", RequestContext(request, context))
   247 
   256 
   248 @login_required
   257 @login_required
   249 def addreviewer(request, task_id):
   258 def addreviewer(request, task_id):
   250 
   259 
   251     user = request.user
   260     user = request.user
   285 
   294 
   286             task.reviewers.add(reviewer)
   295             task.reviewers.add(reviewer)
   287             return shortcuts.redirect(task_url)
   296             return shortcuts.redirect(task_url)
   288         else:
   297         else:
   289             context.update({"form": form})
   298             context.update({"form": form})
   290             return shortcuts.render_to_response("task/addreviewer.html", context)
   299             return shortcuts.render_to_response(
       
   300               "task/addreviewer.html", RequestContext(request, context))
   291     else:
   301     else:
   292         form = taskapp_forms.ChoiceForm(choices, label=label)
   302         form = taskapp_forms.ChoiceForm(choices, label=label)
   293         context.update({"form": form})
   303         context.update({"form": form})
   294         return shortcuts.render_to_response("task/addreviewer.html", context)
   304         return shortcuts.render_to_response(
       
   305           "task/addreviewer.html", RequestContext(request, context))
   295 
   306 
   296 def view_work(request, task_id):
   307 def view_work(request, task_id):
   297 
   308 
   298     task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
   309     task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
   299 
   310 
   303     context = {"task": task,
   314     context = {"task": task,
   304                "old_reports": old_reports,
   315                "old_reports": old_reports,
   305               }
   316               }
   306 
   317 
   307     if not user.is_authenticated():
   318     if not user.is_authenticated():
   308         return shortcuts.render_to_response("task/view_work.html", context)
   319         return shortcuts.render_to_response(
       
   320           "task/view_work.html", RequestContext(request, context))
   309 
   321 
   310     profile = user.get_profile()
   322     profile = user.get_profile()
   311 
   323 
   312     context.update({"user": user,
   324     context.update({"user": user,
   313                     "profile": profile,
   325                     "profile": profile,
   318     working_users = task.selected_users.all()
   330     working_users = task.selected_users.all()
   319     is_working = True if user in working_users else False
   331     is_working = True if user in working_users else False
   320 
   332 
   321     context.update({"is_working": is_working})
   333     context.update({"is_working": is_working})
   322 
   334 
   323     return shortcuts.render_to_response("task/view_work.html", context)
   335     return shortcuts.render_to_response("task/view_work.html",
       
   336                                         RequestContext(request, context))
   324 
   337 
   325 @login_required
   338 @login_required
   326 def view_report(request, report_id):
   339 def view_report(request, report_id):
   327 
   340 
   328     report = shortcuts.get_object_or_404(taskapp_models.WorkReport,
   341     report = shortcuts.get_object_or_404(taskapp_models.WorkReport,
   332     context = {"report": report,
   345     context = {"report": report,
   333                "user": user,
   346                "user": user,
   334               }
   347               }
   335 
   348 
   336     if not user.is_authenticated():
   349     if not user.is_authenticated():
   337         return shortcuts.render_to_response("task/view_report.html", context)
   350         return shortcuts.render_to_response(
       
   351           "task/view_report.html", RequestContext(request, context))
   338 
   352 
   339     profile = user.get_profile()
   353     profile = user.get_profile()
   340 
   354 
   341     context.update({"profile": profile})
   355     context.update({"profile": profile})
   342     return shortcuts.render_to_response("task/view_report.html", context)
   356     return shortcuts.render_to_response("task/view_report.html",
       
   357                                         RequestContext(request, context))
   343 
   358 
   344 @login_required
   359 @login_required
   345 def submit_report(request, task_id):
   360 def submit_report(request, task_id):
   346     """ Check if the work is in WR state and the user is in assigned_users.
   361     """ Check if the work is in WR state and the user is in assigned_users.
   347     """
   362     """
   383             report_url = reverse('view_report', kwargs={'report_id': r.id})
   398             report_url = reverse('view_report', kwargs={'report_id': r.id})
   384             return shortcuts.redirect(report_url)
   399             return shortcuts.redirect(report_url)
   385 
   400 
   386         else:
   401         else:
   387             context.update({"form":form})
   402             context.update({"form":form})
   388             return shortcuts.render_to_response('task/submit_report.html', context)
   403             return shortcuts.render_to_response(
       
   404               'task/submit_report.html', RequestContext(request, context))
   389 
   405 
   390     else:
   406     else:
   391         form = taskapp_forms.WorkReportForm()
   407         form = taskapp_forms.WorkReportForm()
   392         context.update({"form":form})
   408         context.update({"form":form})
   393         return shortcuts.render_to_response('task/submit_report.html', context)
   409         return shortcuts.render_to_response(
       
   410           'task/submit_report.html', RequestContext(request, context))
   394 
   411 
   395 @login_required
   412 @login_required
   396 def create_textbook(request):
   413 def create_textbook(request):
   397 
   414 
   398     user = request.user
   415     user = request.user
   423             textbook_url = reverse(
   440             textbook_url = reverse(
   424               'view_textbook', kwargs={'task_id': new_textbook.id})
   441               'view_textbook', kwargs={'task_id': new_textbook.id})
   425             return shortcuts.redirect(textbook_url)
   442             return shortcuts.redirect(textbook_url)
   426         else:
   443         else:
   427             context.update({"form": form})
   444             context.update({"form": form})
   428             return shortcuts.render_to_response("task/edit.html", context)
   445             return shortcuts.render_to_response(
       
   446               "task/edit.html", RequestContext(request, context))
   429     else:
   447     else:
   430         form = taskapp_forms.CreateTextbookForm()
   448         form = taskapp_forms.CreateTextbookForm()
   431         context.update({"form": form})
   449         context.update({"form": form})
   432         return shortcuts.render_to_response("task/edit.html", context)
   450         return shortcuts.render_to_response(
       
   451           "task/edit.html", RequestContext(request, context))
   433 
   452 
   434 def view_textbook(request, task_id):
   453 def view_textbook(request, task_id):
   435 
   454 
   436     textbook = shortcuts.get_object_or_404(taskapp_models.TextBook, pk=task_id)
   455     textbook = shortcuts.get_object_or_404(taskapp_models.TextBook, pk=task_id)
   437     chapters = textbook.chapters.all()
   456     chapters = textbook.chapters.all()
   442                "textbook": textbook,
   461                "textbook": textbook,
   443                "chapters": chapters,
   462                "chapters": chapters,
   444               }
   463               }
   445 
   464 
   446     if not user.is_authenticated():
   465     if not user.is_authenticated():
   447         return shortcuts.render_to_response("task/view_textbook.html", context)
   466         return shortcuts.render_to_response("task/view_textbook.html",
       
   467                                             RequestContext(request, context))
   448 
   468 
   449     profile = user.get_profile()
   469     profile = user.get_profile()
   450 
   470 
   451     context.update({"profile": profile,
   471     context.update({"profile": profile,
   452                     "textbook": textbook,
   472                     "textbook": textbook,
   460     can_approve = True if profile.role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] and \
   480     can_approve = True if profile.role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] and \
   461                           textbook.status == taskapp_models.TB_STATUS_CHOICES[0][0] else False
   481                           textbook.status == taskapp_models.TB_STATUS_CHOICES[0][0] else False
   462 
   482 
   463     context.update({"can_edit": can_edit,
   483     context.update({"can_edit": can_edit,
   464                     "can_approve": can_approve})
   484                     "can_approve": can_approve})
   465     return shortcuts.render_to_response("task/view_textbook.html", context)
   485     return shortcuts.render_to_response("task/view_textbook.html",
       
   486                                         RequestContext(request, context))
   466 
   487 
   467 def browse_textbooks(request):
   488 def browse_textbooks(request):
   468 
   489 
   469     user = request.user
   490     user = request.user
   470 
   491 
   480     if user.is_authenticated() and user.get_profile().role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]]:
   501     if user.is_authenticated() and user.get_profile().role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]]:
   481         unpub_textbooks = taskapp_models.TextBook.objects.filter(status=taskapp_models.TB_STATUS_CHOICES[0][0])
   502         unpub_textbooks = taskapp_models.TextBook.objects.filter(status=taskapp_models.TB_STATUS_CHOICES[0][0])
   482 
   503 
   483         context.update({"unpub_textbooks": unpub_textbooks})
   504         context.update({"unpub_textbooks": unpub_textbooks})
   484 
   505 
   485     return shortcuts.render_to_response("task/browse_textbooks.html", context)
   506     return shortcuts.render_to_response("task/browse_textbooks.html",
       
   507                                         RequestContext(request, context))
   486 
   508 
   487 @login_required
   509 @login_required
   488 def edit_textbook(request, task_id):
   510 def edit_textbook(request, task_id):
   489 
   511 
   490     user = request.user
   512     user = request.user
   512         if form.is_valid():
   534         if form.is_valid():
   513             form.save()
   535             form.save()
   514             return shortcuts.redirect(textbook_url)
   536             return shortcuts.redirect(textbook_url)
   515         else:
   537         else:
   516             context.update({"form": form})
   538             context.update({"form": form})
   517             return shortcuts.render_to_response("task/edit.html", context)
   539             return shortcuts.render_to_response(
       
   540               "task/edit.html", RequestContext(request, context))
   518     else:
   541     else:
   519         form = taskapp_forms.EditTextbookForm(instance=textbook)
   542         form = taskapp_forms.EditTextbookForm(instance=textbook)
   520         context.update({"form": form})
   543         context.update({"form": form})
   521         return shortcuts.render_to_response("task/edit.html", context)
   544         return shortcuts.render_to_response("task/edit.html",
       
   545                                             RequestContext(request, context))
   522 
   546 
   523 @login_required
   547 @login_required
   524 def claim_task(request, task_id):
   548 def claim_task(request, task_id):
   525 
   549 
   526     claim_url = reverse('claim_task', kwargs={'task_id': task_id})
   550     claim_url = reverse('claim_task', kwargs={'task_id': task_id})
   573 
   597 
   574             return shortcuts.redirect(claim_url)
   598             return shortcuts.redirect(claim_url)
   575 
   599 
   576         else:
   600         else:
   577             context.update({"form": form})
   601             context.update({"form": form})
   578             return shortcuts.render_to_response("task/claim.html", context)
   602             return shortcuts.render_to_response(
       
   603               "task/claim.html", RequestContext(request, context))
   579     else:
   604     else:
   580         form = taskapp_forms.ClaimTaskForm()
   605         form = taskapp_forms.ClaimTaskForm()
   581         context.update({"form": form})
   606         context.update({"form": form})
   582         return shortcuts.render_to_response("task/claim.html", context)
   607         return shortcuts.render_to_response(
       
   608           "task/claim.html", RequestContext(request, context))
   583 
   609 
   584 @login_required
   610 @login_required
   585 def select_user(request, task_id):
   611 def select_user(request, task_id):
   586     """ first get the status of the task and then select one of claimed users
   612     """ first get the status of the task and then select one of claimed users
   587     generate list of claimed users by passing it as an argument to a function.
   613     generate list of claimed users by passing it as an argument to a function.
   624                     task.save()
   650                     task.save()
   625 
   651 
   626                     return shortcuts.redirect(task_url)
   652                     return shortcuts.redirect(task_url)
   627                 else:
   653                 else:
   628                     context.update({"form": form})
   654                     context.update({"form": form})
   629                     return shortcuts.render_to_response('task/select_user.html', context)
   655                     return shortcuts.render_to_response(
       
   656                       'task/select_user.html',
       
   657                       RequestContext(request, context))
   630             else:
   658             else:
   631                 form = taskapp_forms.ChoiceForm(user_list)
   659                 form = taskapp_forms.ChoiceForm(user_list)
   632                 context.update({"form": form})
   660                 context.update({"form": form})
   633                 return shortcuts.render_to_response('task/select_user.html', context)
   661                 return shortcuts.render_to_response(
       
   662                   'task/select_user.html',
       
   663                   RequestContext(request, context))
   634         else:
   664         else:
   635             return show_msg(user, 'There are no pending claims for this task',
   665             return show_msg(user, 'There are no pending claims for this task',
   636                             task_url, 'view the task')
   666                             task_url, 'view the task')
   637     else:
   667     else:
   638         raise http.Http404
   668         raise http.Http404
   651     context = {"user": user,
   681     context = {"user": user,
   652                "profile": profile,
   682                "profile": profile,
   653                "textbook": textbook,
   683                "textbook": textbook,
   654               }
   684               }
   655 
   685 
   656     return shortcuts.render_to_response("task/confirm_textbook_approval.html", context)
   686     return shortcuts.render_to_response(
       
   687       "task/confirm_textbook_approval.html",
       
   688       RequestContext(request, context))
   657 
   689 
   658 @login_required
   690 @login_required
   659 def approved_textbook(request, task_id):
   691 def approved_textbook(request, task_id):
   660 
   692 
   661     user = request.user
   693     user = request.user
   674     context = {"user": user,
   706     context = {"user": user,
   675                "profile": profile,
   707                "profile": profile,
   676                "textbook": textbook,
   708                "textbook": textbook,
   677               }
   709               }
   678 
   710 
   679     return shortcuts.render_to_response("task/approved_textbook.html", context)
   711     return shortcuts.render_to_response(
       
   712       "task/approved_textbook.html", RequestContext(request, context))
   680 
   713 
   681 def suggest_task_tags(request):
   714 def suggest_task_tags(request):
   682     """Returns the tags matching the query for the AJAXy autocomplete
   715     """Returns the tags matching the query for the AJAXy autocomplete
   683     to get tags related to tasks.
   716     to get tags related to tasks.
   684     """
   717     """