From 1ec4cbdf38c7c3283c102b8d66cef1dae1b3f6b9 Mon Sep 17 00:00:00 2001
From: ibuler <ibuler@qq.com>
Date: Mon, 8 May 2023 14:09:44 +0800
Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=20m2m=20json=20field?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 apps/acls/api/login_asset_check.py  |  3 +-
 apps/acls/models/base.py            | 49 ++---------------------------
 apps/acls/models/login_asset_acl.py |  2 --
 apps/common/db/models.py            |  2 --
 4 files changed, 5 insertions(+), 51 deletions(-)

diff --git a/apps/acls/api/login_asset_check.py b/apps/acls/api/login_asset_check.py
index a593f0c27..f272dd1d4 100644
--- a/apps/acls/api/login_asset_check.py
+++ b/apps/acls/api/login_asset_check.py
@@ -37,7 +37,8 @@ class LoginAssetCheckAPI(CreateAPIView):
                 'account_username': self.serializer.validated_data.get('account_username'),
                 'action': LoginAssetACL.ActionChoices.review
             }
-            acl = LoginAssetACL.filter_queryset(**kwargs).valid().first()
+            acl = LoginAssetACL.objects.filter(**kwargs).valid().first()
+
         if acl:
             need_review = True
             response_data = self._get_response_data_of_need_review(acl)
diff --git a/apps/acls/models/base.py b/apps/acls/models/base.py
index c85af7c0b..80f0affe6 100644
--- a/apps/acls/models/base.py
+++ b/apps/acls/models/base.py
@@ -1,19 +1,13 @@
 from django.core.validators import MinValueValidator, MaxValueValidator
 from django.db import models
-from django.db.models import Q
 from django.utils.translation import gettext_lazy as _
 
 from common.db.fields import JSONManyToManyField
 from common.db.models import JMSBaseModel
-from common.utils import contains_ip
-from orgs.mixins.models import OrgModelMixin, OrgManager
+from orgs.mixins.models import OrgModelMixin
 
 __all__ = [
-    'ACLManager',
-    'BaseACL',
-    'BaseACLQuerySet',
-    'UserAssetAccountBaseACL',
-    'UserAssetAccountACLQuerySet'
+    'BaseACL', 'UserAssetAccountBaseACL',
 ]
 
 
@@ -37,41 +31,6 @@ class BaseACLQuerySet(models.QuerySet):
         return self.inactive()
 
 
-class UserAssetAccountACLQuerySet(BaseACLQuerySet):
-    def filter_user(self, username):
-        q = Q(users__username_group__contains=username) | \
-            Q(users__username_group__contains='*')
-        return self.filter(q)
-
-    def filter_asset(self, name=None, address=None):
-        queryset = self.filter()
-        if name:
-            q = Q(assets__name_group__contains=name) | \
-                Q(assets__name_group__contains='*')
-            queryset = queryset.filter(q)
-        if address:
-            ids = [
-                q.id for q in queryset
-                if contains_ip(address, q.assets.get('address_group', []))
-            ]
-            queryset = queryset.filter(id__in=ids)
-        return queryset
-
-    def filter_account(self, username):
-        q = Q(accounts__username_group__contains=username) | \
-            Q(accounts__username_group__contains='*')
-        return self.filter(q)
-
-
-class ACLManager(models.Manager):
-    def valid(self):
-        return self.get_queryset().valid()
-
-
-class OrgACLManager(OrgManager, ACLManager):
-    pass
-
-
 class BaseACL(JMSBaseModel):
     name = models.CharField(max_length=128, verbose_name=_('Name'))
     priority = models.IntegerField(
@@ -84,7 +43,7 @@ class BaseACL(JMSBaseModel):
     is_active = models.BooleanField(default=True, verbose_name=_("Active"))
 
     ActionChoices = ActionChoices
-    objects = ACLManager.from_queryset(BaseACLQuerySet)()
+    objects = BaseACLQuerySet.as_manager()
 
     class Meta:
         ordering = ('priority', 'date_updated', 'name')
@@ -99,8 +58,6 @@ class UserAssetAccountBaseACL(BaseACL, OrgModelMixin):
     assets = JSONManyToManyField('assets.Asset', default=dict, verbose_name=_('Assets'))
     accounts = models.JSONField(default=list, verbose_name=_("Account"))
 
-    objects = OrgACLManager.from_queryset(UserAssetAccountACLQuerySet)()
-
     class Meta(BaseACL.Meta):
         unique_together = ('name', 'org_id')
         abstract = True
diff --git a/apps/acls/models/login_asset_acl.py b/apps/acls/models/login_asset_acl.py
index 609491e8d..fc5da088b 100644
--- a/apps/acls/models/login_asset_acl.py
+++ b/apps/acls/models/login_asset_acl.py
@@ -1,11 +1,9 @@
 from django.utils.translation import ugettext_lazy as _
 
-
 from .base import UserAssetAccountBaseACL
 
 
 class LoginAssetACL(UserAssetAccountBaseACL):
-
     class Meta(UserAssetAccountBaseACL.Meta):
         verbose_name = _('Login asset acl')
         abstract = False
diff --git a/apps/common/db/models.py b/apps/common/db/models.py
index 4d292827a..d01a37266 100644
--- a/apps/common/db/models.py
+++ b/apps/common/db/models.py
@@ -10,7 +10,6 @@
 """
 
 import uuid
-from functools import reduce
 
 from django.db import models
 from django.db import transaction
@@ -55,7 +54,6 @@ def output_as_string(field_name):
 
 
 class MultiTableChildQueryset(QuerySet):
-
     def bulk_create(self, objs, batch_size=None):
         assert batch_size is None or batch_size > 0
         if not objs: