diff --git a/store/serializers.py b/store/serializers.py index 06ef857..ad21628 100644 --- a/store/serializers.py +++ b/store/serializers.py @@ -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): diff --git a/store/urls.py b/store/urls.py index d63cced..605b8ba 100644 --- a/store/urls.py +++ b/store/urls.py @@ -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 diff --git a/store/views.py b/store/views.py index 88996a7..caf8180 100644 --- a/store/views.py +++ b/store/views.py @@ -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