diff options
-rw-r--r-- | pytask/taskapp/forms.py | 2 | ||||
-rwxr-xr-x | pytask/taskapp/models.py | 2 | ||||
-rw-r--r-- | pytask/taskapp/urls.py | 3 | ||||
-rwxr-xr-x | pytask/taskapp/views.py | 74 | ||||
-rw-r--r-- | pytask/templates/task/submit_report.html | 12 | ||||
-rw-r--r-- | pytask/templates/task/view_report.html | 12 |
6 files changed, 99 insertions, 6 deletions
diff --git a/pytask/taskapp/forms.py b/pytask/taskapp/forms.py index c2a8609..c433653 100644 --- a/pytask/taskapp/forms.py +++ b/pytask/taskapp/forms.py @@ -130,5 +130,5 @@ class WorkReportForm(forms.ModelForm): class Meta: model = WorkReport - fields = ['remarks', 'attachment'] + fields = ['data', 'summary', 'attachment'] diff --git a/pytask/taskapp/models.py b/pytask/taskapp/models.py index a111b28..ba945f7 100755 --- a/pytask/taskapp/models.py +++ b/pytask/taskapp/models.py @@ -91,7 +91,7 @@ class WorkReport(models.Model): approved_by = models.ForeignKey(User, null = True, blank = True, related_name = "approved_reports") - data = models.TextField() + data = models.TextField(verbose_name="Report") summary = models.CharField(max_length=100, verbose_name="Summary", help_text="A one line summary") attachment = models.FileField(upload_to = UPLOADS_DIR) diff --git a/pytask/taskapp/urls.py b/pytask/taskapp/urls.py index 86b30fa..f01943e 100644 --- a/pytask/taskapp/urls.py +++ b/pytask/taskapp/urls.py @@ -4,7 +4,7 @@ from pytask.taskapp.views import create_task, view_task, claim_task, \ select_user, edit_task, create_textbook, view_textbook, \ browse_tasks, edit_textbook, approve_task, approved_task,\ browse_textbooks, approve_textbook, approved_textbook, addreviewer,\ - view_report, view_work + view_report, view_work, submit_report from pytask.views import under_construction @@ -20,6 +20,7 @@ urlpatterns = patterns('', (r'^addreviewer/tid=(\w+)$', addreviewer), (r'^view/work/tid=(\w+)$', view_work), (r'^view/report/rid=(\w+)$', view_report), + (r'^submit/report/tid=(\w+)$', submit_report), (r'^browse/$', browse_tasks), (r'^textbook/create/$', create_textbook), diff --git a/pytask/taskapp/views.py b/pytask/taskapp/views.py index d0256b5..bb461c9 100755 --- a/pytask/taskapp/views.py +++ b/pytask/taskapp/views.py @@ -12,11 +12,12 @@ from django.views.decorators.csrf import csrf_protect from pytask.utils import make_key from pytask.views import show_msg -from pytask.taskapp.models import Task, TaskComment, TaskClaim, TextBook +from pytask.taskapp.models import Task, TaskComment, TaskClaim, TextBook, \ + WorkReport from pytask.taskapp.forms import CreateTaskForm, EditTaskForm, \ TaskCommentForm, ClaimTaskForm, \ ChoiceForm, EditTaskForm, CreateTextbookForm,\ - EditTextbookForm + EditTextbookForm, WorkReportForm from pytask.taskapp.utils import getTask, getTextBook from pytask.profile.utils import get_notification @@ -335,8 +336,75 @@ def view_work(request, tid): @login_required def view_report(request, rid): - pass + try: + report = WorkReport.objects.get(uniq_key=rid) + except WorkReport.DoesNotExist: + raise Http404 + + user = request.user + context = {"report": report, + "user": user, + } + + if not user.is_authenticated(): + return render_to_response("task/view_report.html", context) + + profile = user.get_profile() + + context.update({"profile": profile}) + return render_to_response("task/view_report.html", context) + +@login_required +def submit_report(request, tid): + """ Check if the work is in WR state and the user is in assigned_users. + """ + + user = request.user + task = getTask(tid) + old_reports = task.reports.all() + + if not task.status == "WR": + raise Http404 + + can_upload = True if user in task.selected_users.all() else False + + context = { + 'user': user, + 'task': task, + 'can_upload': can_upload, + } + + context.update(csrf(request)) + + if request.method == "POST": + if not can_upload: + return show_msg(user, "You are not authorised to upload data to this task", task_url, "view the task") + + form = WorkReportForm(request.POST, request.FILES) + + if form.is_valid(): + data = form.cleaned_data.copy() + data.update({"task":task, + "revision": old_reports.count(), + "uniq_key": make_key(WorkReport), + "submitted_by": user, + "submitted_at": datetime.now(), + }) + r = WorkReport(**data) + r.save() + + report_url = "/task/view/report/rid=%s"%r.uniq_key + return redirect(report_url) + + else: + context.update({"form":form}) + return render_to_response('task/submit_report.html', context) + + else: + form = WorkReportForm() + context.update({"form":form}) + return render_to_response('task/submit_report.html', context) @login_required def create_textbook(request): diff --git a/pytask/templates/task/submit_report.html b/pytask/templates/task/submit_report.html new file mode 100644 index 0000000..c8d4bfd --- /dev/null +++ b/pytask/templates/task/submit_report.html @@ -0,0 +1,12 @@ +{% extends 'base.html' %} +{% block title %} + {{task.title}} +{% endblock %} +{% block content %} +Submit a report: <br /> +<form action='' method=post enctype="multipart/form-data"> + {% csrf_token %} +{{ form.as_p }} +<input type=submit value=submit /> +</form> +{% endblock %} diff --git a/pytask/templates/task/view_report.html b/pytask/templates/task/view_report.html new file mode 100644 index 0000000..16ef0a5 --- /dev/null +++ b/pytask/templates/task/view_report.html @@ -0,0 +1,12 @@ +{% extends 'base.html' %} +{% block content %} +Report for {{report.task.title}} <br /> + +<hr /> +Description:<br /> +{{ report.data|linebreaksbr }} +<hr /> +Summary: {{ report.summary }} <br /> +<hr /> +Attachment: <a href="{{report.attachment.url}}">{{report.attachment.name}}</a> +{% endblock %} |