diff options
-rwxr-xr-x | pytask/taskapp/views/task.py | 47 | ||||
-rw-r--r-- | pytask/templates/task/view.html | 7 |
2 files changed, 41 insertions, 13 deletions
diff --git a/pytask/taskapp/views/task.py b/pytask/taskapp/views/task.py index 9381dfb..4b08543 100755 --- a/pytask/taskapp/views/task.py +++ b/pytask/taskapp/views/task.py @@ -273,22 +273,45 @@ def view_task(request, task_id, **kwargs): else: context['can_mod_reviewers'] = False + if (profile.role == profile_models.ROLES_CHOICES[3][0] and + profile.user in task.selected_users.all()): + context['can_report'] = True + else: + context['can_report'] = False + if request.method == 'POST': - form = taskapp_forms.TaskCommentForm(request.POST, request.FILES) - if form.is_valid(): - data = form.cleaned_data['data'] - new_comment = taskapp_forms.TaskComment( - task=task, data=data, commented_by=user, - comment_datetime=datetime.now(), file=request.FILES['file']) - new_comment.save() - return shortcuts.redirect(task_url) - else: - context['form'] = form + if not request.FILES: + comment_form = taskapp_forms.TaskCommentForm(request.POST) + if comment_form.is_valid(): + data = comment_form.cleaned_data['data'] + new_comment = taskapp_forms.TaskComment( + task=task, data=data, commented_by=user, + comment_datetime=datetime.now()) + new_comment.save() + return shortcuts.redirect(task_url) + + if context['can_report']: + work_report_form = taskapp_forms.WorkReportForm(request.POST, + request.FILES) + if work_report_form.is_valid(): + data = work_report_form.cleaned_data['data'] + summary = work_report_form.cleaned_data['summary'] + new_work_report = taskapp_models.WorkReport( + task=task, data=data, submitted_by=user, + summary=summary, attachment=request.FILES['attachment']) + new_work_report.save() + return shortcuts.redirect(task_url) + + if not comment_form.is_valid() or ( + context['can_report'] and not work_report_form.is_valid()): + context['comment_form'] = comment_form + context['work_report_form'] = work_report_form return shortcuts.render_to_response( 'task/view.html', RequestContext(request, context)) else: - form = taskapp_forms.TaskCommentForm() - context['form'] = form + context['comment_form'] = taskapp_forms.TaskCommentForm() + if context['can_report']: + context['work_report_form'] = taskapp_forms.WorkReportForm return shortcuts.render_to_response( 'task/view.html', RequestContext(request, context)) diff --git a/pytask/templates/task/view.html b/pytask/templates/task/view.html index 6aef7fd..d0cafcf 100644 --- a/pytask/templates/task/view.html +++ b/pytask/templates/task/view.html @@ -112,7 +112,12 @@ along with PyTask. If not, see <http://www.gnu.org/licenses/>. {% if can_comment %} Add comment:<br /> - {% as_div_form form "Comment Form" csrf_token "Submit" "" "True" %} + {% as_div_form comment_form "Comment Form" csrf_token "Submit" %} + {% endif %} + + {% if can_report and work_report_form %} + Submit work:<br /> + {% as_div_form work_report_form "Work Submission Form" csrf_token "Submit" "" "True" %} {% endif %} {% endblock %} |