From 0ad0e57d925786d1a9382a2a0304ca2deba0691e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20BAL?= Date: Fri, 17 Dec 2021 15:06:34 +0300 Subject: [PATCH 1/3] added a register endpoint which has a just create function --- ecommerce/customers/serializers.py | 5 +++++ ecommerce/customers/views.py | 4 ++++ ecommerce/ecommerce/urls.py | 3 ++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ecommerce/customers/serializers.py b/ecommerce/customers/serializers.py index ffad735..2edf8ad 100644 --- a/ecommerce/customers/serializers.py +++ b/ecommerce/customers/serializers.py @@ -18,6 +18,11 @@ class ProfileSerializer(serializers.ModelSerializer): class Meta: model = Customer fields = ("first_name", "last_name", "email") +class RegisterSerializer(serializers.ModelSerializer): + + class Meta: + model = Customer + fields =("id", "first_name", "last_name", "email", "is_staff", "is_active", "date_joined") class CountrySerializer(serializers.ModelSerializer): diff --git a/ecommerce/customers/views.py b/ecommerce/customers/views.py index e2d05b6..7d67879 100644 --- a/ecommerce/customers/views.py +++ b/ecommerce/customers/views.py @@ -30,6 +30,10 @@ def get_object(self): filter_kwargs = {"id": self.request.user.id} obj = get_object_or_404(queryset, **filter_kwargs) return obj +class RegisterViewSet(mixins.CreateModelMixin,GenericViewSet ): + queryset = Customer.objects.all() + serializer_class = ProfileSerializer + class CountryViewSet(viewsets.ModelViewSet): diff --git a/ecommerce/ecommerce/urls.py b/ecommerce/ecommerce/urls.py index 28278ef..4a6a5f1 100644 --- a/ecommerce/ecommerce/urls.py +++ b/ecommerce/ecommerce/urls.py @@ -21,7 +21,7 @@ from baskets.views import BasketItemViewSet, BasketViewSet from core.views import APITokenObtainPairView from customers.views import AddressViewSet, CityViewSet, \ - CountryViewSet, AdminCustomerViewSet, MyProfileViewSet + CountryViewSet, AdminCustomerViewSet, MyProfileViewSet, RegisterViewSet from ecommerce.router import router from orders.views import OrderItemViewSet, OrderViewSet, BillingAddressViewSet, ShippingAddressViewSet, \ OrderBankAccountViewSet @@ -46,6 +46,7 @@ router.register("banks", BankViewSet) router.register("admin-products", AdminProductViewSet, basename="admin-product") router.register("admin-customers", AdminCustomerViewSet, basename="admin-customer") +router.register("register", RegisterViewSet) urlpatterns = [ From 1a27855c4e7e4962bfe6d58047a4e2dcce24df2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20BAL?= Date: Fri, 17 Dec 2021 15:34:29 +0300 Subject: [PATCH 2/3] Added a ProductCreateSerializer with DRF Action. --- ecommerce/ecommerce/urls.py | 4 ++-- ecommerce/products/serializers.py | 5 +++++ ecommerce/products/views.py | 8 +++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ecommerce/ecommerce/urls.py b/ecommerce/ecommerce/urls.py index 4a6a5f1..28b3bf8 100644 --- a/ecommerce/ecommerce/urls.py +++ b/ecommerce/ecommerce/urls.py @@ -27,7 +27,7 @@ OrderBankAccountViewSet from payments.views import BankAccountViewSet, BankViewSet from products.views import ProductViewSet, CategoryViewSet, AdminProductViewSet, \ - PriceViewSet + PriceViewSet, ProductCreateViewSet router.register("products", ProductViewSet) router.register("prices", PriceViewSet) @@ -47,7 +47,7 @@ router.register("admin-products", AdminProductViewSet, basename="admin-product") router.register("admin-customers", AdminCustomerViewSet, basename="admin-customer") router.register("register", RegisterViewSet) - +router.register("product-create",ProductCreateViewSet, basename= "Product-Create" ) urlpatterns = [ path("api/", include(router.urls)), diff --git a/ecommerce/products/serializers.py b/ecommerce/products/serializers.py index 0ba1f73..2d3accb 100644 --- a/ecommerce/products/serializers.py +++ b/ecommerce/products/serializers.py @@ -23,6 +23,11 @@ class Meta: model = Price fields = ("id", "product", "amount") +class ProductCreateSerializer(serializers.ModelSerializer): + + class Meta: + model = Product + fields = ("id", "sku", "name", "description", "color", "size", "categories", "created_at", "modified_at", "price") class ProductDetailedSerializer(serializers.ModelSerializer): categories = CategorySerializer(many=True) diff --git a/ecommerce/products/views.py b/ecommerce/products/views.py index 4f75c73..85d9a06 100644 --- a/ecommerce/products/views.py +++ b/ecommerce/products/views.py @@ -20,7 +20,13 @@ class ProductViewSet(DetailedViewSetMixin, "detailed_list": ProductDetailedSerializer, "detailed": ProductDetailedSerializer, } - +class ProductCreateViewSet(viewsets.ModelViewSet): + queryset = Product.objects.all() + serializer_class = ProductSerializer + serializer_action_classes = { + "detailed_list": ProductDetailedSerializer, + "detailed": ProductDetailedSerializer, + } class AdminProductViewSet(DetailedViewSetMixin, viewsets.ModelViewSet): permission_classes = ( From fc6d31f24a8ffacea2d57da3b8413426fdd4c90b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20BAL?= Date: Sat, 18 Dec 2021 12:35:10 +0300 Subject: [PATCH 3/3] We looked a some permisson but I think permissons which has done, are already enough --- ecommerce/products/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ecommerce/products/views.py b/ecommerce/products/views.py index 85d9a06..5e36e4e 100644 --- a/ecommerce/products/views.py +++ b/ecommerce/products/views.py @@ -43,6 +43,7 @@ class AdminProductViewSet(DetailedViewSetMixin, viewsets.ModelViewSet): class CategoryViewSet(viewsets.ModelViewSet): + permission_classes = () http_method_names = ["get"] queryset = Category.objects.all() serializer_class = CategorySerializer