some changes in stat / permissions add modify state

This commit is contained in:
2025-11-16 13:45:11 +03:30
parent 296f8a3c0e
commit 13f3c90f50
3 changed files with 21 additions and 8 deletions

View File

@@ -98,7 +98,18 @@ class PermissionViewSet(SoftDeleteMixin, viewsets.ModelViewSet):
search_fields = ['page__name', 'name']
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset().order_by('-modify_date')) # noqa
""" all permissions """
if 'modify_state' in request.GET.keys():
param = self.request.query_params.get('modify_state') # noqa
if param == 'true':
self.queryset = self.get_queryset().filter(modify_state=True).order_by('-modify_date')
elif param == 'false':
self.queryset = self.get_queryset().filter(modify_state=False).order_by('-modify_date')
else:
self.queryset = self.get_queryset().filter().order_by('-modify_date')
else:
self.queryset = self.queryset.order_by('-modify_date')
queryset = self.filter_queryset(self.queryset) # noqa
page = self.paginate_queryset(queryset)
if page is not None:

View File

@@ -818,14 +818,15 @@ class OrganizationQuotaStats(BaseModel):
sold_amount = models.PositiveBigIntegerField(default=0)
remaining_amount = models.PositiveBigIntegerField(default=0) # total - sold
def update_amount(self):
def update_amount(self, main_quota=None):
""" calculate total/sold/remaining """
from apps.warehouse.models import InventoryQuotaSaleItem
# calculate total amount of distribution
# self.total_amount = self.distributions.filter().aggregate(
# total=Sum('weight')
# )['total'] or 0
if not main_quota:
# calculate total amount of distribution
self.total_amount = self.distributions.filter().aggregate(
total=Sum('weight')
)['total'] or 0
self.total_distributed = self.distributions.filter().exclude(
assigned_organization=self.organization

View File

@@ -268,6 +268,7 @@ def organization_quota_stats(sender, instance: Quota, created: bool, **kwargs):
)
org_quota_stat.total_amount = instance.quota_weight
org_quota_stat.save(update_fields=['total_amount'])
org_quota_stat.update_amount()
# delete quota
if instance.trash:
@@ -293,7 +294,7 @@ def update_quota_stats_on_distribution(sender, instance: QuotaDistribution, crea
organization=org,
)
stats.distributions.add(instance)
stats.update_amount()
stats.update_amount(main_quota=True)
instance.one_time_loop_flag = True
@@ -314,6 +315,6 @@ def handle_quota_stats_soft_delete_on_distribution(sender, instance: QuotaDistri
if stats_qs:
for stats in stats_qs:
stats.distributions.remove(instance)
stats.update_amount()
stats.update_amount(main_quota=True)
instance.one_time_loop_flag = True