Skip to content
This repository has been archived by the owner on May 12, 2023. It is now read-only.

Homework-4 #108

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ecommerce/baskets/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class BasketItemSerializer(serializers.ModelSerializer):
class Meta:
model = BasketItem
fields = ("id", "basket", "product", "quantity", "price")
read_only_fields = ["basket", "price"]


class BasketSerializer(serializers.ModelSerializer):
Expand Down
17 changes: 17 additions & 0 deletions ecommerce/baskets/views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework.response import Response

from baskets.filters import BasketItemFilter, BasketFilter
from baskets.models import BasketItem, Basket
Expand All @@ -7,6 +9,7 @@


class BasketItemViewSet(DetailedViewSetMixin, viewsets.ModelViewSet):
http_method_names = ["get"]
queryset = BasketItem.objects.all()
serializer_class = BasketItemSerializer
filterset_class = BasketItemFilter
Expand All @@ -15,12 +18,26 @@ class BasketItemViewSet(DetailedViewSetMixin, viewsets.ModelViewSet):
"detailed": BasketItemDetailedSerializer,
}

def get_queryset(self):
queryset = super().get_queryset()
user = self.request.user
return queryset.filter(basket__customer__id=user)


class BasketViewSet(DetailedViewSetMixin, viewsets.ModelViewSet):
permission_classes = ()
queryset = Basket.objects.all()
serializer_class = BasketSerializer
filterset_class = BasketFilter
serializer_action_classes = {
"detailed_list": BasketDetailedSerializer,
"detailed": BasketDetailedSerializer,
"add_item_to_basket": BasketItemSerializer
}

@action(detail=True, methods=['post'])
def add_item_to_basket(self, request, pk=None):
serializer = BasketItemSerializer(data=request.data)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

price bilgisini kullanicidan almak guzel bir fikir degil sanki.

serializer.save()

return Response(serializer.data)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

basketviewset baskete ait bir serializer verisi donse daha guzel olur.

18 changes: 18 additions & 0 deletions ecommerce/customers/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,24 @@ class Meta:
fields = ("id", "first_name", "last_name", "email", "is_staff", "is_active", "date_joined")


class CustomerRegisterSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True)

def create(self, validated_data):
customer = Customer.objects.create_user(
email=validated_data['email'],
password=validated_data["password"]
)
customer.save()
return customer

class Meta:
model = Customer
fields = ("id", "email", "first_name", "last_name", "password",)




class ProfileSerializer(serializers.ModelSerializer):

class Meta:
Expand Down
9 changes: 8 additions & 1 deletion ecommerce/customers/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,14 @@
from customers.models import Customer, Address, City, Country
from customers.serializers import CustomerSerializer, AddressSerializer, CitySerializer, \
CountrySerializer, \
AddressDetailedSerializer, CityDetailedSerializer, ProfileSerializer
AddressDetailedSerializer, CityDetailedSerializer, ProfileSerializer, CustomerRegisterSerializer


class CustomerRegisterViewSet(viewsets.ModelViewSet, mixins.CreateModelMixin):
permission_classes = ()
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

login olmamis kullanici bu endpointe ulasamasa iyi olur sanki.

http_method_names = ['post']
queryset = Customer.objects.all()
serializer_class = CustomerRegisterSerializer


class AdminCustomerViewSet(viewsets.ModelViewSet):
Expand Down
3 changes: 2 additions & 1 deletion ecommerce/ecommerce/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -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, CustomerRegisterViewSet
from ecommerce.router import router
from orders.views import OrderItemViewSet, OrderViewSet, BillingAddressViewSet, ShippingAddressViewSet, \
OrderBankAccountViewSet
Expand All @@ -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", CustomerRegisterViewSet)


urlpatterns = [
Expand Down