pos client & provider - fix org limit bug in quota

This commit is contained in:
2025-07-24 11:26:05 +03:30
parent 357d6d5cac
commit f8dbe0ab29
6 changed files with 113 additions and 19 deletions

View File

@@ -0,0 +1,69 @@
from apps.pos_device.web.api.v1.serilaizers import serializers as pos_serializer
from apps.pos_device import models as pos_models
from rest_framework.response import Response
from common.tools import CustomOperations
from rest_framework import viewsets
from rest_framework import status
class POSClientViewSet(viewsets.ModelViewSet):
queryset = pos_models.POSClient.objects.all()
serializer_class = pos_serializer.POSClientSerializer
def create(self, request, *args, **kwargs):
""" Custom create of pos client """
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
client = serializer.save()
# create attributes with value for client
attr_values_list = []
if 'attribute_values' in request.data.keys():
for attr in request.data['attribute_values']:
attr.update({'client': client.id})
attr_value = CustomOperations().custom_create(
request=request,
view=POSClientAttributeValueViewSet(),
data=attr
)
attr_values_list.append(attr_value)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_403_FORBIDDEN)
def update(self, request, pk=None, *args, **kwargs):
""" Custom update of pos client """
serializer = self.serializer_class(instance=self.get_object(), data=request.data)
if serializer.is_valid():
client = serializer.save()
if 'attribute_values' in request.data.keys():
# remove attribute relations from client
client.attribute_values.all().delete()
# create new relations
attr_values_list = []
for attr in request.data['attribute_values']:
attr.update({'client': client.id})
attr_value = CustomOperations().custom_create(
request=request,
view=POSClientAttributeValueViewSet,
data=attr
)
attr_values_list.append(attr_value)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_403_FORBIDDEN)
class POSClientAttributeViewSet(viewsets.ModelViewSet):
queryset = pos_models.POSClientAttribute.objects.all()
serializer_class = pos_serializer.POSClientAttributeSerializer
class POSClientAttributeValueViewSet(viewsets.ModelViewSet):
queryset = pos_models.POSClientAttributeValue.objects.all()
serializer_class = pos_serializer.POSClientAttributeValueSerializer

View File

@@ -1,14 +1,30 @@
from apps.pos_device.web.api.v1.serilaizers import serializers as pos_serializer
from apps.authentication.api.v1.api import UserViewSet
from rest_framework.exceptions import APIException
from apps.pos_device import models as pos_models
from rest_framework import viewsets
from rest_framework.response import Response
from common.tools import CustomOperations
from rest_framework import viewsets
from rest_framework import status
class ProviderCompanyViewSet(viewsets.ModelViewSet): # noqa
queryset = pos_models.ProviderCompany.objects.all()
serializer_class = pos_serializer.ProviderCompanySerializer
def create(self, request, *args, **kwargs):
""" custom create of provider client """
try:
client = CustomOperations().custom_create(
request=request,
view=UserViewSet(),
data=request.data
)
except Exception as e:
raise APIException(detail="data is invalid", code=403)
return Response(client, status=status.HTTP_201_CREATED)
class DeviceViewSet(viewsets.ModelViewSet):
queryset = pos_models.Device.objects.all()
@@ -23,18 +39,3 @@ class DeviceVersionViewSet(viewsets.ModelViewSet):
class SessionViewSet(viewsets.ModelViewSet): # noqa
queryset = pos_models.Sessions.objects.all()
serializer_class = pos_serializer.SessionSerializer
class POSClientViewSet(viewsets.ModelViewSet):
queryset = pos_models.POSClient.objects.all()
serializer_class = pos_serializer.POSClientSerializer
class POSClientAttributeViewSet(viewsets.ModelViewSet):
queryset = pos_models.POSClientAttribute.objects.all()
serializer_class = pos_serializer.POSClientAttributeSerializer
class POSClientAttributeValueViewSet(viewsets.ModelViewSet):
queryset = pos_models.POSClientAttributeValue.objects.all()
serializer_class = pos_serializer.POSClientAttributeValueSerializer