def course_edit(request, course_id): user = request.user course = get_object_or_404(Course, id=course_id) # check rights if not (course.is_user_editor_or_delegate(user) and course.state in ('prepared')): raise PermissionDenied ContributionFormset = inlineformset_factory(Course, Contribution, formset=ContributorFormSet, form=ContributionForm, extra=1, exclude=('course',)) form = CourseForm(request.POST or None, instance=course) formset = ContributionFormset(request.POST or None, instance=course, queryset=course.contributions.exclude(contributor=None)) operation = request.POST.get('operation') if form.is_valid() and formset.is_valid(): if operation not in ('save', 'approve'): raise PermissionDenied form.save(user=request.user) formset.save() if operation == 'approve': # approve course course.contributor_approve() course.save() messages.add_message(request, messages.INFO, _("Successfully updated and approved course.")) else: messages.add_message(request, messages.INFO, _("Successfully updated course.")) return redirect('evap.contributor.views.index') else: return render_to_response("contributor_course_form.html", dict(form=form, formset=formset, course=course, edit=True, responsible=course.responsible_contributors_username), context_instance=RequestContext(request))
def course_edit(request, course_id): user = request.user course = get_object_or_404(Course, id=course_id) # check rights if not (course.is_user_editor_or_delegate(user) and course.state == 'prepared'): raise PermissionDenied InlineContributionFormset = inlineformset_factory(Course, Contribution, formset=ContributionFormSet, form=EditorContributionForm, extra=1) course_form = CourseForm(request.POST or None, instance=course) formset = InlineContributionFormset(request.POST or None, instance=course, form_kwargs={'course': course}) operation = request.POST.get('operation') if course_form.is_valid() and formset.is_valid(): if operation not in ('save', 'approve'): raise SuspiciousOperation("Invalid POST operation") course_form.save(user=user) formset.save() if operation == 'approve': # approve course course.editor_approve() course.save() messages.success(request, _("Successfully updated and approved course.")) else: messages.success(request, _("Successfully updated course.")) return redirect('contributor:index') else: sort_formset(request, formset) template_data = dict(form=course_form, formset=formset, course=course, edit=True, responsible=course.responsible_contributor.username) return render(request, "contributor_course_form.html", template_data)
def course_edit(request, course_id): user = request.user course = get_object_or_404(Course, id=course_id) # check rights if not (course.is_user_editor_or_delegate(user) and course.state == 'prepared'): raise PermissionDenied InlineContributionFormset = inlineformset_factory(Course, Contribution, formset=ContributionFormSet, form=EditorContributionForm, extra=1) course_form = CourseForm(request.POST or None, instance=course) formset = InlineContributionFormset(request.POST or None, instance=course, form_kwargs={'course': course}) if course_form.is_valid() and formset.is_valid(): operation = request.POST.get('operation') if operation not in ('save', 'approve'): raise SuspiciousOperation("Invalid POST operation") course_form.save(user=user) formset.save() if operation == 'approve': # approve course course.editor_approve() course.save() messages.success(request, _("Successfully updated and approved course.")) else: messages.success(request, _("Successfully updated course.")) return redirect('contributor:index') else: messages.error(request, _("The form was not saved. Please resolve the errors shown below.")) rsort_formset(request, formset) template_data = dict(form=course_form, formset=formset, course=course, editable=True, responsible=course.responsible_contributor.username) return render(request, "contributor_course_form.html", template_data)
def course_edit(request, course_id): user = request.user course = get_object_or_404(Course, id=course_id) # check rights if not (course.is_user_editor_or_delegate(user) and course.state == 'prepared'): raise PermissionDenied post_operation = request.POST.get('operation') if request.POST else None preview = post_operation == 'preview' InlineContributionFormset = inlineformset_factory(Course, Contribution, formset=ContributionFormSet, form=EditorContributionForm, extra=1) course_form = CourseForm(request.POST or None, instance=course) formset = InlineContributionFormset(request.POST or None, instance=course, can_change_responsible=False, form_kwargs={'course': course}) forms_are_valid = course_form.is_valid() and formset.is_valid() if forms_are_valid and not preview: if post_operation not in ('save', 'approve'): raise SuspiciousOperation("Invalid POST operation") course_form.save(user=user) formset.save() if post_operation == 'approve': course.editor_approve() course.save() messages.success(request, _("Successfully updated and approved course.")) else: messages.success(request, _("Successfully updated course.")) return redirect('contributor:index') else: preview_html = None if preview and forms_are_valid: preview_html = render_preview(request, formset, course_form, course) if not forms_are_valid and (course_form.errors or formset.errors): if preview: messages.error(request, _("The preview could not be rendered. Please resolve the errors shown below.")) else: messages.error(request, _("The form was not saved. Please resolve the errors shown below.")) sort_formset(request, formset) template_data = dict(form=course_form, formset=formset, course=course, editable=True, preview_html=preview_html, responsibles=[contributor.username for contributor in course.responsible_contributors]) return render(request, "contributor_course_form.html", template_data)
def course_edit(request, course_id): user = request.user course = get_object_or_404(Course, id=course_id) # check rights if not (course.is_user_editor_or_delegate(user) and course.state == 'prepared'): raise PermissionDenied post_operation = request.POST.get('operation') if request.POST else None preview = post_operation == 'preview' InlineContributionFormset = inlineformset_factory(Course, Contribution, formset=ContributionFormSet, form=EditorContributionForm, extra=1) course_form = CourseForm(request.POST or None, instance=course) formset = InlineContributionFormset(request.POST or None, instance=course, form_kwargs={'course': course}) forms_are_valid = course_form.is_valid() and formset.is_valid() if forms_are_valid and not preview: if post_operation not in ('save', 'approve'): raise SuspiciousOperation("Invalid POST operation") course_form.save(user=user) formset.save() if post_operation == 'approve': course.editor_approve() course.save() messages.success(request, _("Successfully updated and approved course.")) else: messages.success(request, _("Successfully updated course.")) return redirect('contributor:index') else: preview_html = None if preview and forms_are_valid: preview_html = render_preview(request, formset, course_form, course) if not forms_are_valid and (course_form.errors or formset.errors): if preview: messages.error(request, _("The preview could not be rendered. Please resolve the errors shown below.")) else: messages.error(request, _("The form was not saved. Please resolve the errors shown below.")) sort_formset(request, formset) template_data = dict(form=course_form, formset=formset, course=course, editable=True, preview_html=preview_html, responsibles=[contributor.username for contributor in course.responsible_contributors]) return render(request, "contributor_course_form.html", template_data)