* Cleanup in PaymentMethodAPI

This commit is contained in:
Phil Zhitnikov 2024-05-20 23:55:04 +04:00
parent a95ff1d738
commit 85b472ddee
3 changed files with 4 additions and 26 deletions

View File

@ -258,11 +258,9 @@ class AnonymousGlobalSettingsSerializer(GlobalSettingsSerializer):
class PaymentMethodSerializer(serializers.ModelSerializer):
type = serializers.CharField(source='slug')
class Meta:
model = PaymentMethod
fields = ('type', 'name', 'requisites', 'cardnumber')
fields = ('slug', 'name', 'requisites', 'cardnumber')
class PromocodeSerializer(serializers.ModelSerializer):

View File

@ -13,9 +13,9 @@ router.register(r'gifts', views.GiftAPI, basename='gifts')
router.register(r'poizon', views.PoizonAPI, basename='poizon')
router.register(r'promo', views.PromoCodeAPI, basename='promo')
router.register(r'category', views.CategoryAPI, basename='category')
router.register(r'settings/payment', views.PaymentMethodsAPI, basename='payment')
urlpatterns = [
path("payment/", views.PaymentMethodsAPI.as_view()),
path("settings/", views.GlobalSettingsAPI.as_view()),
] + router.urls

View File

@ -140,32 +140,12 @@ class GlobalSettingsAPI(generics.RetrieveUpdateAPIView):
return GlobalSettings.load()
# TODO: update to GenericViewSet
class PaymentMethodsAPI(generics.GenericAPIView):
class PaymentMethodsAPI(mixins.ListModelMixin, mixins.UpdateModelMixin, viewsets.GenericViewSet):
serializer_class = PaymentMethodSerializer
permission_classes = [IsManager | ReadOnly]
lookup_field = 'slug'
queryset = PaymentMethod.objects.all()
def get(self, request, *args, **kwargs):
qs = self.get_queryset()
data = {}
for obj in qs:
data[obj.slug] = self.get_serializer(obj).data
return Response(data)
def patch(self, request, *args, **kwargs):
data = request.data
if 'type' not in data:
raise CRMException('type is required')
instance = get_object_or_404(self.get_queryset(), slug=data['type'])
serializer = self.get_serializer(instance, data=data, partial=True)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
class PromoCodeAPI(viewsets.ModelViewSet):
serializer_class = PromocodeSerializer