Skip to content

Commit ee5a4dc

Browse files
committed
refactor(menus): update views and serializers
1 parent 982eed5 commit ee5a4dc

File tree

8 files changed

+42
-17
lines changed

8 files changed

+42
-17
lines changed

apps/menus/serializers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
from rest_framework.serializers import ModelSerializer
44

55
from apps.users.serializers import UserSerializer
6-
from apps.restaurants.serializers import RestaurantSerializer
6+
from apps.restaurants.serializers import RestaurantListSerializer
77
from apps.foods.serializers import FoodSerializer
88
from .models import Menu, MenuItem
99

1010

1111
class MenuSerializer(ModelSerializer):
1212
"""Serializer for Menu model."""
1313
user = UserSerializer(read_only=True)
14-
restaurant = RestaurantSerializer(read_only=True)
14+
restaurant = RestaurantListSerializer(read_only=True)
1515

1616
class Meta:
1717
"""Meta definition for MenuSerializer."""

apps/restaurants/serializers.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,17 @@ class Meta:
2828
"created_at",
2929
"updated_at"
3030
]
31+
32+
33+
class RestaurantListSerializer(serializers.ModelSerializer):
34+
"""Serializer for Restaurant model (List only)."""
35+
36+
class Meta:
37+
"""Meta definition for RestaurantSerializer."""
38+
model = Restaurant
39+
fields = [
40+
"id",
41+
"name",
42+
"slug",
43+
"image",
44+
]

apps/restaurants/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
path("api/v1/restaurants/", RestaurantListAPIView.as_view()),
1010
path("api/v1/restaurants/<uuid:restaurant_id>/",
1111
RestaurantDetailAPIView.as_view()),
12+
# path("api/v1/restaurants/<uuid:restaurant_id>/menus/", RestaurantDetailAPIView.as_view()),
1213
]

apps/restaurants/views.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
from rest_framework.response import Response
77
from rest_framework import status
88

9+
from apps.utilities.pagination import LargeSetPagination
10+
from apps.menus.models import Menu, MenuItem
11+
from apps.menus.serializers import MenuItemSerializer
912
from .models import Restaurant
1013
from .serializers import RestaurantSerializer
1114
from .permissions import IsBusinessOwnerOrReadOnly
12-
from apps.utilities.pagination import LargeSetPagination
1315

1416

1517
class RestaurantListAPIView(APIView):
@@ -80,3 +82,19 @@ def delete(self, request, restaurant_id):
8082
store = self.get_object(restaurant_id)
8183
store.delete()
8284
return Response(status=status.HTTP_204_NO_CONTENT)
85+
86+
87+
class RestaurantMenuAPIView(APIView):
88+
# permission_classes = []
89+
90+
def get(self, request, restaurant_id, format=None):
91+
try:
92+
menu = Menu.objects.get(restaurant=restaurant_id)
93+
menu_items = MenuItem.objects.filter(menu=menu)
94+
serializer = MenuItemSerializer(menu_items, many=True)
95+
return Response(serializer.data)
96+
except Menu.DoesNotExist:
97+
return Response(
98+
{"detail": "Menu not found"},
99+
status=status.HTTP_404_NOT_FOUND
100+
)

db.sqlite3

0 Bytes
Binary file not shown.

endpoints.md

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,22 @@
11
# Endpoints
22

3-
1. **Repartidores**:
4-
5-
- `GET /api/drivers`: Obtener todos los repartidores.
6-
- `GET /api/drivers/{driver_id}`: Obtener detalles de un repartidor específico.
7-
- `POST /api/drivers`: Registrar un nuevo repartidor (solo para administradores).
8-
- `PUT /api/drivers/{driver_id}`: Actualizar detalles de un repartidor (solo para administradores).
9-
- `DELETE /api/drivers/{driver_id}`: Eliminar un repartidor (solo para administradores).
10-
11-
2. **foodos**:
3+
1. **foodos**:
124

135
- `GET /api/foods`: Obtener todos los foods.
146
- `GET /api/foods/{food_id}`: Obtener detalles de un food específico.
157
- `POST /api/foods`: Crear un nuevo food (solo para propietarios de tiendas).
168
- `PUT /api/foods/{food_id}`: Actualizar detalles de un food (solo para propietarios de tiendas).
179
- `DELETE /api/foods/{food_id}`: Eliminar un food (solo para propietarios de tiendas).
1810

19-
3. **Menus**:
11+
2. **Menus**:
2012

2113
- GET /api/menu/: Obtener todos los platos del menú.
2214
- GET /api/menu/{id}/: Obtener detalles de un plato específico en el menú.
2315
- POST /api/menu/: Agregar un nuevo plato al menú.
2416
- PUT /api/menu/{id}/: Actualizar detalles de un plato en el menú.
2517
- DELETE /api/menu/{id}/: Eliminar un plato del menú.
2618

27-
4. **Pedidos**:
19+
3. **Pedidos**:
2820

2921
- `GET /api/orders`: Obtener todos los pedidos del usuario autenticado.
3022
- `GET /api/orders/{order_id}`: Obtener detalles de un pedido específico.
@@ -35,20 +27,20 @@
3527
- `GET /api/orders/{order_id}/rate`: Obtener la calificación y comentario de un pedido (solo para usuarios).
3628
- `POST /api/orders/{order_id}/rate`: Calificar y dejar un comentario sobre un pedido (solo para usuarios).
3729

38-
5. **Pagos**:
30+
4. **Pagos**:
3931

4032
- `POST /api/payments`: Realizar un pago por un pedido.
4133
- `GET /api/payments/{payment_id}`: Obtener detalles de un pago específico.
4234

43-
6. **Promociones y Descuentos**:
35+
5. **Promociones y Descuentos**:
4436

4537
- `GET /api/promotions`: Obtener todas las promociones activas.
4638
- `GET /api/promotions/{promotion_id}`: Obtener detalles de una promoción específica.
4739
- `POST /api/promotions`: Crear una nueva promoción (solo para administradores).
4840
- `PUT /api/promotions/{promotion_id}`: Actualizar una promoción (solo para administradores).
4941
- `DELETE /api/promotions/{promotion_id}`: Eliminar una promoción (solo para administradores).
5042

51-
7. **Chat en Tiempo Real**:
43+
6. **Chat en Tiempo Real**:
5244

5345
- `POST /api/chats`: Crear un nuevo chat con un repartidor o tienda.
5446
- `GET /api/chats/{chat_id}`: Obtener mensajes de un chat específico.
Binary file not shown.
2.4 KB
Binary file not shown.

0 commit comments

Comments
 (0)