stakeholders create & list of psp organizations
This commit is contained in:
@@ -2,7 +2,13 @@ from datetime import timedelta
|
||||
|
||||
from apps.pos_device.web.api.v1.serilaizers import device as device_serializer
|
||||
from apps.authorization.api.v1.serializers import UserRelationSerializer
|
||||
from apps.authentication.api.v1.api import UserViewSet
|
||||
from apps.pos_device.web.api.v1.viewsets.client import POSClientViewSet
|
||||
from apps.authentication.api.v1.api import (
|
||||
UserViewSet,
|
||||
Organization,
|
||||
OrganizationSerializer
|
||||
)
|
||||
from apps.core.mixins.search_mixin import DynamicSearchMixin
|
||||
from apps.authorization.models import UserRelations
|
||||
from common.helpers import get_organization_by_user
|
||||
from rest_framework.exceptions import APIException
|
||||
@@ -105,6 +111,25 @@ class DeviceViewSet(viewsets.ModelViewSet):
|
||||
elif device.is_activated:
|
||||
raise APIException('device is activated', code=403)
|
||||
|
||||
@action(
|
||||
methods=['get'],
|
||||
detail=False,
|
||||
url_name='psp_organizations',
|
||||
url_path='psp_organizations',
|
||||
name='psp_organizations'
|
||||
)
|
||||
@transaction.atomic
|
||||
def psp_organizations(self, request):
|
||||
""" list of psp organizations """
|
||||
|
||||
organizations = Organization.objects.filter(type__key='PSP')
|
||||
|
||||
# paginate devices
|
||||
page = self.paginate_queryset(organizations)
|
||||
if page is not None:
|
||||
serializer = OrganizationSerializer(page, many=True)
|
||||
return self.get_paginated_response(serializer.data)
|
||||
|
||||
|
||||
class DeviceVersionViewSet(viewsets.ModelViewSet):
|
||||
queryset = pos_models.DeviceVersion.objects.all()
|
||||
@@ -135,6 +160,14 @@ class DeviceAssignmentViewSet(viewsets.ModelViewSet):
|
||||
organization = get_organization_by_user(request.user)
|
||||
request.data.update({'organization': organization.id})
|
||||
|
||||
if 'client_data' in request.data.keys():
|
||||
client = CustomOperations().custom_create(
|
||||
request=request,
|
||||
view=POSClientViewSet(),
|
||||
data=request.data['client_data']
|
||||
)
|
||||
request.data.update({'client': client['id']})
|
||||
|
||||
# create assignment
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
if serializer.is_valid():
|
||||
@@ -158,12 +191,10 @@ class DeviceAssignmentViewSet(viewsets.ModelViewSet):
|
||||
""" list of company device assignment to clients """
|
||||
|
||||
try:
|
||||
company = pos_models.ProviderCompany.objects.get(
|
||||
user_relation__user=request.user
|
||||
)
|
||||
organization = get_organization_by_user(request.user)
|
||||
|
||||
# get device assignment
|
||||
assignments = self.queryset.filter(company=company)
|
||||
assignments = self.queryset.filter(organization=organization)
|
||||
|
||||
serializer = self.serializer_class(assignments, many=True)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
@@ -171,6 +202,39 @@ class DeviceAssignmentViewSet(viewsets.ModelViewSet):
|
||||
raise APIException('Non Object Error', code=403)
|
||||
|
||||
|
||||
class StakeHoldersViewSet(viewsets.ModelViewSet):
|
||||
class StakeHoldersViewSet(viewsets.ModelViewSet, DynamicSearchMixin):
|
||||
queryset = pos_models.StakeHolders.objects.all()
|
||||
serializer_class = device_serializer.StakeHoldersSerializer
|
||||
|
||||
@transaction.atomic
|
||||
def create(self, request, *args, **kwargs):
|
||||
""" create shares amount of stakeholders """
|
||||
|
||||
stakeholders_data = []
|
||||
for stakeholder in request.data['stakeholders']:
|
||||
serializer = self.serializer_class(data=stakeholder)
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
stakeholders_data.append(serializer.data)
|
||||
|
||||
return Response(stakeholders_data, status=status.HTTP_201_CREATED)
|
||||
|
||||
@action(
|
||||
methods=['get'],
|
||||
detail=True,
|
||||
url_name='list_by_device',
|
||||
url_path='list_by_device',
|
||||
name='list_by_device',
|
||||
)
|
||||
@transaction.atomic
|
||||
def list_by_device(self, request, pk=None):
|
||||
""" list of stakeholders by device """
|
||||
device = pos_models.Device.objects.get(id=pk)
|
||||
stakeholders = device.stake_holders.all()
|
||||
query = self.filter_query(stakeholders)
|
||||
|
||||
# paginate stakeholders
|
||||
page = self.paginate_queryset(query)
|
||||
if page is not None:
|
||||
serializer = self.get_serializer(page, many=True)
|
||||
return self.get_paginated_response(serializer.data)
|
||||
|
||||
Reference in New Issue
Block a user