def handle_task_form(request, form_post, task, success_action): if request.method == 'POST': form = TaskForm(request.POST, instance=task) if form.is_valid(): task = form.save(commit=False) if not task.author_id: task.author_id = request.user.pk if save_task(task): success_action(task) messages.add_message( request, messages.SUCCESS, 'Task %s saved successfully.' % task) return HttpResponseRedirect( reverse('task_details', args=[task.pk])) else: messages.add_message( request, messages.ERROR, 'Unable to save this task. ' 'Please report this accident to administrator.') else: form = TaskForm(instance=task) return render(request, 'contest/task_new.html', { 'form': form, 'form_post': form_post })
def fetch_task(request, contest_id): contest = Contest.objects.get(pk=contest_id) if not request.user.has_perm('manage_contest', contest): raise PermissionDenied elif request.method == 'POST': form = TaskFetchForm(request.POST) if form.is_valid(): fetched_task = copy_task(form) fetched_task.contest = contest if save_task(fetched_task): messages.add_message( request, messages.SUCCESS, 'New task has been added to contest %s.' % contest.name) add_task_to_groups(contest, fetched_task) else: messages.add_message( request, messages.ERROR, 'Unable to fetch task %s. Please report this accident' ' to administrator.' % fetched_task) return HttpResponseRedirect( reverse('contest_details', args=[contest_id]) + '?current_tab=tasks')
def handle_task_form(request, form_post, task, success_action): if request.method == 'POST': form = TaskForm(request.POST, instance=task) if form.is_valid(): task = form.save(commit=False) if not task.author_id: task.author_id = request.user.pk if save_task(task): success_action(task) messages.add_message(request, messages.SUCCESS, 'Task %s saved successfully.' % task) return HttpResponseRedirect( reverse('task_details', args=[task.pk])) else: messages.add_message( request, messages.ERROR, 'Unable to save this task. ' 'Please report this accident to administrator.') else: form = TaskForm(instance=task) return render(request, 'contest/task_new.html', { 'form': form, 'form_post': form_post })