Files
OneTrip/one_trip_api/api/serializers.py
Alexander Laevens 4d0388b262 +Add quantity field to ingredients
+Clear list now requires confirmation
+Confirm / Cancel buttons are now coloured
2022-12-07 02:13:34 -07:00

61 lines
2.0 KiB
Python

from rest_framework import serializers
from api.models import *
from users.serializers import UserSerializer
from asgiref.sync import async_to_sync
from channels.layers import get_channel_layer
channel_layer = get_channel_layer()
class RecipeIngredientSerializer(serializers.ModelSerializer):
class Meta:
model = RecipeIngredient
fields = ["id", "name", "quantity", "recipe"]
class ListIngredientSerializer(serializers.ModelSerializer):
class Meta:
model = ListIngredient
fields = ["id", "name", "quantity", "list", "in_cart"]
class RecipeSerializer(serializers.ModelSerializer):
ingredients = serializers.SerializerMethodField()
class Meta:
model = Recipe
fields = ["id", "name", "ingredients", "homegroup"]
read_only_fields = ["id"]
def get_ingredients(self, instance):
ingredients = instance.ingredients.all().order_by("name")
return RecipeIngredientSerializer(ingredients, many=True).data
class ListSerializer(serializers.ModelSerializer):
ingredients = serializers.SerializerMethodField()
class Meta:
model = List
fields = ["homegroup", "ingredients"]
read_only_fields = ["homegroup"]
def get_ingredients(self, instance):
ingredients = instance.ingredients.all().order_by("name")
return ListIngredientSerializer(ingredients, many=True).data
class HomegroupSerializer(serializers.ModelSerializer):
users = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
recipes = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
def create(self, validated_data):
homegroup = super().create(validated_data)
List.objects.get_or_create(homegroup=homegroup)
return homegroup
class Meta:
model = Homegroup
fields = ["id", "name", "recipes", "users", "invites"]
read_only_fields = ["recipes", "users", "invites"]
class InviteSerializer(serializers.ModelSerializer):
class Meta:
model = HomegroupInvite
fields = ["id", "homegroup", "user"]