Skip to content

Commit a26c432

Browse files
committed
refactor: user filter
1 parent 6cdd8ff commit a26c432

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

apps/users/serializers/user.py

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -177,16 +177,35 @@ def _check_unique_username_and_email(self):
177177
raise ExceptionCodeConstants.NICKNAME_IS_EXIST.value.to_app_api_exception()
178178

179179
class Query(serializers.Serializer):
180-
email_or_username = serializers.CharField(required=False, allow_null=True,
181-
label=_('Email or username'))
180+
username = serializers.CharField(
181+
required=False,
182+
label=_("Username"),
183+
max_length=20,
184+
allow_blank=True
185+
)
186+
nick_name = serializers.CharField(
187+
required=False,
188+
label=_("Nick Name"),
189+
max_length=20,
190+
allow_blank=True
191+
)
192+
email = serializers.CharField(
193+
required=False,
194+
label=_("Email"),
195+
allow_blank=True,
196+
)
182197

183198
def get_query_set(self):
184-
email_or_username = self.data.get('email_or_username')
199+
username = self.data.get('username')
200+
nick_name = self.data.get('nick_name')
201+
email = self.data.get('email')
185202
query_set = QuerySet(User)
186-
if email_or_username is not None:
187-
query_set = query_set.filter(
188-
Q(username__contains=email_or_username) | Q(email__contains=email_or_username) | Q(
189-
nick_name__contains=email_or_username))
203+
if username is not None:
204+
query_set = query_set.filter(username__contains=username)
205+
if nick_name is not None:
206+
query_set = query_set.filter(nick_name__contains=nick_name)
207+
if email is not None:
208+
query_set = query_set.filter(email__contains=email)
190209
query_set = query_set.order_by("-create_time")
191210
return query_set
192211

apps/users/views/user.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from common.constants.permission_constants import PermissionConstants, Permission, Group, Operate, RoleConstants
2020
from common.log.log import log
2121
from common.result import result
22+
from common.utils.common import query_params_to_single_dict
2223
from maxkb.const import CONFIG
2324
from models_provider.api.model import DefaultModelResponse
2425
from tools.serializers.tool import encryption
@@ -274,8 +275,7 @@ class Page(APIView):
274275
@has_permissions(PermissionConstants.USER_READ, RoleConstants.ADMIN)
275276
def get(self, request: Request, current_page, page_size):
276277
d = UserManageSerializer.Query(
277-
data={'email_or_username': request.query_params.get('email_or_username', None),
278-
'user_id': str(request.user.id)})
278+
data={**query_params_to_single_dict(request.query_params)})
279279
return result.success(d.page(current_page, page_size))
280280

281281

0 commit comments

Comments
 (0)