Exemplo n.º 1
0
def add_user(request, pk):
    """Add user to container."""
    form = CtnrUserForm(qd_to_py_dict(request.POST))
    if form.is_valid():
        # Create table so client can inside new row into user table.
        extra_cols = [{"header": ""}]
        extra_cols[0]["data"] = [{"value": LEVELS[int(request.POST["level"])], "url": ""}]
        user_table = tablefy(User.objects.filter(id=request.POST["user"]), users=True, extra_cols=extra_cols)
        form.save()
        return HttpResponse(json.dumps({"user": user_table}))
    else:
        return HttpResponse(json.dumps({"error": [form.errors[err] for err in form.errors]}))
Exemplo n.º 2
0
def add_user(request, pk):
    """Add user to container."""
    form = CtnrUserForm(qd_to_py_dict(request.POST))
    if form.is_valid():
        # Create table so client can inside new row into user table.
        extra_cols = [{'header': ''}]
        extra_cols[0]['data'] = [{
            'value': LEVELS[int(request.POST['level'])],
            'url': ''
        }]
        user_table = tablefy(User.objects.filter(id=request.POST['user']),
                             users=True,
                             extra_cols=extra_cols)
        form.save()
        return HttpResponse(json.dumps({'user': user_table}))
    else:
        return HttpResponse(
            json.dumps({'error': [form.errors[err] for err in form.errors]}))
Exemplo n.º 3
0
def cy_view(request, get_klasses_fn, template, pk=None, obj_type=None):
    """List, create, update view in one for a flatter heirarchy. """
    # Infer obj_type from URL, saves trouble of having to specify
    obj_type = obj_type or request.path.split('/')[2]

    Klass, FormKlass, FQDNFormKlass = get_klasses_fn(obj_type)
    obj = get_object_or_404(Klass, pk=pk) if pk else None
    form = FormKlass(instance=obj)

    if request.method == 'POST':
        form = FormKlass(request.POST, instance=obj)

        if form.is_valid():
            try:
                if perm(request, cy.ACTION_CREATE, obj=obj, obj_class=Klass):
                    obj = form.save()
                    return redirect(
                        request.META.get('HTTP_REFERER', obj.get_list_url()))
            except (ValidationError, ValueError) as e:
                if form._errors is None:
                    form._errors = ErrorDict()
                form._errors["__all__"] = ErrorList(e.messages)
                return render(request, template, {
                    'form': form,
                    'obj': obj,
                    'obj_type': obj_type,
                    'pk': pk,
                })
    elif request.method == 'GET':
        form = FormKlass(initial=qd_to_py_dict(request.GET))

    object_list = _filter(request, Klass)
    page_obj = make_paginator(request, do_sort(request, object_list), 50)

    return render(
        request, template, {
            'form': form,
            'obj': obj,
            'page_obj': page_obj,
            'object_table': tablefy(page_obj),
            'obj_type': obj_type,
            'pk': pk,
        })
Exemplo n.º 4
0
def cy_view(request, get_klasses_fn, template, pk=None, obj_type=None):
    """List, create, update view in one for a flatter heirarchy. """
    # Infer obj_type from URL, saves trouble of having to specify
    obj_type = obj_type or request.path.split("/")[2]

    Klass, FormKlass, FQDNFormKlass = get_klasses_fn(obj_type)
    obj = get_object_or_404(Klass, pk=pk) if pk else None
    form = FormKlass(instance=obj)

    if request.method == "POST":
        form = FormKlass(request.POST, instance=obj)

        if form.is_valid():
            try:
                if perm(request, cy.ACTION_CREATE, obj=obj, obj_class=Klass):
                    obj = form.save()
                    return redirect(request.META.get("HTTP_REFERER", obj.get_list_url()))
            except (ValidationError, ValueError) as e:
                if form._errors is None:
                    form._errors = ErrorDict()
                form._errors["__all__"] = ErrorList(e.messages)
                return render(request, template, {"form": form, "obj": obj, "obj_type": obj_type, "pk": pk})
    elif request.method == "GET":
        form = FormKlass(initial=qd_to_py_dict(request.GET))

    object_list = _filter(request, Klass)
    page_obj = make_paginator(request, do_sort(request, object_list), 50)

    return render(
        request,
        template,
        {
            "form": form,
            "obj": obj,
            "page_obj": page_obj,
            "object_table": tablefy(page_obj),
            "obj_type": obj_type,
            "pk": pk,
        },
    )