Skip to content

Commit 2e67a5e

Browse files
committed
refactor(restaurants): add nested viewset based on apiviews for foods, remove views file
1 parent cc48161 commit 2e67a5e

File tree

6 files changed

+215
-150
lines changed

6 files changed

+215
-150
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Generated by Django 5.0.4 on 2024-08-14 22:24
2+
3+
import django.db.models.deletion
4+
import uuid
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
initial = True
11+
12+
dependencies = [
13+
('drivers', '0003_alter_driverassignment_options_driver_is_active_and_more'),
14+
('orders', '0009_remove_historicalorder_zip_code_and_more'),
15+
('restaurants', '0003_remove_food_is_gluten_free_remove_food_is_spicy_and_more'),
16+
]
17+
18+
operations = [
19+
migrations.CreateModel(
20+
name='Revenue',
21+
fields=[
22+
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
23+
('is_available', models.BooleanField(db_index=True, default=True)),
24+
('created_at', models.DateTimeField(auto_now_add=True)),
25+
('updated_at', models.DateTimeField(auto_now=True)),
26+
('amount', models.DecimalField(decimal_places=2, max_digits=10)),
27+
('transaction_type', models.CharField(choices=[('delivery_earnings', 'Delivery Earnings'), ('restaurant_commission', 'Restaurant Commission'), ('driver_withdrawal', 'Driver Withdrawal'), ('promotional_bonus', 'Promotional Bonus'), ('referral_bonus', 'Referral Bonus'), ('other_income', 'Other Income'), ('expense', 'Expense'), ('adjustment', 'Adjustment'), ('marketing_expense', 'Marketing Expense'), ('operational_expense', 'Operational Expense'), ('subscription_revenue', 'Subscription Revenue'), ('partnership_revenue', 'Partnership Revenue'), ('refund', 'Refund'), ('taxes', 'Taxes'), ('loan_repayment', 'Loan Repayment')], max_length=30)),
28+
('driver_id', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.DO_NOTHING, to='drivers.driver')),
29+
('order_id', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.DO_NOTHING, to='orders.order')),
30+
('restaurant_id', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.DO_NOTHING, to='restaurants.restaurant')),
31+
],
32+
options={
33+
'verbose_name': 'Revenue',
34+
'verbose_name_plural': 'Revenues',
35+
'ordering': ['pk'],
36+
'indexes': [models.Index(fields=['order_id'], name='finances_re_order_i_b4cb88_idx'), models.Index(fields=['driver_id'], name='finances_re_driver__9d8cad_idx'), models.Index(fields=['restaurant_id'], name='finances_re_restaur_e4a447_idx'), models.Index(fields=['transaction_type'], name='finances_re_transac_57917d_idx')],
37+
},
38+
),
39+
]
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Generated by Django 5.0.4 on 2024-08-14 22:24
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('restaurants', '0002_alter_food_price_alter_food_sale_price_and_more'),
10+
]
11+
12+
operations = [
13+
migrations.RemoveField(
14+
model_name='food',
15+
name='is_gluten_free',
16+
),
17+
migrations.RemoveField(
18+
model_name='food',
19+
name='is_spicy',
20+
),
21+
migrations.RemoveField(
22+
model_name='food',
23+
name='is_vegetarian',
24+
),
25+
migrations.RemoveField(
26+
model_name='historicalfood',
27+
name='is_gluten_free',
28+
),
29+
migrations.RemoveField(
30+
model_name='historicalfood',
31+
name='is_spicy',
32+
),
33+
migrations.RemoveField(
34+
model_name='historicalfood',
35+
name='is_vegetarian',
36+
),
37+
]

apps/restaurants/routers.py

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,41 @@
55
from rest_framework.routers import DefaultRouter
66
from rest_framework_nested.routers import NestedSimpleRouter
77

8-
from .viewsets import RestaurantViewSet, CategoryViewSet, RestaurantReviewViewSet
8+
from .viewsets import (
9+
RestaurantViewSet,
10+
CategoryViewSet,
11+
FoodViewSet,
12+
RestaurantReviewViewSet,
13+
)
914

1015
router = DefaultRouter()
11-
router.register(r"restaurants", RestaurantViewSet, basename="restaurant")
12-
13-
nested_router = NestedSimpleRouter(router, r"restaurants", lookup="restaurant")
16+
router.register(
17+
r"restaurants",
18+
RestaurantViewSet,
19+
basename="restaurant",
20+
)
1421

15-
nested_router.register(
16-
r"reviews",
17-
RestaurantReviewViewSet,
18-
basename="restaurant-review",
22+
nested_router = NestedSimpleRouter(
23+
router,
24+
r"restaurants",
25+
lookup="restaurant",
1926
)
27+
2028
nested_router.register(
2129
r"categories",
2230
CategoryViewSet,
2331
basename="restaurant-category",
2432
)
33+
nested_router.register(
34+
r"foods",
35+
FoodViewSet,
36+
basename="restaurant-food",
37+
)
38+
nested_router.register(
39+
r"reviews",
40+
RestaurantReviewViewSet,
41+
basename="restaurant-review",
42+
)
2543

2644
urlpatterns = [
2745
path("api/v1/", include(router.urls)),

apps/restaurants/serializers.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -125,20 +125,18 @@ class Meta:
125125
class FoodReadSerializer(ReadOnlyFieldsMixin, serializers.ModelSerializer):
126126
"""Serializer for Food model (List/retrieve)."""
127127

128-
category = serializers.StringRelatedField()
128+
category_id = serializers.StringRelatedField()
129129

130130
class Meta:
131131
model = Food
132132
fields = [
133133
"id",
134134
"name",
135+
"description",
135136
"price",
136137
"sale_price",
137138
"image",
138-
"category",
139-
"is_vegetarian",
140-
"is_gluten_free",
141-
"is_spicy",
139+
"category_id",
142140
"is_featured",
143141
"created_at",
144142
"updated_at",
@@ -159,13 +157,10 @@ class Meta:
159157
"name",
160158
"price",
161159
"image",
162-
"category",
163-
"is_vegetarian",
164-
"is_gluten_free",
165-
"is_spicy",
160+
"category_id",
166161
"is_featured",
167162
]
168-
extra_kwargs = {"category": {"required": True}}
163+
extra_kwargs = {"category_id": {"required": True}}
169164

170165

171166
class FoodMinimalSerializer(ReadOnlyFieldsMixin, serializers.ModelSerializer):
@@ -176,4 +171,10 @@ class Meta:
176171
fields = [
177172
"id",
178173
"name",
174+
"price",
175+
"sale_price",
176+
"image",
177+
"category_id",
178+
"created_at",
179+
"updated_at",
179180
]

apps/restaurants/views.py

Lines changed: 0 additions & 125 deletions
This file was deleted.

0 commit comments

Comments
 (0)