diff --git a/apps/product/models.py b/apps/product/models.py index 8d7f8cc..72c8f93 100644 --- a/apps/product/models.py +++ b/apps/product/models.py @@ -386,7 +386,7 @@ class Quota(BaseModel): return self.quota_weight - distributed_weight def is_in_valid_time(self): - """ check if quota allowed time for distribute, sale, etc is expired""" + """ check if quota allowed time for distribute, sale, etc is expired """ now = datetime.now() persian_date = jdatetime.datetime.fromgregorian(datetime=now) diff --git a/apps/product/web/api/v1/viewsets/quota_api.py b/apps/product/web/api/v1/viewsets/quota_api.py index 8905142..c35b52f 100644 --- a/apps/product/web/api/v1/viewsets/quota_api.py +++ b/apps/product/web/api/v1/viewsets/quota_api.py @@ -270,9 +270,26 @@ class QuotaViewSet(viewsets.ModelViewSet): # noqa @action( methods=['patch'], + detail=True, + url_path='activate', + url_name='activate', + name='activate' ) def activate(self, request): - pass + """ to activate quota """ + + quota = self.get_object() + + # check quota expired time + if not quota.is_in_valid_time(): + raise QuotaExpiredTimeException() + + if not quota.is_closed: + raise APIException("این سهمیه از قبل فعال است", status.HTTP_400_BAD_REQUEST) + + quota.is_closed = False + quota.save() + return Response(status=status.HTTP_200_OK) @action( methods=['get'], diff --git a/apps/product/web/api/v1/viewsets/quota_distribution_api.py b/apps/product/web/api/v1/viewsets/quota_distribution_api.py index 35a495b..575be3b 100644 --- a/apps/product/web/api/v1/viewsets/quota_distribution_api.py +++ b/apps/product/web/api/v1/viewsets/quota_distribution_api.py @@ -1,3 +1,5 @@ +from django.db.models import Q + from apps.product.web.api.v1.serializers import quota_distribution_serializers as distribution_serializers from rest_framework.exceptions import APIException from apps.product import models as product_models @@ -66,6 +68,18 @@ class QuotaDistributionViewSet(viewsets.ModelViewSet): return Response(serializer.data) + # @action( + # methods=['get'], + # url_name='my_distributions', + # url_path='my_distributions', + # name='my_distributions' + # ) + # def my_distributions(self, request): + # + # distributions = self.queryset.filter( + # Q(assigned_organization='') + # ) + @action( methods=['put'], detail=True,