mirror of https://github.com/jumpserver/jumpserver
perf(assets): 优化节点生成子节点key生成逻辑 (#5405)
* perf(assets): 优化节点生成子节点key生成逻辑 * perf(assets): 优化写法 * perf(assets): 优化获取子节点的mark * perf(assets): 再优化一波 * perf(asset): 继续优化这里的写法 Co-authored-by: ibuler <ibuler@qq.com>pull/5406/head
parent
dbe969b064
commit
b3f359d47b
|
@ -38,6 +38,7 @@ class FamilyMixin:
|
||||||
__children = None
|
__children = None
|
||||||
__all_children = None
|
__all_children = None
|
||||||
is_node = True
|
is_node = True
|
||||||
|
child_mark: int
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def clean_children_keys(nodes_keys):
|
def clean_children_keys(nodes_keys):
|
||||||
|
@ -121,11 +122,22 @@ class FamilyMixin:
|
||||||
created = True
|
created = True
|
||||||
return child, created
|
return child, created
|
||||||
|
|
||||||
|
def get_valid_child_mark(self):
|
||||||
|
key = "{}:{}".format(self.key, self.child_mark)
|
||||||
|
if not self.__class__.objects.filter(key=key).exists():
|
||||||
|
return self.child_mark
|
||||||
|
children_keys = self.get_children().values_list('key', flat=True)
|
||||||
|
children_keys_last = [key.split(':')[-1] for key in children_keys]
|
||||||
|
children_keys_last = [int(k) for k in children_keys_last if k.strip().isdigit()]
|
||||||
|
max_key_last = max(children_keys_last) if children_keys_last else 1
|
||||||
|
return max_key_last + 1
|
||||||
|
|
||||||
def get_next_child_key(self):
|
def get_next_child_key(self):
|
||||||
mark = self.child_mark
|
child_mark = self.get_valid_child_mark()
|
||||||
self.child_mark += 1
|
key = "{}:{}".format(self.key, child_mark)
|
||||||
|
self.child_mark = child_mark + 1
|
||||||
self.save()
|
self.save()
|
||||||
return "{}:{}".format(self.key, mark)
|
return key
|
||||||
|
|
||||||
def get_next_child_preset_name(self):
|
def get_next_child_preset_name(self):
|
||||||
name = ugettext("New node")
|
name = ugettext("New node")
|
||||||
|
|
Loading…
Reference in New Issue