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

from baskets.models import Basket, BasketItem


class BasketFilter(filters.FilterSet):
status = filters.CharFilter(label=_("Status"), lookup_expr="icontains")

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


class BasketItemFilter(filters.FilterSet):

class Meta:
model = BasketItem
fields = ("basket", "product", "quantity", "price")
13 changes: 5 additions & 8 deletions ecommerce/baskets/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Generated by Django 3.2.9 on 2021-12-03 17:37
Copy link
Owner

Choose a reason for hiding this comment

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

migration dosyalarina ozel durumlar haric dokunmamamizda fayda var.

# Generated by Django 3.2.9 on 2021-12-08 13:35

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion

Expand All @@ -10,8 +9,7 @@ class Migration(migrations.Migration):
initial = True

dependencies = [
('products', '0003_auto_20211203_1919'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('products', '0001_initial'),
]

operations = [
Expand All @@ -21,8 +19,7 @@ class Migration(migrations.Migration):
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created at')),
('modified_at', models.DateTimeField(auto_now=True, verbose_name='Modified at')),
('status', models.CharField(choices=[('open', 'Open'), ('submitted', 'Submitted'), ('merged', 'Merged')], max_length=10, verbose_name='Basket Status')),
('customer', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Customer')),
('status', models.CharField(choices=[('open', 'Open'), ('submitted', 'Submitted'), ('merged', 'Merged')], default='open', max_length=10, verbose_name='Basket Status')),
],
options={
'verbose_name': 'Basket',
Expand All @@ -37,8 +34,8 @@ class Migration(migrations.Migration):
('modified_at', models.DateTimeField(auto_now=True, verbose_name='Modified at')),
('quantity', models.PositiveIntegerField(verbose_name='Quantity')),
('price', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Price')),
('basket', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='baskets.basket', verbose_name='Basket')),
('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='products.product', verbose_name='Product')),
('basket', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='baskets.basket', verbose_name='Basket')),
('product', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='products.product', verbose_name='Product')),
],
options={
'verbose_name': 'Basket item',
Expand Down
37 changes: 0 additions & 37 deletions ecommerce/baskets/migrations/0002_auto_20211205_0953.py

This file was deleted.

23 changes: 23 additions & 0 deletions ecommerce/baskets/migrations/0002_basket_customer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 3.2.9 on 2021-12-08 13:35

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

initial = True

dependencies = [
('baskets', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]

operations = [
migrations.AddField(
model_name='basket',
name='customer',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='Customer'),
),
]
36 changes: 36 additions & 0 deletions ecommerce/baskets/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from rest_framework import serializers

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


class BasketSerializer(serializers.ModelSerializer):

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

Choose a reason for hiding this comment

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

id eklememizde fayda var.



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

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


class BasketItemSerializer(serializers.ModelSerializer):

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


class BasketItemDetailedSerializer(serializers.ModelSerializer):
basket = BasketDetailedSerializer()
product = ProductDetailedSerializer()

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

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


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


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

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


class CustomerFilter(filters.FilterSet):
first_name = filters.CharFilter(label=_("First Name"), lookup_expr="icontains")
last_name = filters.CharFilter(label=_("Last Name"), lookup_expr="icontains")
email = filters.CharFilter(label=_("Email"), lookup_expr="icontains")

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


class CityFilter(filters.FilterSet):
name = filters.CharFilter(label=_("Name"), lookup_expr="icontains")

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


class CountryFilter(filters.FilterSet):
name = filters.CharFilter(label=_("Name"), lookup_expr="icontains")

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


class AddressFilter(filters.FilterSet):
name = filters.CharFilter(label=_("Name"), lookup_expr="icontains")

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