def perspective_edit(request, perspective_id, response_format="html"): "Perspective edit" perspective = get_object_or_404(Perspective, pk=perspective_id) # Don't let users delete their last perspective other_perspectives = Perspective.objects.filter(trash=False).exclude(id=perspective_id) admin_module = Module.objects.filter(name="maker.core")[0] if request.POST: if not "cancel" in request.POST: form = PerspectiveForm(request.user.get_profile(), request.POST, instance=perspective) if form.is_valid(): perspective = form.save() modules = perspective.modules.all() if modules and not admin_module in modules: if not other_perspectives.filter(Q(modules=admin_module) | Q(modules__isnull=True)): perspective.modules.add(admin_module) request.session["message"] = _( "This is your only Perspective with Administration module. You would be locked out!" ) return HttpResponseRedirect(reverse("core_admin_perspective_view", args=[perspective.id])) else: return HttpResponseRedirect(reverse("core_admin_perspective_view", args=[perspective.id])) else: form = PerspectiveForm(request.user.get_profile(), instance=perspective) message = request.session.pop("message", "") return render_to_response( "core/administration/perspective_edit", {"perspective": perspective, "form": form}, context_instance=RequestContext(request), response_format=response_format, )
def perspective_add(request, response_format="html"): "Perspective add" if request.POST: if not "cancel" in request.POST: perspective = Perspective() form = PerspectiveForm(request.user.get_profile(), request.POST, instance=perspective) if form.is_valid(): perspective = form.save() perspective.set_user_from_request(request) return HttpResponseRedirect(reverse("core_admin_perspective_view", args=[perspective.id])) else: return HttpResponseRedirect(reverse("core_admin_index_perspectives")) else: form = PerspectiveForm(request.user.get_profile()) return render_to_response( "core/administration/perspective_add", {"form": form.as_ul()}, context_instance=RequestContext(request), response_format=response_format, )