Features:

Fixes: 1) Replace `Count("id")` with `Count("pk")` in commerce queries; 2) Fix `User.objects.get(...)` call by using `uuid` directly instead of accessing nested `serializer.validated_data["user"]["uuid"]`; 3) Add missing closing parenthesis in `VerifyJSONWebToken` call.

Extra: Minor code cleanup and consistency in UUID access pattern across mutations.
This commit is contained in:
Egor Pavlovich Gorbunov 2025-11-18 12:34:55 +03:00
parent 435b7305d7
commit b8b7dcc1d1
2 changed files with 5 additions and 5 deletions

View file

@ -81,7 +81,7 @@ def get_daily_finished_orders_count(period: timedelta = timedelta(days=30)) -> d
Order.objects.filter(status="FINISHED", buy_time__lte=current, buy_time__gte=period_start) Order.objects.filter(status="FINISHED", buy_time__lte=current, buy_time__gte=period_start)
.annotate(day=TruncDate("buy_time")) .annotate(day=TruncDate("buy_time"))
.values("day") .values("day")
.annotate(cnt=Count("id")) .annotate(cnt=Count("pk"))
.order_by("day") .order_by("day")
) )
result: dict[date, int] = {} result: dict[date, int] = {}
@ -169,7 +169,7 @@ def get_customer_mix(period: timedelta = timedelta(days=30)) -> dict[str, int]:
return {"new": 0, "returning": 0} return {"new": 0, "returning": 0}
lifetime_counts = ( lifetime_counts = (
Order.objects.filter(status="FINISHED", user_id__in=period_users).values("user_id").annotate(c=Count("id")) Order.objects.filter(status="FINISHED", user_id__in=period_users).values("user_id").annotate(c=Count("pk"))
) )
new_cnt = 0 new_cnt = 0
ret_cnt = 0 ret_cnt = 0

View file

@ -205,7 +205,7 @@ class ObtainJSONWebToken(BaseMutation):
try: try:
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
return ObtainJSONWebToken( return ObtainJSONWebToken(
user=User.objects.get(serializer.validated_data["user"]["uuid"]), user=User.objects.get(uuid=serializer.validated_data["user"]["uuid"]),
refresh_token=serializer.validated_data["refresh"], refresh_token=serializer.validated_data["refresh"],
access_token=serializer.validated_data["access"], access_token=serializer.validated_data["access"],
) )
@ -226,7 +226,7 @@ class RefreshJSONWebToken(BaseMutation):
try: try:
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
return RefreshJSONWebToken( return RefreshJSONWebToken(
user=User.objects.get(serializer.validated_data["user"]["uuid"]), user=User.objects.get(uuid=serializer.validated_data["user"]["uuid"]),
access_token=serializer.validated_data["access"], access_token=serializer.validated_data["access"],
refresh_token=serializer.validated_data["refresh"], refresh_token=serializer.validated_data["refresh"],
) )
@ -248,7 +248,7 @@ class VerifyJSONWebToken(BaseMutation):
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
# noinspection PyTypeChecker # noinspection PyTypeChecker
return VerifyJSONWebToken( return VerifyJSONWebToken(
token_is_valid=True, user=User.objects.get(serializer.validated_data["user"]["uuid"]) token_is_valid=True, user=User.objects.get(uuid=serializer.validated_data["user"]["uuid"])
) )
detail = traceback.format_exc() if settings.DEBUG else "" detail = traceback.format_exc() if settings.DEBUG else ""
# noinspection PyTypeChecker # noinspection PyTypeChecker