diff --git a/apps/authorization/api/v1/api.py b/apps/authorization/api/v1/api.py index 58e6145..f36a689 100644 --- a/apps/authorization/api/v1/api.py +++ b/apps/authorization/api/v1/api.py @@ -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: diff --git a/apps/product/models.py b/apps/product/models.py index aba7434..84ec11a 100644 --- a/apps/product/models.py +++ b/apps/product/models.py @@ -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 diff --git a/apps/product/signals.py b/apps/product/signals.py index 702ce3a..4b32734 100644 --- a/apps/product/signals.py +++ b/apps/product/signals.py @@ -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