400 lines
11 KiB
Python
400 lines
11 KiB
Python
from apps.product.web.api.v1 import serializers as product_serializers
|
|
from rest_framework.exceptions import APIException
|
|
from apps.product import models as product_models
|
|
from rest_framework.response import Response
|
|
from rest_framework.decorators import action
|
|
from rest_framework import viewsets
|
|
from rest_framework import status
|
|
from django.db import transaction
|
|
|
|
|
|
def trash(queryset, pk): # noqa
|
|
""" sent object to trash """
|
|
obj = queryset.get(id=pk)
|
|
obj.trash = True
|
|
obj.save()
|
|
|
|
|
|
def delete(queryset, pk):
|
|
""" full delete object """
|
|
obj = queryset.get(id=pk)
|
|
obj.delete()
|
|
|
|
|
|
class ProductViewSet(viewsets.ModelViewSet):
|
|
queryset = product_models.Product.objects.all()
|
|
serializer_class = product_serializers.ProductSerializer
|
|
|
|
@action(
|
|
methods=['put'],
|
|
detail=True,
|
|
url_path='trash',
|
|
url_name='trash',
|
|
name='trash',
|
|
)
|
|
@transaction.atomic
|
|
def trash(self, request, pk=None):
|
|
""" Sent product to trash """
|
|
try:
|
|
trash(self.queryset, pk)
|
|
except APIException as e:
|
|
return Response(e, status.HTTP_204_NO_CONTENT)
|
|
|
|
@action(
|
|
methods=['post'],
|
|
detail=True,
|
|
url_name='delete',
|
|
url_path='delete',
|
|
name='delete'
|
|
)
|
|
@transaction.atomic
|
|
def delete(self, request, pk=None):
|
|
""" Full delete of product object """
|
|
try:
|
|
delete(self.queryset, pk)
|
|
return Response(status=status.HTTP_200_OK)
|
|
except APIException as e:
|
|
return Response(e, status=status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class AttributeViewSet(viewsets.ModelViewSet):
|
|
""" attributes of reference product """
|
|
|
|
queryset = product_models.Attribute.objects.all()
|
|
serializer_class = product_serializers.AttributeSerializer
|
|
|
|
@action(
|
|
methods=['put'],
|
|
detail=True,
|
|
url_path='trash',
|
|
url_name='trash',
|
|
name='trash',
|
|
)
|
|
@transaction.atomic
|
|
def trash(self, request, pk=None):
|
|
""" Sent attribute to trash """
|
|
try:
|
|
trash(self.queryset, pk)
|
|
except APIException as e:
|
|
return Response(e, status.HTTP_204_NO_CONTENT)
|
|
|
|
@action(
|
|
methods=['post'],
|
|
detail=True,
|
|
url_name='delete',
|
|
url_path='delete',
|
|
name='delete'
|
|
)
|
|
@transaction.atomic
|
|
def delete(self, request, pk=None):
|
|
""" Full delete of attribute object """
|
|
try:
|
|
delete(self.queryset, pk)
|
|
return Response(status=status.HTTP_200_OK)
|
|
except APIException as e:
|
|
return Response(e, status=status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class AttributeValueViewSet(viewsets.ModelViewSet):
|
|
""" apis for attribute values of child products """ # noqa
|
|
|
|
queryset = product_models.AttributeValue.objects.all()
|
|
serializer_class = product_serializers.AttributeValueSerializer
|
|
|
|
@action(
|
|
methods=['put'],
|
|
detail=True,
|
|
url_path='trash',
|
|
url_name='trash',
|
|
name='trash',
|
|
)
|
|
@transaction.atomic
|
|
def trash(self, request, pk=None):
|
|
""" Sent attribute value to trash """
|
|
try:
|
|
trash(self.queryset, pk)
|
|
except APIException as e:
|
|
return Response(e, status.HTTP_204_NO_CONTENT)
|
|
|
|
@action(
|
|
methods=['post'],
|
|
detail=True,
|
|
url_name='delete',
|
|
url_path='delete',
|
|
name='delete'
|
|
)
|
|
@transaction.atomic
|
|
def delete(self, request, pk=None):
|
|
""" Full delete of attribute value object """
|
|
try:
|
|
delete(self.queryset, pk)
|
|
return Response(status=status.HTTP_200_OK)
|
|
except APIException as e:
|
|
return Response(e, status=status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class BrokerViewSet(viewsets.ModelViewSet):
|
|
""" apis of product brokers """ # noqa
|
|
|
|
queryset = product_models.Broker.objects.all()
|
|
serializer_class = product_serializers.BrokerSerializer
|
|
|
|
@action(
|
|
methods=['put'],
|
|
detail=True,
|
|
url_path='trash',
|
|
url_name='trash',
|
|
name='trash',
|
|
)
|
|
@transaction.atomic
|
|
def trash(self, request, pk=None):
|
|
""" Sent broker to trash """
|
|
try:
|
|
trash(self.queryset, pk)
|
|
except APIException as e:
|
|
return Response(e, status.HTTP_204_NO_CONTENT)
|
|
|
|
@action(
|
|
methods=['post'],
|
|
detail=True,
|
|
url_name='delete',
|
|
url_path='delete',
|
|
name='delete'
|
|
)
|
|
@transaction.atomic
|
|
def delete(self, request, pk=None):
|
|
""" Full delete of broker object """
|
|
try:
|
|
delete(self.queryset, pk)
|
|
return Response(status=status.HTTP_200_OK)
|
|
except APIException as e:
|
|
return Response(e, status=status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class SaleUnitViewSet(viewsets.ModelViewSet):
|
|
""" apis of unit of sale for products """ # noqa
|
|
|
|
queryset = product_models.SaleUnit.objects.all()
|
|
serializer_class = product_serializers.SaleUnitSerializer
|
|
|
|
@action(
|
|
methods=['put'],
|
|
detail=True,
|
|
url_path='trash',
|
|
url_name='trash',
|
|
name='trash',
|
|
)
|
|
@transaction.atomic
|
|
def trash(self, request, pk=None):
|
|
""" Sent unit sale to trash """
|
|
try:
|
|
trash(self.queryset, pk)
|
|
except APIException as e:
|
|
return Response(e, status.HTTP_204_NO_CONTENT)
|
|
|
|
@action(
|
|
methods=['post'],
|
|
detail=True,
|
|
url_name='delete',
|
|
url_path='delete',
|
|
name='delete'
|
|
)
|
|
@transaction.atomic
|
|
def delete(self, request, pk=None):
|
|
""" Full delete of unit sale object """
|
|
try:
|
|
delete(self.queryset, pk)
|
|
return Response(status=status.HTTP_200_OK)
|
|
except APIException as e:
|
|
return Response(e, status=status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class IncentivePlanViewSet(viewsets.ModelViewSet):
|
|
""" apis for incentive plan """
|
|
|
|
queryset = product_models.IncentivePlan.objects.all()
|
|
serializer_class = product_serializers.IncentivePlanSerializer
|
|
|
|
@action(
|
|
methods=['put'],
|
|
detail=True,
|
|
url_path='trash',
|
|
url_name='trash',
|
|
name='trash',
|
|
)
|
|
@transaction.atomic
|
|
def trash(self, request, pk=None):
|
|
""" Sent incentive plan to trash """
|
|
try:
|
|
trash(self.queryset, pk)
|
|
except APIException as e:
|
|
return Response(e, status.HTTP_204_NO_CONTENT)
|
|
|
|
@action(
|
|
methods=['post'],
|
|
detail=True,
|
|
url_name='delete',
|
|
url_path='delete',
|
|
name='delete'
|
|
)
|
|
@transaction.atomic
|
|
def delete(self, request, pk=None):
|
|
""" Full delete of incentive plan object """
|
|
try:
|
|
delete(self.queryset, pk)
|
|
return Response(status=status.HTTP_200_OK)
|
|
except APIException as e:
|
|
return Response(e, status=status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class QuotaViewSet(viewsets.ModelViewSet):
|
|
""" apis for product quota """
|
|
|
|
queryset = product_models.Quota.objects.all()
|
|
serializer_class = product_serializers.QuotaSerializer
|
|
|
|
@action(
|
|
methods=['put'],
|
|
detail=True,
|
|
url_path='trash',
|
|
url_name='trash',
|
|
name='trash',
|
|
)
|
|
@transaction.atomic
|
|
def trash(self, request, pk=None):
|
|
""" Sent quota to trash """
|
|
try:
|
|
trash(self.queryset, pk)
|
|
except APIException as e:
|
|
return Response(e, status.HTTP_204_NO_CONTENT)
|
|
|
|
@action(
|
|
methods=['post'],
|
|
detail=True,
|
|
url_name='delete',
|
|
url_path='delete',
|
|
name='delete'
|
|
)
|
|
@transaction.atomic
|
|
def delete(self, request, pk=None):
|
|
""" Full delete of quota object """
|
|
try:
|
|
delete(self.queryset, pk)
|
|
return Response(status=status.HTTP_200_OK)
|
|
except APIException as e:
|
|
return Response(e, status=status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class QuotaIncentiveAssignmentViewSet(viewsets.ModelViewSet):
|
|
""" apis for incentive assignment """
|
|
|
|
queryset = product_models.QuotaIncentiveAssignment.objects.all()
|
|
serializer_class = product_serializers.QuotaIncentiveAssignmentSerializer
|
|
|
|
@action(
|
|
methods=['put'],
|
|
detail=True,
|
|
url_path='trash',
|
|
url_name='trash',
|
|
name='trash',
|
|
)
|
|
@transaction.atomic
|
|
def trash(self, request, pk=None):
|
|
""" Sent quota incentive assignment to trash """
|
|
try:
|
|
trash(self.queryset, pk)
|
|
except APIException as e:
|
|
return Response(e, status.HTTP_204_NO_CONTENT)
|
|
|
|
@action(
|
|
methods=['post'],
|
|
detail=True,
|
|
url_name='delete',
|
|
url_path='delete',
|
|
name='delete'
|
|
)
|
|
@transaction.atomic
|
|
def delete(self, request, pk=None):
|
|
""" Full delete of quota incentive assignment object """
|
|
try:
|
|
delete(self.queryset, pk)
|
|
return Response(status=status.HTTP_200_OK)
|
|
except APIException as e:
|
|
return Response(e, status=status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class QuotaBrokerValueViewSet(viewsets.ModelViewSet): # noqa
|
|
""" apis for quota broker value """
|
|
|
|
queryset = product_models.QuotaBrokerValue.objects.all()
|
|
serializer_class = product_serializers.QuotaBrokerValueSerializer
|
|
|
|
@action(
|
|
methods=['put'],
|
|
detail=True,
|
|
url_path='trash',
|
|
url_name='trash',
|
|
name='trash',
|
|
)
|
|
@transaction.atomic
|
|
def trash(self, request, pk=None):
|
|
""" Sent quota broker value to trash """
|
|
try:
|
|
trash(self.queryset, pk)
|
|
except APIException as e:
|
|
return Response(e, status.HTTP_204_NO_CONTENT)
|
|
|
|
@action(
|
|
methods=['post'],
|
|
detail=True,
|
|
url_name='delete',
|
|
url_path='delete',
|
|
name='delete'
|
|
)
|
|
@transaction.atomic
|
|
def delete(self, request, pk=None):
|
|
""" Full delete of quota broker value object """
|
|
try:
|
|
delete(self.queryset, pk)
|
|
return Response(status=status.HTTP_200_OK)
|
|
except APIException as e:
|
|
return Response(e, status=status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class QuotaLiveStockAllocationViewSet(viewsets.ModelViewSet):
|
|
""" apis for quota livestock allocation """
|
|
|
|
queryset = product_models.QuotaLivestockAllocation.objects.all()
|
|
serializer_class = product_serializers.QuotaLiveStockAllocationSerializer
|
|
|
|
@action(
|
|
methods=['put'],
|
|
detail=True,
|
|
url_path='trash',
|
|
url_name='trash',
|
|
name='trash',
|
|
)
|
|
@transaction.atomic
|
|
def trash(self, request, pk=None):
|
|
""" Sent quota livestock allocation to trash """
|
|
try:
|
|
trash(self.queryset, pk)
|
|
except APIException as e:
|
|
return Response(e, status.HTTP_204_NO_CONTENT)
|
|
|
|
@action(
|
|
methods=['post'],
|
|
detail=True,
|
|
url_name='delete',
|
|
url_path='delete',
|
|
name='delete'
|
|
)
|
|
@transaction.atomic
|
|
def delete(self, request, pk=None):
|
|
""" Full delete of quota livestock allocation object """
|
|
try:
|
|
delete(self.queryset, pk)
|
|
return Response(status=status.HTTP_200_OK)
|
|
except APIException as e:
|
|
return Response(e, status=status.HTTP_204_NO_CONTENT)
|