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]}))
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]}))
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, })
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, }, )