mirror of https://github.com/jumpserver/jumpserver
perf: 优化node full value
parent
36cd18ab9a
commit
15992c636a
|
@ -37,7 +37,7 @@ def migrate_nodes_full_value(apps, schema_editor):
|
||||||
ancestor_keys = get_node_ancestor_keys(node.key, True)
|
ancestor_keys = get_node_ancestor_keys(node.key, True)
|
||||||
values = model.objects.filter(key__in=ancestor_keys).values_list('key', 'value')
|
values = model.objects.filter(key__in=ancestor_keys).values_list('key', 'value')
|
||||||
values = [v for k, v in sorted(values, key=lambda x: len(x[0]))]
|
values = [v for k, v in sorted(values, key=lambda x: len(x[0]))]
|
||||||
node.full_value = '/'.join(values)
|
node.full_value = '/' + '/'.join(values)
|
||||||
node.save()
|
node.save()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -316,7 +316,7 @@ class Asset(ProtocolsMixin, NodesRelationMixin, OrgModelMixin):
|
||||||
def nodes_display(self):
|
def nodes_display(self):
|
||||||
names = []
|
names = []
|
||||||
for n in self.nodes.all():
|
for n in self.nodes.all():
|
||||||
names.append(self.full_value)
|
names.append(n.full_value)
|
||||||
return names
|
return names
|
||||||
|
|
||||||
def as_node(self):
|
def as_node(self):
|
||||||
|
|
|
@ -410,7 +410,7 @@ class Node(OrgModelMixin, SomeNodesMixin, FamilyMixin, NodeAssetsMixin):
|
||||||
ordering = ['key']
|
ordering = ['key']
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.value
|
return self.full_value
|
||||||
|
|
||||||
# def __eq__(self, other):
|
# def __eq__(self, other):
|
||||||
# if not other:
|
# if not other:
|
||||||
|
@ -434,7 +434,6 @@ class Node(OrgModelMixin, SomeNodesMixin, FamilyMixin, NodeAssetsMixin):
|
||||||
def name(self):
|
def name(self):
|
||||||
return self.value
|
return self.value
|
||||||
|
|
||||||
@lazyproperty
|
|
||||||
def computed_full_value(self):
|
def computed_full_value(self):
|
||||||
# 不要在列表中调用该属性
|
# 不要在列表中调用该属性
|
||||||
values = self.__class__.objects.filter(
|
values = self.__class__.objects.filter(
|
||||||
|
@ -442,7 +441,7 @@ class Node(OrgModelMixin, SomeNodesMixin, FamilyMixin, NodeAssetsMixin):
|
||||||
).values_list('key', 'value')
|
).values_list('key', 'value')
|
||||||
values = [v for k, v in sorted(values, key=lambda x: len(x[0]))]
|
values = [v for k, v in sorted(values, key=lambda x: len(x[0]))]
|
||||||
values.append(self.value)
|
values.append(self.value)
|
||||||
return '/'.join(values)
|
return '/' + '/'.join(values)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def level(self):
|
def level(self):
|
||||||
|
@ -481,3 +480,7 @@ class Node(OrgModelMixin, SomeNodesMixin, FamilyMixin, NodeAssetsMixin):
|
||||||
if self.has_children_or_has_assets():
|
if self.has_children_or_has_assets():
|
||||||
return
|
return
|
||||||
return super().delete(using=using, keep_parents=keep_parents)
|
return super().delete(using=using, keep_parents=keep_parents)
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
self.full_value = self.computed_full_value()
|
||||||
|
return super().save(*args, **kwargs)
|
||||||
|
|
Loading…
Reference in New Issue