From 8296e9a5524555a6ddcea1985c84cfb9ac35a7bf Mon Sep 17 00:00:00 2001
From: pycook <pycook@126.com>
Date: Tue, 22 Aug 2023 11:34:40 +0800
Subject: [PATCH] fix update ci

---
 cmdb-api/api/app.py           | 7 +++----
 cmdb-api/api/resource.py      | 5 ++---
 cmdb-api/api/views/cmdb/ci.py | 1 +
 3 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/cmdb-api/api/app.py b/cmdb-api/api/app.py
index e581f7b..356bb7c 100644
--- a/cmdb-api/api/app.py
+++ b/cmdb-api/api/app.py
@@ -6,13 +6,13 @@ import logging
 import os
 import sys
 from inspect import getmembers
-from flask.json.provider import DefaultJSONProvider
 from logging.handlers import RotatingFileHandler
 
 from flask import Flask
 from flask import jsonify, make_response
 from flask.blueprints import Blueprint
 from flask.cli import click
+from flask.json.provider import DefaultJSONProvider
 
 import api.views.entry
 from api.extensions import (bcrypt, cache, celery, cors, db, es, login_manager, migrate, rd)
@@ -173,9 +173,8 @@ def register_commands(app):
     for root, _, files in os.walk(os.path.join(HERE, "commands")):
         for filename in files:
             if not filename.startswith("_") and filename.endswith("py"):
-                module_path = os.path.join(HERE, root[root.index("commands"):])
-                if module_path not in sys.path:
-                    sys.path.insert(1, module_path)
+                if root not in sys.path:
+                    sys.path.insert(1, root)
                 command = __import__(os.path.splitext(filename)[0])
                 func_list = [o[0] for o in getmembers(command) if isinstance(o[1], click.core.Command)]
                 for func_name in func_list:
diff --git a/cmdb-api/api/resource.py b/cmdb-api/api/resource.py
index 43f4bd6..3fa57a7 100644
--- a/cmdb-api/api/resource.py
+++ b/cmdb-api/api/resource.py
@@ -34,9 +34,8 @@ def register_resources(resource_path, rest_api):
     for root, _, files in os.walk(os.path.join(resource_path)):
         for filename in files:
             if not filename.startswith("_") and filename.endswith("py"):
-                module_path = os.path.join(API_PACKAGE, root[root.index("views"):])
-                if module_path not in sys.path:
-                    sys.path.insert(1, module_path)
+                if root not in sys.path:
+                    sys.path.insert(1, root)
                 view = __import__(os.path.splitext(filename)[0])
                 resource_list = [o[0] for o in getmembers(view) if isclass(o[1]) and issubclass(o[1], Resource)]
                 resource_list = [i for i in resource_list if i != "APIView"]
diff --git a/cmdb-api/api/views/cmdb/ci.py b/cmdb-api/api/views/cmdb/ci.py
index cb285b5..83d3809 100644
--- a/cmdb-api/api/views/cmdb/ci.py
+++ b/cmdb-api/api/views/cmdb/ci.py
@@ -106,6 +106,7 @@ class CIView(APIView):
                            _is_admin=request.values.pop('__is_admin', False),
                            **ci_dict)
         else:
+            request.values.pop('exist_policy', None)
             ci_id = manager.add(ci_type,
                                 exist_policy=ExistPolicy.REPLACE,
                                 _no_attribute_policy=_no_attribute_policy,