def route(page): endpoint, *args = page.split("/") if f"/{endpoint}" not in app.rbac["endpoints"]["POST"]: return jsonify({"alert": "Invalid POST request."}) if f"/{endpoint}" in app.rbac["groups"][current_user.group]["POST"]: return jsonify({"alert": "Error 403 Forbidden."}) form_type = request.form.get("form_type") if endpoint in app.json_endpoints: result = getattr(app, endpoint)(*args, **request.json) elif form_type: form = form_classes[form_type](request.form) if not form.validate_on_submit(): return jsonify({"invalid_form": True, **{"errors": form.errors}}) result = getattr(app, endpoint)(*args, **form_postprocessing(form, request.form)) else: result = getattr(app, endpoint)(*args) try: Session.commit() return jsonify(result) except Exception as exc: raise exc Session.rollback() if app.settings["app"]["config_mode"] == "debug": raise return jsonify({"alert": handle_exception(str(exc))})
def update(self, instance_type, **kwargs): try: must_be_new = kwargs.get("id") == "" for arg in ("name", "scoped_name"): if arg in kwargs: kwargs[arg] = kwargs[arg].strip() kwargs["last_modified"] = self.get_time() kwargs["creator"] = kwargs["user"] = getattr( current_user, "name", "admin") instance = factory(instance_type, must_be_new=must_be_new, **kwargs) if kwargs.get("original"): fetch(instance_type, id=kwargs["original"]).duplicate(clone=instance) Session.flush() return instance.serialized except Exception as exc: Session.rollback() if isinstance(exc, IntegrityError): return { "alert": (f"There already is a {instance_type} with the same name") } return {"alert": str(exc)}
def update(self, cls: str, **kwargs: Any) -> dict: try: must_be_new = kwargs.get("id") == "" kwargs["last_modified"] = self.get_time() kwargs["creator"] = getattr(current_user, "name", "admin") instance = factory(cls, must_be_new=must_be_new, **kwargs) Session.flush() return instance.serialized except Exception as exc: Session.rollback() if isinstance(exc, IntegrityError): return {"error": (f"There already is a {cls} with the same name")} return {"error": str(exc)}
def route(page): f, *args = page.split("/") if f not in app.valid_post_endpoints: return jsonify({"error": "Invalid POST request."}) form_type = request.form.get("form_type") if f in ("table_filtering", "view_filtering", "multiselect_filtering"): result = getattr(app, f)(*args, request.form) elif form_type: form = form_classes[form_type](request.form) if not form.validate_on_submit(): return jsonify({"invalid_form": True, **{"errors": form.errors}}) result = getattr(app, f)(*args, **form_postprocessing(request.form)) else: result = getattr(app, f)(*args) try: Session.commit() return jsonify(result) except Exception as exc: raise exc Session.rollback() if app.config_mode == "Debug": raise return jsonify({"error": handle_exception(str(exc))})
def route(page): f, *args = page.split("/") if f not in app.json_endpoints + app.form_endpoints: return jsonify({"alert": "Invalid POST request."}) form_type = request.form.get("form_type") if f in app.json_endpoints: result = getattr(app, f)(*args, **request.json) elif form_type: form = form_classes[form_type](request.form) if not form.validate_on_submit(): return jsonify({"invalid_form": True, **{"errors": form.errors}}) result = getattr(app, f)(*args, **form_postprocessing(form, request.form)) else: result = getattr(app, f)(*args) try: Session.commit() return jsonify(result) except Exception as exc: raise exc Session.rollback() if app.config["app"]["config_mode"] == "debug": raise return jsonify({"alert": handle_exception(str(exc))})
def route(page: str) -> Response: f, *args = page.split("/") if f not in controller.valid_post_endpoints: return jsonify({"error": "Invalid POST request."}) form_type = request.form.get("form_type") if form_type: form = form_classes[form_type](request.form) if not form.validate_on_submit(): return jsonify({"invalid_form": True, **{"errors": form.errors}}) result = getattr(controller, f)(*args, **form_postprocessing(request.form)) elif f == "filtering": result = getattr(controller, f)(*args, request.form) else: result = getattr(controller, f)(*args) try: Session.commit() return jsonify(result) except Exception as exc: Session.rollback() if controller.enms_config_mode == "Debug": raise return jsonify({"error": handle_exception(str(exc))})