mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
886 B
30 lines
886 B
from orgs.utils import current_org
|
|
from common.utils.lock import DistributedLock
|
|
from assets.models import Node
|
|
|
|
|
|
class NodeTreeUpdateLock(DistributedLock):
|
|
name_template = 'assets.node.tree.update.<org_id:{org_id}>'
|
|
|
|
def get_name(self):
|
|
if current_org:
|
|
org_id = current_org.id
|
|
else:
|
|
org_id = 'current_org_is_null'
|
|
name = self.name_template.format(
|
|
org_id=org_id
|
|
)
|
|
return name
|
|
|
|
def __init__(self):
|
|
name = self.get_name()
|
|
super().__init__(name=name, release_on_transaction_commit=True, reentrant=True)
|
|
|
|
|
|
class NodeAddChildrenLock(DistributedLock):
|
|
name_template = 'assets.node.add_children.<org_id:{org_id}>'
|
|
|
|
def __init__(self, node: Node):
|
|
name = self.name_template.format(org_id=node.org_id)
|
|
super().__init__(name=name, release_on_transaction_commit=True)
|