From 7486ade53830d8f6903b90d6cb83137fc219fea1 Mon Sep 17 00:00:00 2001 From: Mojtaba-z Date: Sat, 6 Dec 2025 17:16:30 +0330 Subject: [PATCH] fix - cereat org qouta stat on distribution --- .env.local | 2 +- apps/product/models.py | 14 +++++++++++--- .../serializers/quota_distribution_serializers.py | 6 ++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/.env.local b/.env.local index 13815d0..3402c15 100644 --- a/.env.local +++ b/.env.local @@ -7,7 +7,7 @@ ENV_NAME=DEV # Database secrets DB_HOST=31.7.78.133 DB_PORT=14352 -DB_NAME=Development +DB_NAME=Production DB_USERNAME=postgres DB_PASSWORD=pfLIVXupbDetvFMt2gUvxLXUL9b4HIOHaPcKXsBEZ1i8zl0iLUjmhUfXlGfJKcTV diff --git a/apps/product/models.py b/apps/product/models.py index 1e425d3..af1c6cb 100644 --- a/apps/product/models.py +++ b/apps/product/models.py @@ -4,7 +4,7 @@ import jdatetime from django.contrib.postgres.fields import ArrayField from django.db import models from django.db import transaction -from django.db.models import Sum +from django.db.models import Sum, QuerySet from simple_history.models import HistoricalRecords from apps.authentication.models import OrganizationType, Organization @@ -546,11 +546,19 @@ class Quota(BaseModel): quota=self, organization=org ) + elif not stat.exists() and org.type.key != 'ADM': + stat, created = OrganizationQuotaStats.objects.get_or_create( + quota=self, + organization=org, + stat_type='distribution' + ) + + stat = stat.first() if isinstance(stat, QuerySet) else stat # first quota created is none stat on attribute & broker value table - if stat.first().stat_type == 'quota': + if stat and stat.stat_type == 'quota': return None - return stat.first() if stat.exists() else None + return stat if stat else None def soft_delete(self): self.trash = True diff --git a/apps/product/web/api/v1/serializers/quota_distribution_serializers.py b/apps/product/web/api/v1/serializers/quota_distribution_serializers.py index c185fe1..7951226 100644 --- a/apps/product/web/api/v1/serializers/quota_distribution_serializers.py +++ b/apps/product/web/api/v1/serializers/quota_distribution_serializers.py @@ -9,8 +9,8 @@ from apps.product.exceptions import ( QuotaExpiredTimeException, QuotaLimitByOrganizationException ) -from apps.product.pos.api.v1.serializers import product_serializers -from apps.product.pos.api.v1.serializers.quota_serializers import QuotaBrokerValueSerializer, QuotaSerializer +from apps.product.web.api.v1.serializers import product_serializers +from apps.product.web.api.v1.serializers.quota_serializers import QuotaBrokerValueSerializer, QuotaSerializer class QuotaDistributionSerializer(serializers.ModelSerializer): @@ -95,11 +95,9 @@ class QuotaDistributionSerializer(serializers.ModelSerializer): """ Custom output of serializer """ representation = super().to_representation(instance) - quota = instance.quota assigned_org = instance.assigned_organization assigner_org = instance.assigner_organization - # get org quota stat detail quotas_stat_amount = instance.quota.quota_amount_by_org(assigned_org)