diff --git a/apps/assets/api/node.py b/apps/assets/api/node.py index e5ace021e201128286f833b9b18cc1f4ebaff98b..c159798f3d6a7ae65b195037742bbae3cd416589 100644 --- a/apps/assets/api/node.py +++ b/apps/assets/api/node.py @@ -30,10 +30,8 @@ from .. import serializers logger = get_logger(__file__) __all__ = [ - 'NodeViewSet', 'NodeChildrenApi', - 'NodeAssetsApi', - 'NodeAddAssetsApi', 'NodeRemoveAssetsApi', - 'NodeReplaceAssetsApi', + 'NodeViewSet', 'NodeChildrenApi', 'NodeAssetsApi', + 'NodeAddAssetsApi', 'NodeRemoveAssetsApi', 'NodeReplaceAssetsApi', 'NodeAddChildrenApi', 'RefreshNodeHardwareInfoApi', 'TestNodeConnectiveApi' ] diff --git a/apps/assets/models/node.py b/apps/assets/models/node.py index 7b5b9dd48979f05ee899dae049c23245e6c0ab88..b75bea86353acb6487a03e367e112d688ec1500d 100644 --- a/apps/assets/models/node.py +++ b/apps/assets/models/node.py @@ -64,6 +64,9 @@ class Node(OrgModelMixin): def create_child(self, value): with transaction.atomic(): child_key = self.get_next_child_key() + print("Create child") + print(self.key) + print(child_key) child = self.__class__.objects.create(key=child_key, value=value) return child @@ -120,15 +123,16 @@ class Node(OrgModelMixin): return self.get_all_assets().valid() def is_root(self): - root = self.__class__.root() - if self == root: + print(type(self.key)) + print(self.key) + if self.key.isdigit(): return True else: return False @property def parent(self): - if self.key == "0" or not self.key.startswith("0"): + if self.is_root(): return self.__class__.root() parent_key = ":".join(self.key.split(":")[:-1]) try: @@ -155,7 +159,7 @@ class Node(OrgModelMixin): if self.is_root(): root = self.__class__.root() return [root] - + print(self.key) _key = self.key.split(':') if not with_self: _key.pop() diff --git a/apps/assets/templates/assets/asset_list.html b/apps/assets/templates/assets/asset_list.html index b5e53aaba8c8bf2104ace14dbbdb3b353d292032..01c3259465e59922aff3dbada939ea43acc40847 100644 --- a/apps/assets/templates/assets/asset_list.html +++ b/apps/assets/templates/assets/asset_list.html @@ -411,6 +411,8 @@ function initTree() { zNodes = data; $.fn.zTree.init($("#assetTree"), setting, zNodes); zTree = $.fn.zTree.getZTreeObj("assetTree"); + var root = zTree.getNodes()[0]; + zTree.expandNode(root); rMenu = $("#rMenu"); selectQueryNode(); }); diff --git a/apps/assets/views/asset.py b/apps/assets/views/asset.py index 27332319392087fe52f9dce54120ab95e5983139..e6d19b75fa0161159da79931bcd2018e26d2f067 100644 --- a/apps/assets/views/asset.py +++ b/apps/assets/views/asset.py @@ -44,7 +44,7 @@ class AssetListView(AdminUserRequiredMixin, TemplateView): template_name = 'assets/asset_list.html' def get_context_data(self, **kwargs): - Node.root() + print(Node.root().name) context = { 'app': _('Assets'), 'action': _('Asset list'), diff --git a/apps/orgs/mixins.py b/apps/orgs/mixins.py index d7d4b0d230014404ef031def7de879a2d0b512f0..bd5f7f46103408292059d48d72127d58870dc59c 100644 --- a/apps/orgs/mixins.py +++ b/apps/orgs/mixins.py @@ -7,7 +7,7 @@ from django.contrib.auth import get_user_model from django.forms import ModelForm from common.utils import get_logger -from .utils import get_current_org, get_model_by_db_table, set_current_org +from .utils import get_current_org, set_current_org logger = get_logger(__file__) @@ -22,23 +22,27 @@ class OrgManager(models.Manager): current_org = get_current_org() kwargs = {} + print(">>>>>>>>>> Get query set") if not current_org: kwargs['id'] = None elif current_org.is_real(): kwargs['org'] = current_org elif current_org.is_default(): kwargs['org'] = None - queryset = super().get_queryset().filter(**kwargs) + queryset = super(OrgManager, self).get_queryset() + queryset = queryset.filter(**kwargs) + # print(kwargs) + print(queryset.query) return queryset def all(self): current_org = get_current_org() if not current_org: - msg = 'You should `objects.set_current_org(org).all()` then run it' + msg = 'You can `objects.set_current_org(org).all()` then run it' warnings.warn(msg) return self else: - return super().all() + return super(OrgManager, self).all() def set_current_org(self, org): set_current_org(org) diff --git a/apps/orgs/utils.py b/apps/orgs/utils.py index ee82fc01e529c97440b6f41c71dbc789bcfa3c9c..9f6098c7780dcbf3d1cca51b0fcbd614ea659b22 100644 --- a/apps/orgs/utils.py +++ b/apps/orgs/utils.py @@ -35,10 +35,9 @@ def set_current_org(org): setattr(_thread_locals, 'current_org', org) -def get_model_by_db_table(db_table): - for model in apps.get_models(): - if model._meta.db_table == db_table: - return model - else: - # here you can do fallback logic if no model with db_table found - raise ValueError('No model found with db_table {}!'.format(db_table)) +def set_to_default_org(): + set_current_org(Organization.default()) + + +def set_to_root_org(): + set_current_org(Organization.root()) diff --git a/apps/users/models/group.py b/apps/users/models/group.py index 7730c12d025310ab2bd6ccb55d071d7c439f8851..77106e80e29fba1ec4392771b94bbf3197d18857 100644 --- a/apps/users/models/group.py +++ b/apps/users/models/group.py @@ -11,7 +11,7 @@ __all__ = ['UserGroup'] class UserGroup(OrgModelMixin): id = models.UUIDField(default=uuid.uuid4, primary_key=True) - name = models.CharField(max_length=128, unique=True, verbose_name=_('Name')) + name = models.CharField(max_length=128, verbose_name=_('Name')) comment = models.TextField(blank=True, verbose_name=_('Comment')) date_created = models.DateTimeField(auto_now_add=True, null=True, verbose_name=_('Date created')) @@ -22,6 +22,7 @@ class UserGroup(OrgModelMixin): class Meta: ordering = ['name'] + unique_together = ['org', 'name'] verbose_name = _("User group") @classmethod