Skip to content
This repository was archived by the owner on May 12, 2023. It is now read-only.
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
24 changes: 24 additions & 0 deletions ecommerce/baskets/filters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from django.utils.translation import gettext_lazy as _
from django_filters import rest_framework as filters

from baskets.models import Basket, BasketItem


class BasketFilter(filters.FilterSet):
"""
Basket Models Filter
"""

class Meta:
model = Basket
fields = ("customer", "status")


class BasketItemFilter(filters.FilterSet):
"""
BasketItem Models Filter
"""

class Meta:
model = BasketItem
fields = ("basket", "product", "quantity", "price")
30 changes: 30 additions & 0 deletions ecommerce/baskets/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from rest_framework import serializers

from products.serializers import ProductSerializer
from customers.serializers import CustomerSerializer
from baskets.models import BasketItem, Basket


class BasketSerializer(serializers.ModelSerializer):

class Meta:
model = Basket
fields = ("id", "customer", "status")


class BasketDetailedSerializer(BasketSerializer):
customer = CustomerSerializer()


class BasketItemSerializer(serializers.ModelSerializer):

class Meta:
model = BasketItem
fields = ("id", "basket", "product", "quantity", "price",)


class BasketItemDetailedSerializer(BasketItemSerializer):
basket = BasketSerializer()
product = ProductSerializer()


25 changes: 25 additions & 0 deletions ecommerce/baskets/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,28 @@
from django.shortcuts import render

from rest_framework import viewsets
# Create your views here.
from baskets.filters import BasketItemFilter, BasketFilter
from baskets.models import BasketItem, Basket
from baskets.serializers import BasketItemSerializer, BasketSerializer, BasketItemDetailedSerializer, BasketDetailedSerializer
from core.mixins import DetailedViewSetMixin


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


class BasketItemViewSet(DetailedViewSetMixin, viewsets.ModelViewSet):
queryset = BasketItem.objects.all()
serializer_class = BasketItemSerializer
filterset_class = BasketItemFilter
serializer_action_classes = {
"detailed_list": BasketItemDetailedSerializer,
"detail": BasketItemDetailedSerializer,
}
34 changes: 34 additions & 0 deletions ecommerce/customers/filters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from django.utils.translation import gettext_lazy as _

from django_filters import rest_framework as filters
from customers.models import Customer, Address, Country, City


class CustomerFilter(filters.FilterSet):

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


class CityFilter(filters.FilterSet):

class Meta:
model = City
fields = ("name", "country")


class CountryFilter(filters.FilterSet):

class Meta:
model = Country
fields = ("name",)


class AddressFilter(filters.FilterSet):

class Meta:
model = Address
fields = ("name", "full_name", "phone", "district", "zipcode", "city", "customer")


44 changes: 44 additions & 0 deletions ecommerce/customers/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
from rest_framework import serializers
from core.mixins import DetailedViewSetMixin

from customers.models import Customer, Address, City, Country


class CustomerSerializer(serializers.ModelSerializer):

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


class CountrySerializer(serializers.ModelSerializer):
class Meta:
model = Country
fields = ("id", "name",)


class CitySerializer(serializers.ModelSerializer):

class Meta:
model = City
fields = ("id", "name", "country")


class AddressSerializer(serializers.ModelSerializer):

class Meta:
model = Address
fields = ("id", "name", "full_name", "phone", "district", "zipcode", "city", "customer")


class CityDetailedSerializer(CitySerializer):
country = CountrySerializer()


class AddressDetailedSerializer(AddressSerializer):
customer = CustomerSerializer()
city = CitySerializer()




40 changes: 40 additions & 0 deletions ecommerce/customers/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,43 @@
from django.shortcuts import render

# Create your views here.
from rest_framework import viewsets
from core.mixins import DetailedViewSetMixin

from customers.filters import CustomerFilter, AddressFilter, CountryFilter, CityFilter
from customers.models import Customer, Address, City, Country
from customers.serializers import CustomerSerializer, AddressSerializer, CitySerializer, CountrySerializer, AddressDetailedSerializer, CityDetailedSerializer


class CustomerViewSet(viewsets.ModelViewSet):
queryset = Customer.objects.all()
serializer_class = CustomerSerializer
filterset_class = CustomerFilter


class CountryViewSet(viewsets.ModelViewSet):
queryset = Country.objects.all()
serializer_class = CountrySerializer
filterset_class = CountryFilter


class CityViewSet(DetailedViewSetMixin, viewsets.ModelViewSet):
queryset = City.objects.select_related("country").all()
serializer_class = CitySerializer
filterset_class = CityFilter
serializer_action_classes = {
"detailed_list": CityDetailedSerializer,
"detail": CityDetailedSerializer,
}


class AddressViewSet(DetailedViewSetMixin, viewsets.ModelViewSet):
queryset = Address.objects.all()
serializer_class = AddressSerializer
filterset_class = AddressFilter
serializer_action_classes = {
"detailed_list": AddressDetailedSerializer,
"detail": AddressDetailedSerializer,
}


19 changes: 19 additions & 0 deletions ecommerce/ecommerce/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,27 @@
from django.urls import path, include

from ecommerce.router import router

from products.views import ProductViewSet, CategoryViewSet
from baskets.views import BasketItemViewSet, BasketViewSet
from customers.views import CustomerViewSet, AddressViewSet, CityViewSet, CountryViewSet
from orders.views import OrderItemViewSet, OrderViewSet, BillingAddressViewSet, ShippingAddressViewSet, OrderBankAccountViewSet
from payments.views import BankAccountViewSet, BankViewSet
from products.views import ProductViewSet, CategoryViewSet

router.register("customers", CustomerViewSet)
router.register("addresses", AddressViewSet)
router.register("cities", CityViewSet)
router.register("countries", CountryViewSet)
router.register("order-items", OrderItemViewSet)
router.register("orders", OrderViewSet)
router.register("order-bank-accounts", OrderBankAccountViewSet)
router.register("banks", BankViewSet)
router.register("bank-accounts", BankAccountViewSet)
router.register("billing-addresses", BillingAddressViewSet)
router.register("shipping-addresses", ShippingAddressViewSet)
router.register("basket-items", BasketItemViewSet)
router.register("baskets", BasketViewSet)
router.register("products", ProductViewSet)
router.register("categories", CategoryViewSet)

Expand Down
47 changes: 47 additions & 0 deletions ecommerce/orders/filters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
from django.utils.translation import gettext_lazy as _
from django_filters import rest_framework as filters

from orders import enums
from orders.models import OrderItem, Order, OrderBankAccount, ShippingAddress, BillingAddress

from customers.filters import CityFilter, CustomerFilter
from baskets.filters import BasketFilter


class BillingAddressFilter(filters.FilterSet):

class Meta:
model = BillingAddress
fields = ("full_name", "city")


class ShippingAddressFilter(filters.FilterSet):

class Meta:
model = ShippingAddress
fields = ("full_name", "city")


class OrderFilter(filters.FilterSet):

class Meta:
model = Order
fields = ("customer", "basket", "status")


class OrderItemFilter(filters.FilterSet):

class Meta:
model = OrderItem
fields = ("order", "product")


class OrderBankAccountFilter(filters.FilterSet):

class Meta:
model = OrderBankAccount
fields = ("name", "iban", "bank_name", "order")




61 changes: 61 additions & 0 deletions ecommerce/orders/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
from rest_framework import serializers

from orders.models import Order, OrderItem, BillingAddress, ShippingAddress, OrderBankAccount
from customers.serializers import CustomerSerializer, CitySerializer
from baskets.serializers import BasketSerializer


class BillingAddressSerializer(serializers.ModelSerializer):

class Meta:
model = BillingAddress
fields = ("id", "full_name", "line_1", "line_2", "phone", "district", "zipcode", "city")


class ShippingAddressSerializer(serializers.ModelSerializer):

class Meta:
model = ShippingAddress
fields = ("id", "full_name", "line_1", "line_2", "phone", "district", "zipcode", "city")


class OrderBankAccountSerializer(serializers.ModelSerializer):

class Meta:
model = OrderBankAccount
fields = ("id", "name", "iban", "bank_name", "order")


class OrderSerializer(serializers.ModelSerializer):

class Meta:
model = Order
fields = ("id", "customer", "basket", "status", "total_price")


class OrderItemSerializer(serializers.ModelSerializer):

class Meta:
model = OrderItem
fields = ("id", "order", "product", "price", )


class BillingAddressDetailedSerializer(BillingAddressSerializer):
city = CitySerializer()


class ShippingAddressDetailedSerializer(ShippingAddressSerializer):
city = CitySerializer()


class OrderBankAccountDetailedSerializer(OrderBankAccountSerializer):
order = OrderSerializer()


class OrderDetailedSerializer(OrderSerializer):
basket = BasketSerializer()
customer = CustomerSerializer()


class OrderItemDetailedSerializer(OrderItemSerializer):
order = OrderSerializer()
Loading