From bf40aa8df0fcfc3d27cbae45e98ff89a1de08c06 Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 19 Nov 2019 11:20:26 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9user=20list=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/common/mixins/models.py | 12 ++++++++++++ apps/orgs/models.py | 20 ++++++++++++++++---- apps/static/js/jumpserver.js | 2 ++ apps/users/models/user.py | 3 ++- apps/users/serializers/user.py | 14 -------------- 5 files changed, 32 insertions(+), 19 deletions(-) diff --git a/apps/common/mixins/models.py b/apps/common/mixins/models.py index df3d899e0..e373a6b08 100644 --- a/apps/common/mixins/models.py +++ b/apps/common/mixins/models.py @@ -53,3 +53,15 @@ class CommonModelMixin(models.Model): class Meta: abstract = True + + +class DebugQueryManager(models.Manager): + def get_queryset(self): + import traceback + lines = traceback.format_stack() + print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>") + for line in lines[-10:-1]: + print(line) + print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<") + queryset = super().get_queryset() + return queryset diff --git a/apps/orgs/models.py b/apps/orgs/models.py index c9bdc1f53..9f9e262cf 100644 --- a/apps/orgs/models.py +++ b/apps/orgs/models.py @@ -4,7 +4,7 @@ from django.conf import settings from django.db import models from django.utils.translation import ugettext_lazy as _ -from common.utils import is_uuid +from common.utils import is_uuid, lazyproperty class Organization(models.Model): @@ -72,7 +72,8 @@ class Organization(models.Model): org = cls.default() if default else None return org - def get_org_users(self): + @lazyproperty + def org_users(self): from users.models import User if self.is_real(): return self.users.all() @@ -81,18 +82,29 @@ class Organization(models.Model): users = users.filter(related_user_orgs__isnull=True) return users - def get_org_admins(self): + def get_org_users(self): + return self.org_users + + @lazyproperty + def org_admins(self): from users.models import User if self.is_real(): return self.admins.all() return User.objects.filter(role=User.ROLE_ADMIN) - def get_org_auditors(self): + def get_org_admins(self): + return self.org_admins + + @lazyproperty + def org_auditors(self): from users.models import User if self.is_real(): return self.auditors.all() return User.objects.filter(role=User.ROLE_AUDITOR) + def get_org_auditors(self): + return self.org_auditors + def get_org_members(self, exclude=()): from users.models import User members = User.objects.none() diff --git a/apps/static/js/jumpserver.js b/apps/static/js/jumpserver.js index fb12b73b7..773023f16 100644 --- a/apps/static/js/jumpserver.js +++ b/apps/static/js/jumpserver.js @@ -299,6 +299,8 @@ function requestApi(props) { msg = jqXHR.responseJSON.error } else if (jqXHR.responseJSON.msg) { msg = jqXHR.responseJSON.msg + } else if (jqXHR.responseJSON.detail) { + msg = jqXHR.responseJSON.detail } } if (msg === "") { diff --git a/apps/users/models/user.py b/apps/users/models/user.py index 834247099..d2ccfb6ea 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -404,7 +404,8 @@ class MFAMixin: def mfa_enabled_but_not_set(self): if self.mfa_enabled and \ - self.mfa_is_otp() and not self.otp_secret_key: + self.mfa_is_otp() and \ + not self.otp_secret_key: return True return False diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index 9097b1565..1f025ced3 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -18,9 +18,6 @@ __all__ = [ class UserSerializer(BulkSerializerMixin, serializers.ModelSerializer): - can_update = serializers.SerializerMethodField() - can_delete = serializers.SerializerMethodField() - class Meta: model = User list_serializer_class = AdaptedBulkListSerializer @@ -31,7 +28,6 @@ class UserSerializer(BulkSerializerMixin, serializers.ModelSerializer): 'comment', 'source', 'source_display', 'is_valid', 'is_expired', 'is_active', 'created_by', 'is_first_login', 'date_password_last_updated', 'date_expired', 'avatar_url', - 'can_update', 'can_delete', ] extra_kwargs = { 'password': {'write_only': True, 'required': False, 'allow_null': True, 'allow_blank': True}, @@ -48,16 +44,6 @@ class UserSerializer(BulkSerializerMixin, serializers.ModelSerializer): 'can_delete': {'read_only': True}, } - def get_can_update(self, obj): - return CanUpdateDeleteUser.has_update_object_permission( - self.context['request'], self.context['view'], obj - ) - - def get_can_delete(self, obj): - return CanUpdateDeleteUser.has_delete_object_permission( - self.context['request'], self.context['view'], obj - ) - def validate_role(self, value): request = self.context.get('request') if not request.user.is_superuser and value != User.ROLE_USER: