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
15 changes: 15 additions & 0 deletions ecommerce/baskets/filters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from django_filters import rest_framework as filters

from baskets.models import Basket, BasketItem


class BasketFilter(filters.FilterSet):
class Meta:
model = Basket
fields = ("customer", "status")


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

from baskets.models import *
from customers.serializers import CustomerSerializer


class BasketSerializer(serializers.ModelSerializer):
class Meta:
model = Basket
fields = "id", "customer", "status", "created_at", "modified_at"


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


class BasketDetailedSerializer(serializers.ModelSerializer):
customer = CustomerSerializer()
basket_items = BasketSerializer(many=True)

class Meta:
model = Basket
fields = "id", "customer", "status", "created_at", "modified_at"


class BasketItemDetailedSerializer(serializers.ModelSerializer):
basket = BasketSerializer()

class Meta:
model = BasketItem
fields = "id", "basket", "product", "quantity", "price"
26 changes: 23 additions & 3 deletions ecommerce/baskets/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
from django.shortcuts import render

# Create your views here.
# from rest_framework import viewsets
Copy link
Owner

Choose a reason for hiding this comment

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

bu dosyanin tamamini neden yorum yaptik?

#
# from core.mixins import DetailedViewSetMixin
# from baskets.filters import BasketFilter
# from baskets.filters import BasketItemFilter
# from baskets.models import BasketItem, Basket
# from products.serializers import ProductSerializer, CategorySerializer, \
# ProductDetailedSerializer
#
#
# class ProductViewSet(DetailedViewSetMixin, viewsets.ModelViewSet):
# queryset = Product.objects.all()
# serializer_class = ProductSerializer
# filterset_class = ProductFilter
# serializer_action_classes = {
# "detailed_list": ProductDetailedSerializer,
# "detailed": ProductDetailedSerializer,
# }
#
#
# class CategoryViewSet(viewsets.ModelViewSet):
# queryset = Category.objects.all()
# serializer_class = CategorySerializer
4 changes: 4 additions & 0 deletions ecommerce/core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,7 @@ class BaseAbstractModel(models.Model):

class Meta:
abstract = True


def get_all_base_abstract_model_attrs():
return "created_at", "modified_att"
27 changes: 27 additions & 0 deletions ecommerce/customers/filters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
from django_filters import rest_framework as filters

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


class CityFilter(filters.FilterSet):
class Meta:
model = City
fields = ("name", "country")


class CountryFilter(filters.FilterSet):
class Meta:
model = Country
fields = ("name",)


class CustomerFilter(filters.FilterSet):
class Meta:
model = Customer
fields = get_all_customer_attrs()


class AddressFilter(filters.FilterSet):
class Meta:
model = Address
fields = get_all_address_attrs()
11 changes: 10 additions & 1 deletion ecommerce/customers/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,10 @@ def __str__(self):
return f"{self.first_name} - {self.last_name}"


def get_all_customer_attrs():
return "first_name", "last_name", "email", "is_staff", "is_active", "date_joined"


class Address(BaseAbstractModel):
"""
Address model
Expand All @@ -117,7 +121,8 @@ class Address(BaseAbstractModel):
line_1 = models.CharField(max_length=255, verbose_name=_("Address Line 1"))
line_2 = models.CharField(max_length=255, verbose_name=_("Address Line 2"), null=True, blank=True)
phone = models.CharField(
max_length=20, verbose_name=_("Phone Number"), validators=[phonenumber_validator], help_text=_("Phone number must be entered in the format: +901234567890. "))
max_length=20, verbose_name=_("Phone Number"), validators=[phonenumber_validator],
help_text=_("Phone number must be entered in the format: +901234567890. "))
district = models.CharField(max_length=255, verbose_name=_("District"))
zipcode = models.CharField(max_length=20, verbose_name=_("Zip Code"))
city = models.ForeignKey(City, verbose_name=_("City"), on_delete=models.PROTECT)
Expand All @@ -129,3 +134,7 @@ class Meta:

def __str__(self):
return f"{self.name} - {self.line_1} - {self.line_2} - {self.district} - {self.city}"


def get_all_address_attrs():
return "customer", "name", "full_name", "line_1", "line_2", "phone", "district", "zipcode", "city", "is_default"
47 changes: 47 additions & 0 deletions ecommerce/customers/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
from django.db.transaction import atomic
from rest_framework import serializers

from baskets.serializers import BasketSerializer
from core.models import get_all_base_abstract_model_attrs
from customers.models import *


class CitySerializer(serializers.ModelSerializer):
class Meta:
model = City
fields = "name",


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


class CustomerSerializer(serializers.ModelSerializer):
class Meta:
model = Customer
fields = get_all_customer_attrs() + ("id") + get_all_base_abstract_model_attrs


class AddressSerializer(serializers.ModelSerializer):
class Meta:
model = Address
fields = ("id",) + get_all_customer_attrs() + get_all_base_abstract_model_attrs()


class DetailedCustomerSerializer(serializers.ModelSerializer):
addresses = AddressSerializer(many=True)
baskets = BasketSerializer(many=True)

class Meta:
model = Address
fields = ("id",) + get_all_customer_attrs() + get_all_base_abstract_model_attrs()


class DetailedAddressSerializer(serializers.ModelSerializer):
customer = CustomerSerializer()

class Meta:
model = Address
fields = ("id",) + get_all_customer_attrs() + get_all_base_abstract_model_attrs()
36 changes: 36 additions & 0 deletions ecommerce/orders/filters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from django_filters import rest_framework as filters

from customers.models import City, Country, Customer, get_all_customer_attrs, Address, get_all_address_attrs
from orders.models import BillingAddress, get_all_billing_address_attrs, ShippingAddress, \
get_all_shipping_address_attrs, get_all_order_bank_account_attrs, OrderBankAccount, Order, get_all_order_attrs, \
OrderItem, get_all_order_item_attrs


class BillingAddressFilter(filters.FilterSet):
class Meta:
model = BillingAddress
fields = get_all_billing_address_attrs()


class ShippingAddressFilter(filters.FilterSet):
class Meta:
model = ShippingAddress
fields = get_all_shipping_address_attrs()


class OrderBankAccountFilter(filters.FilterSet):
class Meta:
model = OrderBankAccount
fields = get_all_order_bank_account_attrs()


class OrderFilter(filters.FilterSet):
class Meta:
model = Order
fields = get_all_order_attrs()


class OrderItemFilter(filters.FilterSet):
class Meta:
model = OrderItem
fields = get_all_order_item_attrs()
26 changes: 23 additions & 3 deletions ecommerce/orders/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ def __str__(self):
return f"{self.full_name} - {self.line_1} - {self.line_2} - {self.district} - {self.city}"


def get_all_billing_address_attrs():
return "full_name", "line_1", "line_2", "phone", "district", "zipcode", "city"


class ShippingAddress(BaseAbstractModel):
"""
Shipping Address Model
Expand All @@ -48,6 +52,10 @@ def __str__(self):
return f"{self.full_name} - {self.line_1} - {self.line_2} - {self.district} - {self.city}"


def get_all_shipping_address_attrs():
return "full_name", "line_1", "line_2", "phone", "district", "zipcode", "city"


class OrderBankAccount(BaseAbstractModel):
"""
Order Bank Account Model
Expand All @@ -65,13 +73,17 @@ def __str__(self):
return f"{self.name} - {self.order}"


def get_all_order_bank_account_attrs():
return "name", "iban", "bank_name", "order"


class Order(BaseAbstractModel):
"""
Order Model
"""
customer = models.ForeignKey("customers.Customer", verbose_name=_("Customer"), on_delete=models.PROTECT)
basket = models.ForeignKey("baskets.Basket", verbose_name=_("Basket"), on_delete=models.PROTECT)
status = models.CharField(choices=enums.OrderStatus.choices,
status = models.CharField(choices=enums.OrderStatus.choices,
default=enums.OrderStatus.PENDING, max_length=20, verbose_name=_("Status"))
billing_address = models.ForeignKey(
BillingAddress, verbose_name=_("Billing Address"), on_delete=models.PROTECT)
Expand All @@ -87,6 +99,10 @@ def __str__(self):
return f"{self.customer} - {self.basket}"


def get_all_order_attrs():
return "customer", "basket", "status", "billing_address", "shipping_address", "total_price"


class OrderItem(BaseAbstractModel):
"""
Order Item Model
Expand All @@ -98,6 +114,10 @@ class OrderItem(BaseAbstractModel):
class Meta:
verbose_name = _("Order Item")
verbose_name_plural = _("Order Items")

def __str__(self):
return f"{self.order} - {self.product} - {self.price}"
return f"{self.order} - {self.product} - {self.price}"


def get_all_order_item_attrs():
return "order", "product", "price"
63 changes: 63 additions & 0 deletions ecommerce/orders/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
from rest_framework import serializers

from core.models import get_all_base_abstract_model_attrs
from customers.serializers import CustomerSerializer
from orders.models import *


class BillingAddressSerializer(serializers.ModelSerializer):
class Meta:
model = BillingAddress
fields = get_all_billing_address_attrs() + get_all_base_abstract_model_attrs() + ("id",)


class ShippingAddressSerializer(serializers.ModelSerializer):
class Meta:
model = ShippingAddress
fields = get_all_shipping_address_attrs() + get_all_base_abstract_model_attrs() + "id"


class OrderBankAccountSerializer(serializers.ModelSerializer):
class Meta:
model = OrderBankAccount
fields = get_all_order_bank_account_attrs() + get_all_base_abstract_model_attrs() + "id"


class OrderSerializer(serializers.ModelSerializer):
class Meta:
model = Order
fields = get_all_order_attrs() + get_all_base_abstract_model_attrs() + "id"


class OrderItemSerializer(serializers.ModelSerializer):
class Meta:
model = OrderItem
fields = get_all_order_item_attrs() + get_all_base_abstract_model_attrs() + "id"


class OrderBankAccountDetailedSerializer(serializers.ModelSerializer):
order = OrderSerializer()

class Meta:
model = OrderBankAccount
fields = get_all_order_bank_account_attrs() + get_all_base_abstract_model_attrs() + "id"


class OrderDetailedSerializer(serializers.ModelSerializer):
order_bank_accounts = OrderBankAccountSerializer(many=True)
customer = CustomerSerializer()
billing_address = BillingAddressSerializer()
shipping_address = ShippingAddressSerializer()
order_items = OrderItemSerializer(many=True)

class Meta:
model = Order
fields = get_all_order_attrs() + get_all_base_abstract_model_attrs() + "id"


class OrderItemSerializer(serializers.ModelSerializer):
order = OrderSerializer()

class Meta:
model = OrderItem
fields = get_all_order_item_attrs() + get_all_base_abstract_model_attrs() + "id"
36 changes: 36 additions & 0 deletions ecommerce/payments/filters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from django_filters import rest_framework as filters

from customers.models import City, Country, Customer, get_all_customer_attrs, Address, get_all_address_attrs
from orders.models import BillingAddress, get_all_billing_address_attrs, ShippingAddress, \
get_all_shipping_address_attrs, get_all_order_bank_account_attrs, OrderBankAccount, Order, get_all_order_attrs, \
OrderItem, get_all_order_item_attrs


class BillingAddressFilter(filters.FilterSet):
class Meta:
model = BillingAddress
fields = get_all_billing_address_attrs()


class ShippingAddressFilter(filters.FilterSet):
class Meta:
model = ShippingAddress
fields = get_all_shipping_address_attrs()


class OrderBankAccountFilter(filters.FilterSet):
class Meta:
model = OrderBankAccount
fields = get_all_order_bank_account_attrs()


class OrderFilter(filters.FilterSet):
class Meta:
model = Order
fields = get_all_order_attrs()


class OrderItemFilter(filters.FilterSet):
class Meta:
model = OrderItem
fields = get_all_order_item_attrs()
Loading