pytask/taskapp/views.py
changeset 145 4252da60a4ef
parent 144 daca865314e7
child 148 026f2059a97a
equal deleted inserted replaced
144:daca865314e7 145:4252da60a4ef
    10 from django.views.decorators.csrf import csrf_protect
    10 from django.views.decorators.csrf import csrf_protect
    11 
    11 
    12 from pytask.utils import make_key
    12 from pytask.utils import make_key
    13 from pytask.views import show_msg
    13 from pytask.views import show_msg
    14 
    14 
    15 from pytask.taskapp.models import Task, TaskComment, TaskClaim, TextBook
    15 from pytask.taskapp.models import Task, TaskComment, TaskClaim, TextBook, \
       
    16         WorkReport
    16 from pytask.taskapp.forms import CreateTaskForm, EditTaskForm, \
    17 from pytask.taskapp.forms import CreateTaskForm, EditTaskForm, \
    17                                  TaskCommentForm, ClaimTaskForm, \
    18                                  TaskCommentForm, ClaimTaskForm, \
    18                                  ChoiceForm, EditTaskForm, CreateTextbookForm,\
    19                                  ChoiceForm, EditTaskForm, CreateTextbookForm,\
    19                                  EditTextbookForm
    20                                  EditTextbookForm, WorkReportForm
    20 from pytask.taskapp.utils import getTask, getTextBook
    21 from pytask.taskapp.utils import getTask, getTextBook
    21 from pytask.profile.utils import get_notification
    22 from pytask.profile.utils import get_notification
    22 
    23 
    23 
    24 
    24 @login_required
    25 @login_required
   333 
   334 
   334     return render_to_response("task/view_work.html", context)
   335     return render_to_response("task/view_work.html", context)
   335 
   336 
   336 @login_required
   337 @login_required
   337 def view_report(request, rid):
   338 def view_report(request, rid):
   338     pass
   339 
   339 
   340     try:
       
   341         report = WorkReport.objects.get(uniq_key=rid)
       
   342     except WorkReport.DoesNotExist:
       
   343         raise Http404
       
   344 
       
   345     user = request.user
       
   346     context = {"report": report,
       
   347                "user": user,
       
   348               }
       
   349 
       
   350     if not user.is_authenticated():
       
   351         return render_to_response("task/view_report.html", context)
       
   352 
       
   353     profile = user.get_profile()
       
   354 
       
   355     context.update({"profile": profile})
       
   356     return render_to_response("task/view_report.html", context)
       
   357 
       
   358 @login_required
       
   359 def submit_report(request, tid):
       
   360     """ Check if the work is in WR state and the user is in assigned_users.
       
   361     """
       
   362     
       
   363     user = request.user
       
   364     task = getTask(tid)
       
   365     old_reports = task.reports.all()
       
   366 
       
   367     if not task.status == "WR":
       
   368         raise Http404
       
   369 
       
   370     can_upload = True if user in task.selected_users.all() else False
       
   371 
       
   372     context = {
       
   373         'user': user,
       
   374         'task': task,
       
   375         'can_upload': can_upload,
       
   376     }
       
   377 
       
   378     context.update(csrf(request))
       
   379 
       
   380     if request.method == "POST":
       
   381         if not can_upload:
       
   382             return show_msg(user, "You are not authorised to upload data to this task", task_url, "view the task")
       
   383 
       
   384         form = WorkReportForm(request.POST, request.FILES)
       
   385 
       
   386         if form.is_valid():
       
   387             data = form.cleaned_data.copy()
       
   388             data.update({"task":task,
       
   389                          "revision": old_reports.count(),
       
   390                          "uniq_key": make_key(WorkReport),
       
   391                          "submitted_by": user,
       
   392                          "submitted_at": datetime.now(),
       
   393                         })
       
   394             r = WorkReport(**data)
       
   395             r.save()
       
   396 
       
   397             report_url = "/task/view/report/rid=%s"%r.uniq_key
       
   398             return redirect(report_url)
       
   399 
       
   400         else:
       
   401             context.update({"form":form})
       
   402             return render_to_response('task/submit_report.html', context)
       
   403 
       
   404     else:
       
   405         form = WorkReportForm()
       
   406         context.update({"form":form})
       
   407         return render_to_response('task/submit_report.html', context)
   340 
   408 
   341 @login_required
   409 @login_required
   342 def create_textbook(request):
   410 def create_textbook(request):
   343 
   411 
   344     user = request.user
   412     user = request.user