def create_task(request): user = request.user profile = user.get_profile() context = {"user": user, "profile": profile} context.update(csrf(request)) can_create_task = False if (profile.role == profile_models.ROLES_CHOICES[3][0]) else True if can_create_task: if request.method == "POST": form = taskapp_forms.CreateTaskForm(request.POST) if form.is_valid(): data = form.cleaned_data.copy() data.update({"created_by": user, "creation_datetime": datetime.now()}) task = taskapp_models.Task(**data) task.save() task_url = reverse("view_task", kwargs={"task_id": task.id}) return shortcuts.redirect(task_url) else: context.update({"form": form}) return shortcuts.render_to_response("task/edit.html", RequestContext(request, context)) else: form = taskapp_forms.CreateTaskForm() context.update({"form": form}) return shortcuts.render_to_response("task/edit.html", RequestContext(request, context)) else: return show_msg(user, "You are not authorised to create a task.")
def select_user(request, task_id): """ first get the status of the task and then select one of claimed users generate list of claimed users by passing it as an argument to a function. """ task_url = reverse("view_task", kwargs={"task_id": task_id}) user = request.user profile = user.get_profile() task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id) context = {"user": user, "profile": profile, "task": task} context.update(csrf(request)) reviewers = task.reviewers.all() claimed_users = task.claimed_users.all() is_reviewer = True if user in reviewers else False task_claimed = True if claimed_users else False is_creator = True if user == task.created_by else False if ( is_creator or is_reviewer or profile.role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] and task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]] ): if task_claimed: user_list = ((user.id, user.username) for user in claimed_users) if request.method == "POST": form = taskapp_forms.ChoiceForm(user_list, request.POST) if form.is_valid(): uid = form.cleaned_data["choice"] selected_user = User.objects.get(id=uid) task.selected_users.add(selected_user) task.claimed_users.remove(selected_user) task.status = taskapp_models.TASK_STATUS_CHOICES[3][0] task.save() return shortcuts.redirect(task_url) else: context.update({"form": form}) return shortcuts.render_to_response("task/select_user.html", RequestContext(request, context)) else: form = taskapp_forms.ChoiceForm(user_list) context.update({"form": form}) return shortcuts.render_to_response("task/select_user.html", RequestContext(request, context)) else: return show_msg(user, "There are no pending claims for this task", task_url, "view the task") else: raise exceptions.UnauthorizedAccess(NO_SELECT_USER)
def submit_report(request, task_id): """ Check if the work is in WR state and the user is in assigned_users. """ task_url = reverse('view_task', kwargs={'task_id': task_id}) task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id) user = request.user old_reports = task.reports.all() if not task.status == taskapp_models.TASK_STATUS_CHOICES[3][0]: raise http.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 = taskapp_forms.WorkReportForm(request.POST, request.FILES) if form.is_valid(): data = form.cleaned_data.copy() data.update({ "task": task, "revision": old_reports.count(), "submitted_by": user, "submitted_at": datetime.now(), }) r = taskapp_models.WorkReport(**data) r.save() report_url = reverse('view_report', kwargs={'report_id': r.id}) return shortcuts.redirect(report_url) else: context.update({"form": form}) return shortcuts.render_to_response( 'task/submit_report.html', RequestContext(request, context)) else: form = taskapp_forms.WorkReportForm() context.update({"form": form}) return shortcuts.render_to_response('task/submit_report.html', RequestContext(request, context))
def submit_report(request, task_id): """ Check if the work is in WR state and the user is in assigned_users. """ task_url = reverse('view_task', kwargs={'task_id': task_id}) task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id) user = request.user old_reports = task.reports.all() if not task.status == taskapp_models.TASK_STATUS_CHOICES[3][0]: raise http.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 = taskapp_forms.WorkReportForm(request.POST, request.FILES) if form.is_valid(): data = form.cleaned_data.copy() data.update({"task":task, "revision": old_reports.count(), "submitted_by": user, "submitted_at": datetime.now(), }) r = taskapp_models.WorkReport(**data) r.save() report_url = reverse('view_report', kwargs={'report_id': r.id}) return shortcuts.redirect(report_url) else: context.update({"form":form}) return shortcuts.render_to_response( 'task/submit_report.html', RequestContext(request, context)) else: form = taskapp_forms.WorkReportForm() context.update({"form":form}) return shortcuts.render_to_response( 'task/submit_report.html', RequestContext(request, context))
def create_task(request): user = request.user profile = user.get_profile() context = { "user": user, "profile": profile, } context.update(csrf(request)) can_create_task = False if ( profile.role == profile_models.ROLES_CHOICES[3][0]) else True if can_create_task: if request.method == "POST": form = taskapp_forms.CreateTaskForm(request.POST) if form.is_valid(): data = form.cleaned_data.copy() data.update({ "created_by": user, "creation_datetime": datetime.now(), }) task = taskapp_models.Task(**data) task.save() task_url = reverse('view_task', kwargs={'task_id': task.id}) return shortcuts.redirect(task_url) else: context.update({'form': form}) return shortcuts.render_to_response( 'task/edit.html', RequestContext(request, context)) else: form = taskapp_forms.CreateTaskForm() context.update({'form': form}) return shortcuts.render_to_response( 'task/edit.html', RequestContext(request, context)) else: return show_msg(user, 'You are not authorised to create a task.')
def view_task(request, task_id, **kwargs): """View to get the requested. Checks for authentication and add a comment if it is a post request. """ context = {} if 'context' in kwargs: context.update(kwargs['context']) task_url = kwargs.get( 'task_url', reverse('view_task', kwargs={'task_id': task_id})) task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id) user = request.user if not user.is_authenticated(): return shortcuts.render_to_response( 'task/view.html', RequestContext(request, {'task': task})) profile = user.get_profile() context.update({ 'user': user, 'profile': profile, 'task': task, }) context.update(csrf(request)) if task.status == taskapp_models.TASK_STATUS_CHOICES[5][0]: return show_msg(user, 'This task no longer exists', reverse('browse_tasks'), 'browse the tasks') if ((task.status != taskapp_models.TASK_STATUS_CHOICES[0][0] ) or profile.role != profile_models.ROLES_CHOICES[3][0]): task_viewable = True else: task_viewable = False if not task_viewable: return show_msg(user, 'You are not authorised to view this task', reverse('browse_tasks'), 'browse the tasks') reviewers = task.reviewers.all() is_reviewer = True if user in task.reviewers.all() else False comments = task.comments.filter( is_deleted=False).order_by('comment_datetime') reports = task.reports.order_by('submitted_at') context.update({'is_reviewer':is_reviewer, 'comments':comments, 'reviewers':reviewers, 'reports': reports, }) selected_users = task.selected_users.all() user_role = user.get_profile().role is_creator = True if user == task.created_by else False context['selected_users'] = selected_users context['is_selected'] = True if user in selected_users else False if (task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] and profile.role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]]): context['can_approve'] = True else: context['can_approve'] = False if ((is_creator or user_role != profile_models.ROLES_CHOICES[3][0]) and task.status in [taskapp_models.TASK_STATUS_CHOICES[0][0], taskapp_models.TASK_STATUS_CHOICES[1][0]]): context['can_edit'] = True else: context['can_edit'] = False if (task.status not in [taskapp_models.TASK_STATUS_CHOICES[0][0], taskapp_models.TASK_STATUS_CHOICES[4][0], taskapp_models.TASK_STATUS_CHOICES[6][0]] and is_reviewer): context['can_close'] = True else: context['can_close'] = False if task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] and is_creator: context['can_delete'] = True else: context['can_delete'] = False if (task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]] and is_reviewer): context['can_assign_pynts'] = True else: context['can_assign_pynts'] = False if (task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]]): context['task_claimable'] = True else: context['task_claimable'] = False if (task.status != taskapp_models.TASK_STATUS_CHOICES[0][0] or\ profile.role != profile_models.ROLES_CHOICES[3][0]): context['can_comment'] = True else: context['can_comment'] = False if (profile.role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]]): context['can_mod_reviewers'] = True 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': 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: 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))
def view_task(request, task_id, **kwargs): """View to get the requested. Checks for authentication and add a comment if it is a post request. """ context = {} if "context" in kwargs: context.update(kwargs["context"]) task_url = kwargs.get("task_url", reverse("view_task", kwargs={"task_id": task_id})) task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id) user = request.user if not user.is_authenticated(): return shortcuts.render_to_response("task/view.html", {"task": task}) profile = user.get_profile() context.update({"user": user, "profile": profile, "task": task}) context.update(csrf(request)) if task.status == taskapp_models.TASK_STATUS_CHOICES[5][0]: return show_msg(user, "This task no longer exists", reverse("browse_tasks"), "browse the tasks") if (task.status != taskapp_models.TASK_STATUS_CHOICES[0][0]) or profile.role != profile_models.ROLES_CHOICES[3][0]: task_viewable = True else: task_viewable = False if not task_viewable: return show_msg(user, "You are not authorised to view this task", reverse("browse_tasks"), "browse the tasks") reviewers = task.reviewers.all() is_reviewer = True if user in task.reviewers.all() else False comments = task.comments.filter(is_deleted=False).order_by("comment_datetime") context.update({"is_reviewer": is_reviewer, "comments": comments, "reviewers": reviewers}) selected_users = task.selected_users.all() user_role = user.get_profile().role is_creator = True if user == task.created_by else False context["selected_users"] = selected_users context["is_selected"] = True if user in selected_users else False if task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] and profile.role in [ profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0], ]: context["can_approve"] = True else: context["can_approve"] = False if (is_creator or user_role != profile_models.ROLES_CHOICES[3][0]) and task.status in [ taskapp_models.TASK_STATUS_CHOICES[0][0], taskapp_models.TASK_STATUS_CHOICES[1][0], ]: context["can_edit"] = True else: context["can_edit"] = False if ( task.status not in [ taskapp_models.TASK_STATUS_CHOICES[0][0], taskapp_models.TASK_STATUS_CHOICES[4][0], taskapp_models.TASK_STATUS_CHOICES[6][0], ] and is_reviewer ): context["can_close"] = True else: context["can_close"] = False if task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] and is_creator: context["can_delete"] = True else: context["can_delete"] = False if ( task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]] and is_reviewer ): context["can_assign_pynts"] = True else: context["can_assign_pynts"] = False if task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]]: context["task_claimable"] = True else: context["task_claimable"] = False if task.status != taskapp_models.TASK_STATUS_CHOICES[0][0] or profile.role != profile_models.ROLES_CHOICES[3][0]: context["can_comment"] = True else: context["can_comment"] = False if profile.role in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]]: context["can_mod_reviewers"] = True else: context["can_mod_reviewers"] = False if request.method == "POST": form = taskapp_forms.TaskCommentForm(request.POST) 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() ) new_comment.save() return shortcuts.redirect(task_url) else: context["form"] = form return shortcuts.render_to_response("task/view.html", RequestContext(request, context)) else: form = taskapp_forms.TaskCommentForm() context["form"] = form return shortcuts.render_to_response("task/view.html", RequestContext(request, context))
def select_user(request, task_id): """ first get the status of the task and then select one of claimed users generate list of claimed users by passing it as an argument to a function. """ task_url = reverse('view_task', kwargs={'task_id': task_id}) user = request.user profile = user.get_profile() task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id) context = { 'user': user, 'profile': profile, 'task': task, } context.update(csrf(request)) reviewers = task.reviewers.all() claimed_users = task.claimed_users.all() is_reviewer = True if user in reviewers else False task_claimed = True if claimed_users else False is_creator = True if user == task.created_by else False if (is_creator or is_reviewer or profile.role in [ profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0] ] and task.status in [ taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0] ]): if task_claimed: user_list = ((user.id, user.username) for user in claimed_users) if request.method == "POST": form = taskapp_forms.ChoiceForm(user_list, request.POST) if form.is_valid(): uid = form.cleaned_data['choice'] selected_user = User.objects.get(id=uid) task.selected_users.add(selected_user) task.claimed_users.remove(selected_user) task.status = taskapp_models.TASK_STATUS_CHOICES[3][0] task.save() return shortcuts.redirect(task_url) else: context.update({"form": form}) return shortcuts.render_to_response( 'task/select_user.html', RequestContext(request, context)) else: form = taskapp_forms.ChoiceForm(user_list) context.update({"form": form}) return shortcuts.render_to_response( 'task/select_user.html', RequestContext(request, context)) else: return show_msg(user, 'There are no pending claims for this task', task_url, 'view the task') else: raise exceptions.UnauthorizedAccess(NO_SELECT_USER)
def view_task(request, task_id, **kwargs): """View to get the requested. Checks for authentication and add a comment if it is a post request. """ context = {} if 'context' in kwargs: context.update(kwargs['context']) task_url = kwargs.get('task_url', reverse('view_task', kwargs={'task_id': task_id})) task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id) user = request.user if not user.is_authenticated(): return shortcuts.render_to_response( 'task/view.html', RequestContext(request, {'task': task})) profile = user.get_profile() context.update({ 'user': user, 'profile': profile, 'task': task, }) context.update(csrf(request)) if task.status == taskapp_models.TASK_STATUS_CHOICES[5][0]: return show_msg(user, 'This task no longer exists', reverse('browse_tasks'), 'browse the tasks') if ((task.status != taskapp_models.TASK_STATUS_CHOICES[0][0]) or profile.role != profile_models.ROLES_CHOICES[3][0]): task_viewable = True else: task_viewable = False if not task_viewable: return show_msg(user, 'You are not authorised to view this task', reverse('browse_tasks'), 'browse the tasks') reviewers = task.reviewers.all() is_reviewer = True if user in task.reviewers.all() else False comments = task.comments.filter( is_deleted=False).order_by('comment_datetime') reports = task.reports.order_by('submitted_at') context.update({ 'is_reviewer': is_reviewer, 'comments': comments, 'reviewers': reviewers, 'reports': reports, }) selected_users = task.selected_users.all() user_role = user.get_profile().role is_creator = True if user == task.created_by else False context['selected_users'] = selected_users context['is_selected'] = True if user in selected_users else False if (task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] and profile.role in [ profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0] ]): context['can_approve'] = True else: context['can_approve'] = False if ((is_creator or user_role != profile_models.ROLES_CHOICES[3][0]) and task.status in [ taskapp_models.TASK_STATUS_CHOICES[0][0], taskapp_models.TASK_STATUS_CHOICES[1][0] ]): context['can_edit'] = True else: context['can_edit'] = False if (task.status not in [ taskapp_models.TASK_STATUS_CHOICES[0][0], taskapp_models.TASK_STATUS_CHOICES[4][0], taskapp_models.TASK_STATUS_CHOICES[6][0] ] and is_reviewer): context['can_close'] = True else: context['can_close'] = False if task.status == taskapp_models.TASK_STATUS_CHOICES[0][0] and is_creator: context['can_delete'] = True else: context['can_delete'] = False if (task.status in [ taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0] ] and is_reviewer): context['can_assign_pynts'] = True else: context['can_assign_pynts'] = False if (task.status in [ taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0] ]): context['task_claimable'] = True else: context['task_claimable'] = False if (task.status != taskapp_models.TASK_STATUS_CHOICES[0][0] or\ profile.role != profile_models.ROLES_CHOICES[3][0]): context['can_comment'] = True else: context['can_comment'] = False if (profile.role in [ profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0] ]): context['can_mod_reviewers'] = True 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': 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: 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))