diff --git a/apps/herd/models.py b/apps/herd/models.py index 06e2c0b..174b18d 100644 --- a/apps/herd/models.py +++ b/apps/herd/models.py @@ -129,7 +129,7 @@ class Rancher(BaseModel): ) without_herd = models.BooleanField(default=False) ignore_purchase_limit = models.BooleanField( - default=False, help_text="if its true rancher has not buy limitations" + default=True, help_text="if its true rancher has not buy limitations" ) dhi_state = models.BooleanField(default=False) diff --git a/apps/herd/services/rancher_service.py b/apps/herd/services/rancher_service.py index 7b4c0ba..1f4a57a 100644 --- a/apps/herd/services/rancher_service.py +++ b/apps/herd/services/rancher_service.py @@ -4,10 +4,11 @@ from django.db.models import Sum, functions, Value class RancherService: @staticmethod - def get_total_used_weight(rancher, sale_item): + def get_total_used_weight(rancher, sale_item, distribution): return sale_item.objects.filter( transaction__rancher=rancher, - transaction__transaction_status='success' + transaction__transaction_status='success', + quota_distribution=distribution, ).aggregate( total_weight=functions.Coalesce(Sum('weight'), Value(0)) )['total_weight'] diff --git a/apps/herd/services/services.py b/apps/herd/services/services.py index e6fbe30..8d0cf56 100644 --- a/apps/herd/services/services.py +++ b/apps/herd/services/services.py @@ -152,7 +152,7 @@ def rancher_quota_weight( total_weight += rancher_plan_weight print(total_weight) # get rancher remaining usage of quota for purchase - rancher_remaining_usage = RancherService.get_total_used_weight(rancher, InventoryQuotaSaleItem) + rancher_remaining_usage = RancherService.get_total_used_weight(rancher, InventoryQuotaSaleItem, distribution) if total_weight - rancher_remaining_usage < 0: remaining_weight = 0 diff --git a/apps/warehouse/web/api/v1/api.py b/apps/warehouse/web/api/v1/api.py index 721da69..4d734f7 100644 --- a/apps/warehouse/web/api/v1/api.py +++ b/apps/warehouse/web/api/v1/api.py @@ -145,8 +145,36 @@ class InventoryQuotaSaleTransactionViewSet(BaseViewSet, SoftDeleteMixin, Dynamic """ list of transactions filter by: search, all, my_transactions + filter by: transaction status """ - queryset = self.filter_query(self.get_queryset(visibility_by_org_scope=True).order_by('-create_date')) + if 'status' in request.GET.keys(): + status_param = self.request.query_params.get('status') # noqa + + if status_param == 'waiting': + queryset = self.get_queryset( + visibility_by_org_scope=True + ).filter(transaction_status='waiting').order_by('-create_date') + + elif status_param == 'success': + queryset = self.get_queryset( + visibility_by_org_scope=True + ).filter(transaction_status='success').order_by('-create_date') + + elif status_param == 'failed': + queryset = self.get_queryset( + visibility_by_org_scope=True + ).filter(transaction_status='failed').order_by('-create_date') + + else: + queryset = self.get_queryset( + visibility_by_org_scope=True + ).order_by('-create_date') + else: + queryset = self.get_queryset( + visibility_by_org_scope=True + ).order_by('-create_date') + + queryset = self.filter_query(queryset) # paginate & response page = self.paginate_queryset(queryset)