From c24f1a05176c5376b1b61f7c9593ddfb59e5bfe8 Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 19 Jul 2018 19:24:29 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E7=BA=A6=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/api/node.py | 12 ++++++++++-- apps/assets/models/asset.py | 2 +- apps/assets/models/domain.py | 2 +- apps/assets/models/label.py | 2 +- apps/assets/models/node.py | 7 ++++--- apps/assets/models/user.py | 4 ++-- apps/assets/serializers/node.py | 2 ++ apps/jumpserver/settings.py | 8 ++++---- apps/orgs/mixins.py | 21 ++++++++++++--------- apps/orgs/models.py | 2 +- apps/users/models/group.py | 2 +- 11 files changed, 39 insertions(+), 25 deletions(-) diff --git a/apps/assets/api/node.py b/apps/assets/api/node.py index c159798f3..178642170 100644 --- a/apps/assets/api/node.py +++ b/apps/assets/api/node.py @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from rest_framework import generics, mixins +from rest_framework import generics, mixins, viewsets from rest_framework.serializers import ValidationError from rest_framework.views import APIView from rest_framework.response import Response @@ -22,6 +22,7 @@ from django.utils.translation import ugettext_lazy as _ from django.shortcuts import get_object_or_404 from common.utils import get_logger, get_object_or_none +from orgs.utils import get_current_org from ..hands import IsSuperUser from ..models import Node from ..tasks import update_assets_hardware_info_util, test_asset_connectability_util @@ -37,11 +38,18 @@ __all__ = [ ] -class NodeViewSet(BulkModelViewSet): +class NodeViewSet(viewsets.ModelViewSet): queryset = Node.objects.all() permission_classes = (IsSuperUser,) serializer_class = serializers.NodeSerializer + def get_queryset(self): + # queryset = super(NodeViewSet, self).get_queryset() + print("API GET QUWRYSET") + # print(get_current_org()) + # print(queryset) + return Node.objects.all() + def perform_create(self, serializer): child_key = Node.root().get_next_child_key() serializer.validated_data["key"] = child_key diff --git a/apps/assets/models/asset.py b/apps/assets/models/asset.py index 073ad3b32..cfe73842f 100644 --- a/apps/assets/models/asset.py +++ b/apps/assets/models/asset.py @@ -225,7 +225,7 @@ class Asset(OrgModelMixin): return data class Meta: - unique_together = ('org', 'hostname') + unique_together = [('org', 'hostname'),] verbose_name = _("Asset") @classmethod diff --git a/apps/assets/models/domain.py b/apps/assets/models/domain.py index 8a25cb69e..376c032d7 100644 --- a/apps/assets/models/domain.py +++ b/apps/assets/models/domain.py @@ -52,4 +52,4 @@ class Gateway(AssetUser, OrgModelMixin): return self.name class Meta: - unique_together = ['name', 'org'] + unique_together = [('name', 'org')] diff --git a/apps/assets/models/label.py b/apps/assets/models/label.py index 990a71ca8..6a2cefde9 100644 --- a/apps/assets/models/label.py +++ b/apps/assets/models/label.py @@ -34,4 +34,4 @@ class Label(models.Model): class Meta: db_table = "assets_label" - unique_together = ('name', 'value') + unique_together = [('name', 'value'),] diff --git a/apps/assets/models/node.py b/apps/assets/models/node.py index 34fc20680..43f8d480c 100644 --- a/apps/assets/models/node.py +++ b/apps/assets/models/node.py @@ -23,7 +23,8 @@ class Node(OrgModelMixin): is_node = True def __str__(self): - return self.full_value + return self.value + # return self.full_value def __eq__(self, other): return self.key == other.key @@ -181,8 +182,8 @@ class Node(OrgModelMixin): @classmethod def root(cls): root = cls.objects.filter(key__regex=r'^[0-9]+$') - if len(root) == 1: - return root.get() + if root: + return root[0] else: return cls.create_root_node() diff --git a/apps/assets/models/user.py b/apps/assets/models/user.py index ffe5cc44d..8fb415a85 100644 --- a/apps/assets/models/user.py +++ b/apps/assets/models/user.py @@ -69,7 +69,7 @@ class AdminUser(AssetUser): class Meta: ordering = ['name'] - unique_together = ['name', 'org'] + unique_together = [('name', 'org'),] verbose_name = _("Admin user") @classmethod @@ -157,7 +157,7 @@ class SystemUser(AssetUser): class Meta: ordering = ['name'] - unique_together = ['name', 'org'] + unique_together = [('name', 'org'),] verbose_name = _("System user") @classmethod diff --git a/apps/assets/serializers/node.py b/apps/assets/serializers/node.py index 0352dfecc..65eb16dda 100644 --- a/apps/assets/serializers/node.py +++ b/apps/assets/serializers/node.py @@ -31,6 +31,7 @@ class NodeGrantedSerializer(BulkSerializerMixin, serializers.ModelSerializer): @staticmethod def get_assets_amount(obj): + return 1 return len(obj.assets_granted) @staticmethod @@ -39,6 +40,7 @@ class NodeGrantedSerializer(BulkSerializerMixin, serializers.ModelSerializer): @staticmethod def get_parent(obj): + return '0' return obj.parent.id diff --git a/apps/jumpserver/settings.py b/apps/jumpserver/settings.py index de79cd97b..7be5b7613 100644 --- a/apps/jumpserver/settings.py +++ b/apps/jumpserver/settings.py @@ -234,10 +234,10 @@ LOGGING = { 'handlers': ['console', 'ansible_logs'], 'level': "INFO", }, - # 'django.db': { - # 'handlers': ['console', 'file'], - # 'level': 'DEBUG' - # } + 'django.db': { + 'handlers': ['console', 'file'], + 'level': 'DEBUG' + } } } diff --git a/apps/orgs/mixins.py b/apps/orgs/mixins.py index 5bc465ff2..4d8097d99 100644 --- a/apps/orgs/mixins.py +++ b/apps/orgs/mixins.py @@ -8,6 +8,7 @@ from django.forms import ModelForm from common.utils import get_logger from .utils import get_current_org, set_current_org +from .models import Organization logger = get_logger(__file__) @@ -32,19 +33,21 @@ class OrgManager(models.Manager): queryset = super(OrgManager, self).get_queryset() queryset = queryset.filter(**kwargs) # print(kwargs) - print(queryset.query) + # print(queryset.query) return queryset - def all(self): - current_org = get_current_org() - if not current_org: - msg = 'You can `objects.set_current_org(org).all()` then run it' - warnings.warn(msg) - return self - else: - return super(OrgManager, self).all() + # def all(self): + # current_org = get_current_org() + # if not current_org: + # msg = 'You can `objects.set_current_org(org).all()` then run it' + # warnings.warn(msg) + # return self + # else: + # return super(OrgManager, self).all() def set_current_org(self, org): + if isinstance(org, str): + org = Organization.objects.get(name=org) set_current_org(org) return self diff --git a/apps/orgs/models.py b/apps/orgs/models.py index afdf2ef10..a71f3a897 100644 --- a/apps/orgs/models.py +++ b/apps/orgs/models.py @@ -7,7 +7,7 @@ from django.utils.translation import ugettext_lazy as _ class Organization(models.Model): id = models.UUIDField(default=uuid.uuid4, primary_key=True) - name = models.CharField(max_length=128, verbose_name=_("Name")) + name = models.CharField(max_length=128, unique=True, verbose_name=_("Name")) users = models.ManyToManyField('users.User', related_name='orgs', blank=True) admins = models.ManyToManyField('users.User', related_name='admin_orgs', blank=True) created_by = models.CharField(max_length=32, null=True, blank=True, verbose_name=_('Created by')) diff --git a/apps/users/models/group.py b/apps/users/models/group.py index 77106e80e..1a8ccac2b 100644 --- a/apps/users/models/group.py +++ b/apps/users/models/group.py @@ -22,7 +22,7 @@ class UserGroup(OrgModelMixin): class Meta: ordering = ['name'] - unique_together = ['org', 'name'] + unique_together = [('org', 'name'),] verbose_name = _("User group") @classmethod