Esempio n. 1
0
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))})
Esempio n. 2
0
File: base.py Progetto: swamim/eNMS
 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)}
Esempio n. 3
0
 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)}
Esempio n. 4
0
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))})
Esempio n. 5
0
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))})
Esempio n. 6
0
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))})