Ejemplo n.º 1
0
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,
    )
Ejemplo n.º 2
0
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,
    )