From a033a53a3238941e462c283bc0470caa42d33b49 Mon Sep 17 00:00:00 2001 From: jyong <718720800@qq.com> Date: Tue, 5 Nov 2024 21:10:30 +0800 Subject: [PATCH] fta --- api/controllers/console/datasets/fta_test.py | 39 ++++++++++++++++++-- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/api/controllers/console/datasets/fta_test.py b/api/controllers/console/datasets/fta_test.py index e0ad370f0c..046385bfaf 100644 --- a/api/controllers/console/datasets/fta_test.py +++ b/api/controllers/console/datasets/fta_test.py @@ -1,5 +1,6 @@ import json +from flask import Response import requests from sqlalchemy import text @@ -10,6 +11,8 @@ from extensions.ext_database import db from models.fta import ComponentFailure, ComponentFailureStats +from extensions.ext_storage import storage + class FATTestApi(Resource): @@ -25,9 +28,9 @@ class FATTestApi(Resource): args = parser.parse_args() print(args["log_process_data"]) # Extract the JSON string from the text field - json_str = args["log_process_data"].strip("```json\\n").strip("```").strip().replace("\\", "").replace(",n", ",") + json_str = args["log_process_data"].strip("```json\\n").strip("```").strip().replace("\\n", "") log_data = json.loads(json_str) - + db.session.query(ComponentFailure).delete() for data in log_data: if not isinstance(data, dict): raise TypeError("Data must be a dictionary.") @@ -38,7 +41,6 @@ class FATTestApi(Resource): try: # Clear existing stats - db.session.query(ComponentFailure).delete() component_failure = ComponentFailure( Date=data["Date"], Component=data["Component"], @@ -97,7 +99,7 @@ class FATTestApi(Resource): stats_list = [] for stat in component_failure_stats: stats_list.append(( - stat.id, + stat.StatID, stat.Component, stat.FailureMode, stat.Cause, @@ -137,5 +139,34 @@ class GenerateFaultTreeApi(Resource): return {"data": response.json()}, 200 +class ExtractSVGApi(Resource): + + def post(self): + parser = reqparse.RequestParser() + parser.add_argument( + "svg_text", + nullable=False, + required=True, + type=str, + location="args" + ) + args = parser.parse_args() + # svg_text = ''.join(args["svg_text"].splitlines()) + svg_text = args["svg_text"].replace('\n', '') + svg_text = svg_text.replace('\"', '"') + print(svg_text) + svg_text_json = json.loads(svg_text) + svg_content = svg_text_json.get("data").get("svg_content")[0] + svg_content = svg_content.replace('\n', '').replace('\"', '"') + file_key = "fta_svg/" + "fat.svg" + if storage.exists(file_key): + storage.delete(file_key) + storage.save(file_key, svg_content.encode("utf-8")) + generator = storage.load(file_key, stream=True) + + return Response(generator, mimetype="image/svg+xml") + + api.add_resource(FATTestApi, "/fta/db-handler") api.add_resource(GenerateFaultTreeApi, "/fta/generate-fault-tree") +api.add_resource(ExtractSVGApi, "/fta/extract-svg")