123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874 |
- from rest_framework import viewsets
- from .models import ListModel,DepartmentListModel,BoundTypeListModel,BoundBSListModel,BoundCodeTypeListModel,BoundStatusListModel,ProductListModel,baseset
- from . import serializers
- from utils.page import MyPageNumberPagination
- from rest_framework.filters import OrderingFilter
- from django_filters.rest_framework import DjangoFilterBackend
- from rest_framework.response import Response
- from .filter import Filter,DepartmentFilter,BoundTypeFilter,BoundBSFilter,BoundCodeTypeFilter,BoundStatusFilter,ProductFilter
- from rest_framework.exceptions import APIException
- from staff.models import ListModel as StaffListModel
- class APIViewSet(viewsets.ModelViewSet):
- pagination_class = MyPageNumberPagination
- filter_backends = [DjangoFilterBackend, OrderingFilter, ]
- ordering_fields = ['id', "create_time", "update_time", ]
- filter_class = Filter
- def get_project(self):
- # 获取项目ID,如果不存在则返回None
- try:
- id = self.kwargs.get('pk')
- return id
- except:
- return None
- def get_queryset(self):
- # 根据请求用户过滤查询集
- id = self.get_project()
- if self.request.user:
- if id is None:
- return ListModel.objects.filter( is_delete=False)
- else:
- return ListModel.objects.filter( id=id, is_delete=False)
- else:
- return ListModel.objects.none()
- def get_serializer_class(self):
- # 根据操作类型选择合适的序列化器
- if self.action in ['list', 'retrieve', 'destroy']:
- return serializers.WarehouseGetSerializer
- elif self.action in ['create']:
- return serializers.WarehousePostSerializer
- elif self.action in ['update']:
- return serializers.WarehouseUpdateSerializer
- elif self.action in ['partial_update']:
- return serializers.WarehousePartialUpdateSerializer
- else:
- return self.http_method_not_allowed(request=self.request)
- def create(self, request, *args, **kwargs):
- # 创建一个数据行
- data = self.request.data
- data['openid'] = self.request.auth.openid
- if len(data['warehouse_name']) > 45:
- raise APIException({"detail": "The warehouse name is set to more than 45 characters"})
- if ListModel.objects.filter( warehouse_name=data['warehouse_name'],
- is_delete=False).exists():
- raise APIException({"detail": "Data Exists"})
- else:
- # if ListModel.objects.filter(openid=data['openid'], is_delete=False).count() >= 1:
- # raise APIException({"detail": "You Just Can Add 1 Warehouse"})
- # else:
- serializer = self.get_serializer(data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def update(self, request, pk):
- # 更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot update data which not yours"})
- else:
- data = self.request.data
- if len(data['warehouse_name']) > 45:
- raise APIException({"detail": "The warehouse name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def partial_update(self, request, pk):
- # 部分更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot partial_update data which not yours"})
- else:
- data = self.request.data
- if len(data['warehouse_name']) > 45:
- raise APIException({"detail": "The warehouse name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data, partial=True)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def destroy(self, request, pk):
- # 逻辑删除一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot delete data which not yours"})
- else:
- qs.is_delete = True
- qs.save()
- serializer = self.get_serializer(qs, many=False)
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- class DepartmentAPIViewSet(viewsets.ModelViewSet):
- pagination_class = MyPageNumberPagination
- filter_backends = [DjangoFilterBackend, OrderingFilter, ]
- ordering_fields = ['id', "create_time", "update_time", ]
- filter_class = DepartmentFilter
- def get_project(self):
- # 获取项目ID,如果不存在则返回None
- try:
- id = self.kwargs.get('pk')
- return id
- except:
- return None
- def get_queryset(self):
- # 根据请求用户过滤查询集
- id = self.get_project()
- if self.request.user:
- if id is None:
- return DepartmentListModel.objects.filter( is_delete=False)
- else:
- return DepartmentListModel.objects.filter( id=id, is_delete=False)
- else:
- return DepartmentListModel.objects.none()
- def get_serializer_class(self):
- # 根据操作类型选择合适的序列化器
- if self.action in ['list', 'retrieve', 'destroy']:
- return serializers.DepartmentGetSerializer
- elif self.action in ['create']:
- return serializers.DepartmentPostSerializer
- elif self.action in ['update']:
- return serializers.DepartmentUpdateSerializer
- elif self.action in ['partial_update']:
- return serializers.DepartmentPartialUpdateSerializer
- else:
- return self.http_method_not_allowed(request=self.request)
- def create(self, request, *args, **kwargs):
- # 创建一个数据行
- data = self.request.data
- data['openid'] = self.request.auth.openid
- if len(data['department_name']) > 45:
- raise APIException({"detail": "The department name is set to more than 45 characters"})
- if DepartmentListModel.objects.filter(department_name=data['department_name'],
- is_delete=False).exists():
- raise APIException({"detail": "Data Exists"})
- else:
- serializer = self.get_serializer(data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def update(self, request, pk):
- # 更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot update data which not yours"})
- else:
- data = self.request.data
- if len(data['department_name']) > 45:
- raise APIException({"detail": "The department name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def partial_update(self, request, pk):
- # 部分更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot partial_update data which not yours"})
- else:
- data = self.request.data
- if len(data['department_name']) > 45:
- raise APIException({"detail": "The department name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data, partial=True)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def destroy(self, request, pk):
- # 逻辑删除一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot delete data which not yours"})
- else:
- qs.is_delete = True
- qs.save()
- serializer = self.get_serializer(qs, many=False)
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- class BoundTypeAPIViewSet(viewsets.ModelViewSet):
- pagination_class = MyPageNumberPagination
- filter_backends = [DjangoFilterBackend, OrderingFilter, ]
- ordering_fields = ['id', "create_time", "update_time", ]
- filter_class = BoundTypeFilter
- def get_project(self):
- # 获取项目ID,如果不存在则返回None
- try:
- id = self.kwargs.get('pk')
- return id
- except:
- return None
- def get_queryset(self):
- # 根据请求用户过滤查询集
- id = self.get_project()
- if self.request.user:
- if id is None:
- return BoundTypeListModel.objects.filter( is_delete=False)
- else:
- return BoundTypeListModel.objects.filter( id=id, is_delete=False)
- else:
- return BoundTypeListModel.objects.none()
- def get_serializer_class(self):
- # 根据操作类型选择合适的序列化器
- if self.action in ['list', 'retrieve', 'destroy']:
- return serializers.BoundTypeGetSerializer
- elif self.action in ['create']:
- return serializers.BoundTypePostSerializer
- elif self.action in ['update']:
- return serializers.BoundTypeUpdateSerializer
- elif self.action in ['partial_update']:
- return serializers.BoundTypePartialUpdateSerializer
- else:
- return self.http_method_not_allowed(request=self.request)
- def create(self, request, *args, **kwargs):
- # 创建一个数据行
- data = self.request.data
- data['openid'] = self.request.auth.openid
- if len(data['bound_type_name']) > 45:
- raise APIException({"detail": "The bound type name is set to more than 45 characters"})
- if BoundTypeListModel.objects.filter(bound_type_name=data['bound_type_name'],
- is_delete=False).exists():
- raise APIException({"detail": "Data Exists"})
- else:
- serializer = self.get_serializer(data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def update(self, request, pk):
- # 更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot update data which not yours"})
- else:
- data = self.request.data
- if len(data['bound_type_name']) > 45:
- raise APIException({"detail": "The bound type name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def partial_update(self, request, pk):
- # 部分更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot partial_update data which not yours"})
- else:
- data = self.request.data
- if len(data['bound_type_name']) > 45:
- raise APIException({"detail": "The bound type name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data, partial=True)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def destroy(self, request, pk):
- # 逻辑删除一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot delete data which not yours"})
- else:
- qs.is_delete = True
- qs.save()
- serializer = self.get_serializer(qs, many=False)
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def update(self, request, pk):
- # 更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot update data which not yours"})
- else:
- data = self.request.data
- if len(data['bound_bs_name']) > 45:
- raise APIException({"detail": "The bound bs name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def partial_update(self, request, pk):
- # 部分更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot partial_update data which not yours"})
- else:
- data = self.request.data
- if len(data['bound_bs_name']) > 45:
- raise APIException({"detail": "The bound bs name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data, partial=True)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def destroy(self, request, pk):
- # 逻辑删除一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot delete data which not yours"})
- else:
- qs.is_delete = True
- qs.save()
- serializer = self.get_serializer(qs, many=False)
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- class BoundBusinessAPIViewSet(viewsets.ModelViewSet):
- pagination_class = MyPageNumberPagination
- filter_backends = [DjangoFilterBackend, OrderingFilter, ]
- ordering_fields = ['id', "create_time", "update_time", ]
- filter_class = BoundBSFilter
- def get_project(self):
- # 获取项目ID,如果不存在则返回None
- try:
- id = self.kwargs.get('pk')
- return id
- except:
- return None
- def get_queryset(self):
- # 根据请求用户过滤查询集
- id = self.get_project()
- if self.request.user:
- if id is None:
- return BoundBSListModel.objects.filter( is_delete=False)
- else:
- return BoundBSListModel.objects.filter( id=id, is_delete=False)
- else:
- return BoundBSListModel.objects.none()
-
- def get_serializer_class(self):
- # 根据操作类型选择合适的序列化器
- if self.action in ['list', 'retrieve', 'destroy']:
- return serializers.BoundBSGetSerializer
- elif self.action in ['create']:
- return serializers.BoundBSPostSerializer
- elif self.action in ['update']:
- return serializers.BoundBSUpdateSerializer
- elif self.action in ['partial_update']:
- return serializers.BoundBSPartialUpdateSerializer
- else:
- return self.http_method_not_allowed(request=self.request)
-
- def create(self, request, *args, **kwargs):
- # 创建一个数据行
- data = self.request.data
- data['openid'] = self.request.auth.openid
- if len(data['bound_bs_name']) > 45:
- raise APIException({"detail": "The bound bs name is set to more than 45 characters"})
- if BoundBSListModel.objects.filter(bound_bs_name=data['bound_bs_name'],
- is_delete=False).exists():
- raise APIException({"detail": "Data Exists"})
- else:
- serializer = self.get_serializer(data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def update(self, request, pk):
- # 更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot update data which not yours"})
- else:
- data = self.request.data
- if len(data['bound_bs_name']) > 45:
- raise APIException({"detail": "The bound bs name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def partial_update(self, request, pk):
- # 部分更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot partial_update data which not yours"})
- else:
- data = self.request.data
- if len(data['bound_bs_name']) > 45:
- raise APIException({"detail": "The bound bs name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data, partial=True)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def destroy(self, request, pk):
- # 逻辑删除一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot delete data which not yours"})
- else:
- qs.is_delete = True
- qs.save()
- serializer = self.get_serializer(qs, many=False)
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- class BoundCodeTypeAPIViewSet(viewsets.ModelViewSet):
- pagination_class = MyPageNumberPagination
- filter_backends = [DjangoFilterBackend, OrderingFilter, ]
- ordering_fields = ['id', "create_time", "update_time", ]
- filter_class = BoundCodeTypeFilter
- def get_project(self):
- # 获取项目ID,如果不存在则返回None
- try:
- id = self.kwargs.get('pk')
- return id
- except:
- return None
- def get_queryset(self):
- # 根据请求用户过滤查询集
- id = self.get_project()
- if self.request.user:
- if id is None:
- return BoundCodeTypeListModel.objects.filter( is_delete=False)
- else:
- return BoundCodeTypeListModel.objects.filter( id=id, is_delete=False)
- else:
- return BoundCodeTypeListModel.objects.none()
- def get_serializer_class(self):
- # 根据操作类型选择合适的序列化器
- if self.action in ['list', 'retrieve', 'destroy']:
- return serializers.BoundCodeTypeGetSerializer
- elif self.action in ['create']:
- return serializers.BoundCodeTypePostSerializer
- elif self.action in ['update']:
- return serializers.BoundCodeTypeUpdateSerializer
- elif self.action in ['partial_update']:
- return serializers.BoundCodeTypePartialUpdateSerializer
- else:
- return self.http_method_not_allowed(request=self.request)
- def create(self, request, *args, **kwargs):
- # 创建一个数据行
- data = self.request.data
- data['openid'] = self.request.auth.openid
- if len(data['bound_code_type_name']) > 45:
- raise APIException({"detail": "The bound code type name is set to more than 45 characters"})
- if BoundCodeTypeListModel.objects.filter(bound_code_type_name=data['bound_code_type_name'],
- is_delete=False).exists():
- raise APIException({"detail": "Data Exists"})
- else:
- serializer = self.get_serializer(data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def update(self, request, pk):
- # 更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot update data which not yours"})
- else:
- data = self.request.data
- if len(data['bound_code_type_name']) > 45:
- raise APIException({"detail": "The bound code type name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def partial_update(self, request, pk):
- # 部分更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot partial_update data which not yours"})
- else:
- data = self.request.data
- if len(data['bound_code_type_name']) > 45:
- raise APIException({"detail": "The bound code type name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data, partial=True)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def destroy(self, request, pk):
- # 逻辑删除一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot delete data which not yours"})
- else:
- qs.is_delete = True
- qs.save()
- serializer = self.get_serializer(qs, many=False)
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- class BoundStatusAPIViewSet(viewsets.ModelViewSet):
- pagination_class = MyPageNumberPagination
- filter_backends = [DjangoFilterBackend, OrderingFilter, ]
- ordering_fields = ['id', "create_time", "update_time", ]
- filter_class = BoundStatusFilter
- def get_project(self):
- # 获取项目ID,如果不存在则返回None
- try:
- id = self.kwargs.get('pk')
- return id
- except:
- return None
- def get_queryset(self):
- # 根据请求用户过滤查询集
- id = self.get_project()
- if self.request.user:
- if id is None:
- return BoundStatusListModel.objects.filter( is_delete=False)
- else:
- return BoundStatusListModel.objects.filter( id=id, is_delete=False)
- else:
- return BoundStatusListModel.objects.none()
- def get_serializer_class(self):
- # 根据操作类型选择合适的序列化器
- if self.action in ['list', 'retrieve', 'destroy']:
- return serializers.BoundStatusGetSerializer
- elif self.action in ['create']:
- return serializers.BoundStatusPostSerializer
- elif self.action in ['update']:
- return serializers.BoundStatusUpdateSerializer
- elif self.action in ['partial_update']:
- return serializers.BoundStatusPartialUpdateSerializer
- else:
- return self.http_method_not_allowed(request=self.request)
- def create(self, request, *args, **kwargs):
- # 创建一个数据行
- data = self.request.data
- data['openid'] = self.request.auth.openid
- if len(data['bound_status_name']) > 45:
- raise APIException({"detail": "The bound status name is set to more than 45 characters"})
- if BoundStatusListModel.objects.filter(bound_status_name=data['bound_status_name'],
- is_delete=False).exists():
- raise APIException({"detail": "Data Exists"})
- else:
- serializer = self.get_serializer(data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def update(self, request, pk):
- # 更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot update data which not yours"})
- else:
- data = self.request.data
- if len(data['bound_status_name']) > 45:
- raise APIException({"detail": "The bound status name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def partial_update(self, request, pk):
- # 部分更新一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot partial_update data which not yours"})
- else:
- data = self.request.data
- if len(data['bound_status_name']) > 45:
- raise APIException({"detail": "The bound status name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data, partial=True)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def destroy(self, request, pk):
- # 逻辑删除一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot delete data which not yours"})
- else:
- qs.is_delete = True
- qs.save()
- serializer = self.get_serializer(qs, many=False)
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- class MultipleViewSet(viewsets.ModelViewSet):
- authentication_classes = []
- pagination_class = MyPageNumberPagination
- permission_classes = []
- throttle_classes = []
- filter_backends = [DjangoFilterBackend, OrderingFilter, ]
- ordering_fields = ['-id', ]
- filter_class = Filter
- def get_project(self):
- # 获取项目ID,如果不存在则返回None
- try:
- id = self.kwargs.get('pk')
- return id
- except:
- return None
- def get_queryset(self):
- # 根据请求用户过滤查询集
- id = self.get_project()
- if self.request.user:
- if id is None:
- return ListModel.objects.filter(is_delete=False)
- else:
- return ListModel.objects.filter(id=id, is_delete=False)
- else:
- return ListModel.objects.none()
- def get_serializer_class(self):
- # 根据操作类型选择合适的序列化器
- if self.action in ['list', 'retrieve']:
- return serializers.WarehouseGetSerializer
- else:
- return self.http_method_not_allowed(request=self.request)
-
- class ProductAPIViewSet(viewsets.ModelViewSet):
- pagination_class = MyPageNumberPagination
- filter_backends = [DjangoFilterBackend, OrderingFilter, ]
- ordering_fields = ['id', "create_time", "update_time", ]
- filter_class = ProductFilter
- def get_project(self):
- # 获取项目ID,如果不存在则返回None
- try:
- id = self.kwargs.get('pk')
- return id
- except:
- return None
- def get_queryset(self):
- # 根据请求用户过滤查询集
- id = self.get_project()
- if self.request.user:
- if id is None:
- return ProductListModel.objects.filter(is_delete=False)
- else:
- return ProductListModel.objects.filter(id=id, is_delete=False)
- else:
- return ProductListModel.objects.none()
- def get_serializer_class(self):
- # 根据操作类型选择合适的序列化器
- if self.action in ['list', 'retrieve', 'destroy']:
- return serializers.ProductGetSerializer
- elif self.action in ['create']:
- return serializers.ProductPostSerializer
- elif self.action in ['update']:
- return serializers.ProductUpdateSerializer
- elif self.action in ['partial_update']:
- return serializers.ProductPartialUpdateSerializer
- else:
- return self.http_method_not_allowed(request=self.request)
- def create(self, request, *args, **kwargs):
- # 创建一个数据行
- data = self.request.data
- if len(data['product_name']) > 45:
- raise APIException({"detail": "The product name is set to more than 45 characters"})
- if ProductListModel.objects.filter(product_code=data['product_code'],
- is_delete=False).exists():
- raise APIException({"detail": "Data Exists"})
- else:
- serializer = self.get_serializer(data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
-
- def update(self, request, pk):
- # 更新一个数据行
- qs = self.get_object()
-
- data = self.request.data
- if len(data['product_name']) > 45:
- raise APIException({"detail": "The product name is set to more than 45 characters"})
- if ProductListModel.objects.filter(product_code=data['product_code'],
- is_delete=False).exists():
- raise APIException({"detail": "Data Exists"})
- serializer = self.get_serializer(qs, data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def partial_update(self, request, pk):
- # 部分更新一个数据行
- qs = self.get_object()
-
- data = self.request.data
- if len(data['product_name']) > 45:
- raise APIException({"detail": "The product name is set to more than 45 characters"})
- if ProductListModel.objects.filter(product_code=data['product_code'],
- is_delete=False).exists():
- raise APIException({"detail": "Data Exists"})
- serializer = self.get_serializer(qs, data=data, partial=True)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def destroy(self, request, pk):
- # 逻辑删除一个数据行
- qs = self.get_object()
- qs.is_delete = True
- qs.save()
- serializer = self.get_serializer(qs, many=False)
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- class basesetAPIViewSet(viewsets.ModelViewSet):
- pagination_class = MyPageNumberPagination
- filter_backends = [DjangoFilterBackend, OrderingFilter, ]
- ordering_fields = ['id' ]
- filter_class = Filter
- def get_project(self):
- # 获取项目ID,如果不存在则返回None
- try:
- id = self.kwargs.get('pk')
- return id
- except:
- return None
- def get_queryset(self):
- # 根据请求用户过滤查询集
- id = self.get_project()
- if self.request.user:
- if id is None:
- return baseset.objects.filter(is_delete=False)
- else:
- return baseset.objects.filter(id=id, is_delete=False)
- else:
- return baseset.objects.none()
- def get_serializer_class(self):
- # 根据操作类型选择合适的序列化器
- if self.action in ['list', 'retrieve', 'destroy']:
- return serializers.BaseGetSerializer
- elif self.action in ['create']:
- return serializers.BasePostSerializer
- elif self.action in ['update']:
- return serializers.BaseUpdateSerializer
- elif self.action in ['partial_update']:
- return serializers.BasePartialUpdateSerializer
- else:
- return self.http_method_not_allowed(request=self.request)
- def create(self, request, *args, **kwargs):
- # 创建一个数据行
- data = self.request.data
- staff_openid = self.request.auth.openid
- staff_obj = StaffListModel.objects.filter(openid=staff_openid).first()
- if staff_obj is None:
- raise APIException({"detail": "Staff not exists"})
- if staff_obj.staff_type != 'Admin' :
- raise APIException({"detail": "Permission denied"})
- if len(data['set_name']) > 45:
- raise APIException({"detail": "The base name is set to more than 45 characters"})
- if baseset.objects.filter(set_name=data['set_name'],
- is_delete=False).exists():
- raise APIException({"detail": "Data Exists"})
- else:
- serializer = self.get_serializer(data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def update(self, request, pk):
- # 更新一个数据行
- staff_openid = self.request.auth.openid
- staff_obj = StaffListModel.objects.filter(openid=staff_openid).first()
- if staff_obj is None:
- raise APIException({"detail": "Staff not exists"})
- if staff_obj.staff_type != 'Admin' :
- raise APIException({"detail": "Permission denied"})
- data = self.request.data
- if len(data['set_name']) > 45:
- raise APIException({"detail": "The base name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def partial_update(self, request, pk):
- # 部分更新一个数据行
- staff_openid = self.request.auth.openid
- staff_obj = StaffListModel.objects.filter(openid=staff_openid).first()
- if staff_obj is None:
- raise APIException({"detail": "Staff not exists"})
- if staff_obj.staff_type != 'Admin' :
- raise APIException({"detail": "Permission denied"})
- data = self.request.data
- if len(data['set_name']) > 45:
- raise APIException({"detail": "The base name is set to more than 45 characters"})
- serializer = self.get_serializer(qs, data=data, partial=True)
- serializer.is_valid(raise_exception=True)
- serializer.save()
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
- def destroy(self, request, pk):
- # 逻辑删除一个数据行
- qs = self.get_object()
- if qs.openid != self.request.auth.openid:
- raise APIException({"detail": "Cannot delete data which not yours"})
- else:
- qs.is_delete = True
- qs.save()
- serializer = self.get_serializer(qs, many=False)
- headers = self.get_success_headers(serializer.data)
- return Response(serializer.data, status=200, headers=headers)
|