mirror of https://github.com/veops/cmdb.git
fix(api): search sort misses cache (#251)
This commit is contained in:
parent
0172206c7c
commit
8ef4edb7d2
|
@ -336,9 +336,6 @@ class AttributeManager(object):
|
||||||
def update(self, _id, **kwargs):
|
def update(self, _id, **kwargs):
|
||||||
attr = Attribute.get_by_id(_id) or abort(404, ErrFormat.attribute_not_found.format("id={}".format(_id)))
|
attr = Attribute.get_by_id(_id) or abort(404, ErrFormat.attribute_not_found.format("id={}".format(_id)))
|
||||||
|
|
||||||
if not self._can_edit_attribute(attr):
|
|
||||||
return abort(403, ErrFormat.cannot_edit_attribute)
|
|
||||||
|
|
||||||
if kwargs.get("name"):
|
if kwargs.get("name"):
|
||||||
other = Attribute.get_by(name=kwargs['name'], first=True, to_dict=False)
|
other = Attribute.get_by(name=kwargs['name'], first=True, to_dict=False)
|
||||||
if other and other.id != attr.id:
|
if other and other.id != attr.id:
|
||||||
|
@ -379,6 +376,14 @@ class AttributeManager(object):
|
||||||
|
|
||||||
kwargs.get('is_computed') and self.can_create_computed_attribute()
|
kwargs.get('is_computed') and self.can_create_computed_attribute()
|
||||||
|
|
||||||
|
is_changed = False
|
||||||
|
for k in kwargs:
|
||||||
|
if kwargs[k] != getattr(attr, k, None):
|
||||||
|
is_changed = True
|
||||||
|
|
||||||
|
if is_changed and not self._can_edit_attribute(attr):
|
||||||
|
return abort(403, ErrFormat.cannot_edit_attribute)
|
||||||
|
|
||||||
attr.update(flush=True, filter_none=False, **kwargs)
|
attr.update(flush=True, filter_none=False, **kwargs)
|
||||||
|
|
||||||
if is_choice and choice_value:
|
if is_choice and choice_value:
|
||||||
|
|
|
@ -45,8 +45,8 @@ from api.lib.perm.acl.acl import is_app_admin
|
||||||
from api.lib.perm.acl.acl import validate_permission
|
from api.lib.perm.acl.acl import validate_permission
|
||||||
from api.lib.secrets.inner import InnerCrypt
|
from api.lib.secrets.inner import InnerCrypt
|
||||||
from api.lib.secrets.vault import VaultClient
|
from api.lib.secrets.vault import VaultClient
|
||||||
from api.lib.utils import handle_arg_list
|
|
||||||
from api.lib.utils import Lock
|
from api.lib.utils import Lock
|
||||||
|
from api.lib.utils import handle_arg_list
|
||||||
from api.lib.webhook import webhook_request
|
from api.lib.webhook import webhook_request
|
||||||
from api.models.cmdb import AttributeHistory
|
from api.models.cmdb import AttributeHistory
|
||||||
from api.models.cmdb import AutoDiscoveryCI
|
from api.models.cmdb import AutoDiscoveryCI
|
||||||
|
@ -639,6 +639,9 @@ class CIManager(object):
|
||||||
_fields.append(str(attr.id))
|
_fields.append(str(attr.id))
|
||||||
filter_fields_sql = "WHERE A.attr_id in ({0})".format(",".join(_fields))
|
filter_fields_sql = "WHERE A.attr_id in ({0})".format(",".join(_fields))
|
||||||
|
|
||||||
|
ci2pos = {int(_id): _pos for _pos, _id in enumerate(ci_ids)}
|
||||||
|
res = [None] * len(ci_ids)
|
||||||
|
|
||||||
ci_ids = ",".join(map(str, ci_ids))
|
ci_ids = ",".join(map(str, ci_ids))
|
||||||
if value_tables is None:
|
if value_tables is None:
|
||||||
value_tables = ValueTypeMap.table_name.values()
|
value_tables = ValueTypeMap.table_name.values()
|
||||||
|
@ -649,7 +652,6 @@ class CIManager(object):
|
||||||
# current_app.logger.debug(query_sql)
|
# current_app.logger.debug(query_sql)
|
||||||
cis = db.session.execute(query_sql).fetchall()
|
cis = db.session.execute(query_sql).fetchall()
|
||||||
ci_set = set()
|
ci_set = set()
|
||||||
res = list()
|
|
||||||
ci_dict = dict()
|
ci_dict = dict()
|
||||||
unique_id2obj = dict()
|
unique_id2obj = dict()
|
||||||
excludes = excludes and set(excludes)
|
excludes = excludes and set(excludes)
|
||||||
|
@ -669,7 +671,7 @@ class CIManager(object):
|
||||||
ci_dict["unique"] = unique_id2obj[ci_type.unique_id] and unique_id2obj[ci_type.unique_id].name
|
ci_dict["unique"] = unique_id2obj[ci_type.unique_id] and unique_id2obj[ci_type.unique_id].name
|
||||||
ci_dict["unique_alias"] = unique_id2obj[ci_type.unique_id] and unique_id2obj[ci_type.unique_id].alias
|
ci_dict["unique_alias"] = unique_id2obj[ci_type.unique_id] and unique_id2obj[ci_type.unique_id].alias
|
||||||
ci_set.add(ci_id)
|
ci_set.add(ci_id)
|
||||||
res.append(ci_dict)
|
res[ci2pos[ci_id]] = ci_dict
|
||||||
|
|
||||||
if ret_key == RetKey.NAME:
|
if ret_key == RetKey.NAME:
|
||||||
attr_key = attr_name
|
attr_key = attr_name
|
||||||
|
|
Loading…
Reference in New Issue