143 lines
3.6 KiB
Python
143 lines
3.6 KiB
Python
from django.contrib.auth.models import User
|
|
from rest_framework import serializers
|
|
|
|
from cookbook.models import MealPlan, MealType, Recipe, ViewLog, UserPreference, Storage, Sync, SyncLog, Keyword, Unit, Ingredient, Comment, RecipeImport, RecipeBook, RecipeBookEntry, ShareLink, CookLog, Food, Step
|
|
from cookbook.templatetags.custom_tags import markdown
|
|
|
|
|
|
class UserNameSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = User
|
|
fields = ('id', 'username', 'first_name', 'last_name')
|
|
|
|
|
|
class UserPreferenceSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = UserPreference
|
|
fields = '__all__'
|
|
read_only_fields = ['user']
|
|
|
|
|
|
class StorageSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Storage
|
|
fields = '__all__'
|
|
|
|
|
|
class SyncSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Sync
|
|
fields = '__all__'
|
|
|
|
|
|
class SyncLogSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = SyncLog
|
|
fields = '__all__'
|
|
|
|
|
|
class KeywordSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Keyword
|
|
fields = '__all__'
|
|
|
|
|
|
class UnitSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Unit
|
|
fields = '__all__'
|
|
|
|
|
|
class FoodSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Food
|
|
fields = '__all__'
|
|
|
|
|
|
class IngredientSerializer(serializers.ModelSerializer):
|
|
food = FoodSerializer(read_only=True)
|
|
unit = UnitSerializer(read_only=True)
|
|
|
|
class Meta:
|
|
model = Ingredient
|
|
fields = '__all__'
|
|
|
|
|
|
class StepSerializer(serializers.ModelSerializer):
|
|
ingredients = IngredientSerializer(many=True, read_only=True)
|
|
|
|
class Meta:
|
|
model = Step
|
|
fields = '__all__'
|
|
|
|
|
|
class RecipeSerializer(serializers.ModelSerializer):
|
|
steps = StepSerializer(many=True, read_only=True)
|
|
keywords = KeywordSerializer(many=True, read_only=True)
|
|
|
|
class Meta:
|
|
model = Recipe
|
|
fields = '__all__'
|
|
|
|
|
|
class RecipeImportSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = RecipeImport
|
|
fields = '__all__'
|
|
|
|
|
|
class CommentSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Comment
|
|
fields = '__all__'
|
|
|
|
|
|
class RecipeBookSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = RecipeBook
|
|
fields = '__all__'
|
|
read_only_fields = ['id', 'created_by']
|
|
|
|
|
|
class RecipeBookEntrySerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = RecipeBookEntry
|
|
fields = '__all__'
|
|
|
|
|
|
class MealTypeSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = MealType
|
|
fields = '__all__'
|
|
|
|
|
|
class MealPlanSerializer(serializers.ModelSerializer):
|
|
recipe_name = serializers.ReadOnlyField(source='recipe.name')
|
|
meal_type_name = serializers.ReadOnlyField(source='meal_type.name')
|
|
note_markdown = serializers.SerializerMethodField('get_note_markdown')
|
|
|
|
def get_note_markdown(self, obj):
|
|
return markdown(obj.note)
|
|
|
|
class Meta:
|
|
model = MealPlan
|
|
fields = ('id', 'title', 'recipe', 'note', 'note_markdown', 'date', 'meal_type', 'created_by', 'shared', 'recipe_name', 'meal_type_name')
|
|
|
|
|
|
class ShareLinkSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = ShareLink
|
|
fields = '__all__'
|
|
|
|
|
|
class CookLogSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = CookLog
|
|
fields = '__all__'
|
|
|
|
|
|
class ViewLogSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = ViewLog
|
|
fields = '__all__'
|