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 |