From 4d1da5687256cb07b6d6cfe205fac72b8e33d955 Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 16 Jul 2018 14:47:06 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9asset=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/api/node.py | 6 ++---- apps/assets/models/node.py | 12 ++++++++---- apps/assets/templates/assets/asset_list.html | 2 ++ apps/assets/views/asset.py | 2 +- apps/orgs/mixins.py | 12 ++++++++---- apps/orgs/utils.py | 13 ++++++------- apps/users/models/group.py | 3 ++- 7 files changed, 29 insertions(+), 21 deletions(-) diff --git a/apps/assets/api/node.py b/apps/assets/api/node.py index e5ace021e..c159798f3 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 7b5b9dd48..b75bea863 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 b5e53aaba..01c325946 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 273323193..e6d19b75f 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 d7d4b0d23..bd5f7f461 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 ee82fc01e..9f6098c77 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 7730c12d0..77106e80e 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 -- GitLab