Skip to content

Commit 174c1a4

Browse files
Merge pull request #71 from druling/complete_order
adding favourite serializer and service
2 parents 786f555 + dfeb4f2 commit 174c1a4

File tree

23 files changed

+619
-5
lines changed

23 files changed

+619
-5
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# Generated by Django 4.2.17 on 2025-02-25 04:12
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
import uuid
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
initial = True
11+
12+
dependencies = [
13+
("item", "0002_addon_itemvariation_itemaddon"),
14+
("branch", "0003_branch_is_active"),
15+
]
16+
17+
operations = [
18+
migrations.CreateModel(
19+
name="Favourite",
20+
fields=[
21+
(
22+
"id",
23+
models.UUIDField(
24+
default=uuid.uuid4,
25+
editable=False,
26+
primary_key=True,
27+
serialize=False,
28+
),
29+
),
30+
("created_at", models.DateTimeField(auto_now_add=True)),
31+
("updated_at", models.DateTimeField(auto_now=True)),
32+
("deleted_at", models.DateTimeField(blank=True, null=True)),
33+
(
34+
"branch",
35+
models.ForeignKey(
36+
on_delete=django.db.models.deletion.CASCADE,
37+
related_name="favourites",
38+
to="branch.branch",
39+
),
40+
),
41+
(
42+
"item",
43+
models.ForeignKey(
44+
on_delete=django.db.models.deletion.CASCADE,
45+
related_name="favourites",
46+
to="item.item",
47+
),
48+
),
49+
],
50+
options={
51+
"db_table": "favourite",
52+
},
53+
),
54+
migrations.CreateModel(
55+
name="CustomerFavourite",
56+
fields=[
57+
(
58+
"id",
59+
models.UUIDField(
60+
default=uuid.uuid4,
61+
editable=False,
62+
primary_key=True,
63+
serialize=False,
64+
),
65+
),
66+
("created_at", models.DateTimeField(auto_now_add=True)),
67+
("updated_at", models.DateTimeField(auto_now=True)),
68+
("deleted_at", models.DateTimeField(blank=True, null=True)),
69+
("note", models.CharField(blank=True, max_length=200, null=True)),
70+
(
71+
"branch",
72+
models.ForeignKey(
73+
on_delete=django.db.models.deletion.CASCADE,
74+
related_name="customer_favourites",
75+
to="branch.branch",
76+
),
77+
),
78+
(
79+
"item",
80+
models.ForeignKey(
81+
on_delete=django.db.models.deletion.CASCADE,
82+
related_name="customer_favourites",
83+
to="item.item",
84+
),
85+
),
86+
],
87+
options={
88+
"db_table": "customer_favourite",
89+
},
90+
),
91+
]

favourite/serializer/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from .favourite import FavouriteSerializer
2+
from .customer_favourite import CustomerFavouriteSerializer
3+
4+
__all__ = [FavouriteSerializer, CustomerFavouriteSerializer]
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from rest_framework import serializers
2+
3+
from branch.models import Branch
4+
from commons.serializer.BaseModelSerializer import BaseModelSerializer
5+
from item.models import Item
6+
7+
from ..models import CustomerFavourite
8+
9+
10+
class CustomerFavouriteSerializer(BaseModelSerializer):
11+
branch_id = serializers.PrimaryKeyRelatedField(
12+
queryset=Branch.objects.all(), required=True, source="branch"
13+
)
14+
item_id = serializers.PrimaryKeyRelatedField(
15+
queryset=Item.objects.all(), required=True, source="item"
16+
)
17+
18+
class Meta:
19+
model = CustomerFavourite
20+
fields = [
21+
"id",
22+
"branch_id",
23+
"item_id",
24+
"note",
25+
]

favourite/serializer/favourite.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from rest_framework import serializers
2+
3+
from branch.models import Branch
4+
from commons.serializer.BaseModelSerializer import BaseModelSerializer
5+
from item.models import Item
6+
7+
from ..models import Favourite
8+
9+
10+
class FavouriteSerializer(BaseModelSerializer):
11+
branch_id = serializers.PrimaryKeyRelatedField(
12+
queryset=Branch.objects.all(), required=True, source="branch"
13+
)
14+
item_id = serializers.PrimaryKeyRelatedField(
15+
queryset=Item.objects.all(), required=True, source="item"
16+
)
17+
18+
class Meta:
19+
model = Favourite
20+
fields = [
21+
"id",
22+
"branch_id",
23+
"item_id",
24+
]

favourite/services/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from .customer_favourite import CustomerFavouriteService
2+
from .favourite import FavouriteService
3+
4+
__all__ = [FavouriteService, CustomerFavouriteService]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import logging
2+
3+
from django.db import transaction
4+
5+
from commons.service.BaseService import BaseService
6+
from ..models import CustomerFavourite
7+
8+
logger = logging.getLogger(__name__)
9+
10+
11+
class CustomerFavouriteService(BaseService):
12+
def __init__(self):
13+
super().__init__(CustomerFavourite)
14+
15+
def create(self):
16+
with transaction.atomic():
17+
return

favourite/services/favourite.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import logging
2+
3+
from django.db import transaction
4+
5+
from commons.service.BaseService import BaseService
6+
from ..models import Favourite
7+
8+
logger = logging.getLogger(__name__)
9+
10+
11+
class FavouriteService(BaseService):
12+
def __init__(self):
13+
super().__init__(Favourite)
14+
15+
def create(self):
16+
with transaction.atomic():
17+
return
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Generated by Django 4.2.17 on 2025-02-25 04:12
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
import uuid
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
("item", "0001_initial"),
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name="Addon",
17+
fields=[
18+
(
19+
"id",
20+
models.UUIDField(
21+
default=uuid.uuid4,
22+
editable=False,
23+
primary_key=True,
24+
serialize=False,
25+
),
26+
),
27+
("created_at", models.DateTimeField(auto_now_add=True)),
28+
("updated_at", models.DateTimeField(auto_now=True)),
29+
("deleted_at", models.DateTimeField(blank=True, null=True)),
30+
("name", models.CharField(max_length=100)),
31+
("description", models.TextField(blank=True, null=True)),
32+
("price", models.DecimalField(decimal_places=2, max_digits=10)),
33+
("remaining_quantities", models.PositiveIntegerField(default=0)),
34+
("ingredients", models.JSONField(blank=True, null=True)),
35+
],
36+
options={
37+
"db_table": "addon",
38+
},
39+
),
40+
migrations.CreateModel(
41+
name="ItemVariation",
42+
fields=[
43+
(
44+
"id",
45+
models.UUIDField(
46+
default=uuid.uuid4,
47+
editable=False,
48+
primary_key=True,
49+
serialize=False,
50+
),
51+
),
52+
("created_at", models.DateTimeField(auto_now_add=True)),
53+
("updated_at", models.DateTimeField(auto_now=True)),
54+
("deleted_at", models.DateTimeField(blank=True, null=True)),
55+
("name", models.CharField(max_length=100)),
56+
("description", models.TextField(blank=True, null=True)),
57+
("price", models.DecimalField(decimal_places=2, max_digits=10)),
58+
("ingredients", models.JSONField(blank=True, null=True)),
59+
(
60+
"item",
61+
models.ForeignKey(
62+
on_delete=django.db.models.deletion.CASCADE,
63+
related_name="variations",
64+
to="item.item",
65+
),
66+
),
67+
],
68+
options={
69+
"db_table": "item_variation",
70+
},
71+
),
72+
migrations.CreateModel(
73+
name="ItemAddon",
74+
fields=[
75+
(
76+
"id",
77+
models.UUIDField(
78+
default=uuid.uuid4,
79+
editable=False,
80+
primary_key=True,
81+
serialize=False,
82+
),
83+
),
84+
("created_at", models.DateTimeField(auto_now_add=True)),
85+
("updated_at", models.DateTimeField(auto_now=True)),
86+
("deleted_at", models.DateTimeField(blank=True, null=True)),
87+
(
88+
"addon",
89+
models.ForeignKey(
90+
on_delete=django.db.models.deletion.CASCADE,
91+
related_name="items",
92+
to="item.addon",
93+
),
94+
),
95+
(
96+
"item",
97+
models.ForeignKey(
98+
on_delete=django.db.models.deletion.CASCADE,
99+
related_name="addons",
100+
to="item.item",
101+
),
102+
),
103+
],
104+
options={
105+
"db_table": "item_addon",
106+
},
107+
),
108+
]

order/enums/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
from .status import OrderStatus
2+
from .item_status import ItemStatus
23

3-
__all__ = [OrderStatus]
4+
__all__ = [OrderStatus, ItemStatus]

order/enums/item_status.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from commons.enums.BaseEnum import BaseEnum
2+
3+
4+
class ItemStatus(BaseEnum):
5+
PENDING = "PENDING"
6+
COOKING = "COOKING"
7+
SERVED = "SERVED"
8+
CANCELLED = "CANCELLED"

0 commit comments

Comments
 (0)