diff --git a/apps/assets/serializers/node.py b/apps/assets/serializers/node.py index 65eb16dda..0352dfecc 100644 --- a/apps/assets/serializers/node.py +++ b/apps/assets/serializers/node.py @@ -31,7 +31,6 @@ class NodeGrantedSerializer(BulkSerializerMixin, serializers.ModelSerializer): @staticmethod def get_assets_amount(obj): - return 1 return len(obj.assets_granted) @staticmethod @@ -40,7 +39,6 @@ class NodeGrantedSerializer(BulkSerializerMixin, serializers.ModelSerializer): @staticmethod def get_parent(obj): - return '0' return obj.parent.id diff --git a/apps/orgs/mixins.py b/apps/orgs/mixins.py index a458d54c3..ec77c4cfd 100644 --- a/apps/orgs/mixins.py +++ b/apps/orgs/mixins.py @@ -3,7 +3,6 @@ from django.db import models from django.shortcuts import redirect import warnings -from django.contrib.auth import get_user_model from django.forms import ModelForm from common.utils import get_logger @@ -12,6 +11,9 @@ from .models import Organization logger = get_logger(__file__) +from threading import local + +tl = local() __all__ = [ 'OrgManager', 'OrgViewGenericMixin', 'OrgModelMixin', 'OrgModelForm' @@ -19,12 +21,15 @@ __all__ = [ class OrgManager(models.Manager): + def get_queryset(self): current_org = get_current_org() kwargs = {} + if not hasattr(tl, 'times'): + tl.times = 0 - # print(">>>>>>>>>> Get query set") - # print(current_org) + print("[{}]>>>>>>>>>> Get query set".format(tl.times)) + print(current_org) if not current_org: kwargs['id'] = None elif current_org.is_real(): @@ -35,6 +40,7 @@ class OrgManager(models.Manager): queryset = queryset.filter(**kwargs) # print(kwargs) # print(queryset.query) + tl.times += 1 return queryset def all(self): diff --git a/apps/orgs/models.py b/apps/orgs/models.py index a71f3a897..80cb56e5b 100644 --- a/apps/orgs/models.py +++ b/apps/orgs/models.py @@ -55,7 +55,7 @@ class Organization(models.Model): def get_org_users(self): from users.models import User if self.is_default(): - return User.objects.all() + return User.objects.filter(orgs__isnull=True) else: return self.users.all() diff --git a/apps/users/api.py b/apps/users/api.py index 67d7627f3..12f45dff0 100644 --- a/apps/users/api.py +++ b/apps/users/api.py @@ -38,10 +38,8 @@ class UserViewSet(IDInFilterMixin, BulkModelViewSet): def get_queryset(self): queryset = super().get_queryset() current_org = get_current_org() - if current_org.is_real(): - queryset = queryset.filter(orgs=current_org) - elif current_org.is_default(): - queryset = queryset.filter(orgs=None) + org_users = current_org.get_org_users().values_list('id', flat=True) + queryset = queryset.filter(id__in=org_users) return queryset def get_permissions(self): @@ -112,7 +110,6 @@ class UserGroupViewSet(BulkModelViewSet): permission_classes = (IsSuperUser,) - class UserGroupUpdateUserApi(generics.RetrieveUpdateAPIView): queryset = UserGroup.objects.all() serializer_class = UserGroupUpdateMemeberSerializer diff --git a/apps/users/forms.py b/apps/users/forms.py index 220509dd7..82d5ba446 100644 --- a/apps/users/forms.py +++ b/apps/users/forms.py @@ -301,9 +301,7 @@ class UserGroupForm(forms.ModelForm): instance = kwargs.get('instance') if instance: initial = kwargs.get('initial', {}) - initial.update({ - 'users': instance.users.all(), - }) + initial.update({'users': instance.users.all()}) kwargs['initial'] = initial super().__init__(**kwargs) if 'initial' not in kwargs: @@ -311,7 +309,7 @@ class UserGroupForm(forms.ModelForm): users_field = self.fields.get('users') if hasattr(users_field, 'queryset'): current_org = get_current_org() - users_field.queryset = User.objects.filter(orgs=current_org) + users_field.queryset = current_org.get_org_users() def save(self, commit=True): group = super().save(commit=commit) diff --git a/apps/users/views/login.py b/apps/users/views/login.py index 7cbf4dfed..569314c99 100644 --- a/apps/users/views/login.py +++ b/apps/users/views/login.py @@ -365,13 +365,14 @@ class LoginLogListView(AdminUserRequiredMixin, DatetimeSearchMixin, ListView): user = keyword = "" date_to = date_from = None - def get_allow_users(self): + @staticmethod + def get_org_users(): current_org = get_current_org() users = current_org.get_org_users().values_list('username', flat=True) return users def get_queryset(self): - users = self.get_allow_users() + users = self.get_org_users() queryset = super().get_queryset().filter(username__in=users) self.user = self.request.GET.get('user', '') self.keyword = self.request.GET.get("keyword", '') @@ -397,7 +398,7 @@ class LoginLogListView(AdminUserRequiredMixin, DatetimeSearchMixin, ListView): 'date_to': self.date_to, 'user': self.user, 'keyword': self.keyword, - 'user_list': self.get_allow_users(), + 'user_list': self.get_org_users(), } kwargs.update(context) return super().get_context_data(**kwargs) \ No newline at end of file