serializer
This commit is contained in:
parent
4c03d1eb87
commit
ecf065db2b
@ -1,18 +1,24 @@
|
|||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from drf_writable_nested import WritableNestedModelSerializer, UniqueFieldsMixin
|
from drf_writable_nested import (UniqueFieldsMixin,
|
||||||
|
WritableNestedModelSerializer)
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework.exceptions import ValidationError
|
from rest_framework.exceptions import ValidationError
|
||||||
|
|
||||||
from cookbook.models import MealPlan, MealType, Recipe, ViewLog, UserPreference, Storage, Sync, SyncLog, Keyword, Unit, Ingredient, Comment, RecipeImport, RecipeBook, RecipeBookEntry, ShareLink, CookLog, Food, Step, ShoppingList, \
|
from cookbook.models import (Comment, CookLog, Food, Ingredient, Keyword,
|
||||||
ShoppingListEntry, ShoppingListRecipe, NutritionInformation
|
MealPlan, MealType, NutritionInformation, Recipe,
|
||||||
|
RecipeBook, RecipeBookEntry, RecipeImport,
|
||||||
|
ShareLink, ShoppingList, ShoppingListEntry,
|
||||||
|
ShoppingListRecipe, Step, Storage, Sync, SyncLog,
|
||||||
|
Unit, UserPreference, ViewLog)
|
||||||
from cookbook.templatetags.custom_tags import markdown
|
from cookbook.templatetags.custom_tags import markdown
|
||||||
|
|
||||||
|
|
||||||
class CustomDecimalField(serializers.Field):
|
class CustomDecimalField(serializers.Field):
|
||||||
"""
|
"""
|
||||||
Custom decimal field to normalize useless decimal places and allow commas as decimal separators
|
Custom decimal field to normalize useless decimal places
|
||||||
|
and allow commas as decimal separators
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def to_representation(self, value):
|
def to_representation(self, value):
|
||||||
@ -47,15 +53,21 @@ class UserNameSerializer(WritableNestedModelSerializer):
|
|||||||
class UserPreferenceSerializer(serializers.ModelSerializer):
|
class UserPreferenceSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = UserPreference
|
model = UserPreference
|
||||||
fields = ('user', 'theme', 'nav_color', 'default_unit', 'default_page', 'search_style', 'show_recent',
|
fields = (
|
||||||
'plan_share', 'ingredient_decimals', 'comments')
|
'user', 'theme', 'nav_color', 'default_unit', 'default_page',
|
||||||
|
'search_style', 'show_recent', 'plan_share', 'ingredient_decimals',
|
||||||
|
'comments'
|
||||||
|
)
|
||||||
read_only_fields = ['user']
|
read_only_fields = ['user']
|
||||||
|
|
||||||
|
|
||||||
class StorageSerializer(serializers.ModelSerializer):
|
class StorageSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Storage
|
model = Storage
|
||||||
fields = ('id', 'name', 'method', 'username', 'password', 'token', 'created_by')
|
fields = (
|
||||||
|
'id', 'name', 'method', 'username', 'password',
|
||||||
|
'token', 'created_by'
|
||||||
|
)
|
||||||
|
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
'password': {'write_only': True},
|
'password': {'write_only': True},
|
||||||
@ -66,7 +78,10 @@ class StorageSerializer(serializers.ModelSerializer):
|
|||||||
class SyncSerializer(serializers.ModelSerializer):
|
class SyncSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Sync
|
model = Sync
|
||||||
fields = ('id', 'storage', 'path', 'active', 'last_checked', 'created_at', 'updated_at')
|
fields = (
|
||||||
|
'id', 'storage', 'path', 'active', 'last_checked',
|
||||||
|
'created_at', 'updated_at'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class SyncLogSerializer(serializers.ModelSerializer):
|
class SyncLogSerializer(serializers.ModelSerializer):
|
||||||
@ -82,13 +97,17 @@ class KeywordSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
|||||||
return str(obj)
|
return str(obj)
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
# since multi select tags dont have id's duplicate names might be routed to create
|
# since multi select tags dont have id's
|
||||||
|
# duplicate names might be routed to create
|
||||||
obj, created = Keyword.objects.get_or_create(**validated_data)
|
obj, created = Keyword.objects.get_or_create(**validated_data)
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Keyword
|
model = Keyword
|
||||||
fields = ('id', 'name', 'icon', 'label', 'description', 'created_at', 'updated_at')
|
fields = (
|
||||||
|
'id', 'name', 'icon', 'label', 'description',
|
||||||
|
'created_at', 'updated_at'
|
||||||
|
)
|
||||||
|
|
||||||
read_only_fields = ('id',)
|
read_only_fields = ('id',)
|
||||||
|
|
||||||
@ -96,7 +115,8 @@ class KeywordSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
|||||||
class UnitSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
class UnitSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
# since multi select tags dont have id's duplicate names might be routed to create
|
# since multi select tags dont have id's
|
||||||
|
# duplicate names might be routed to create
|
||||||
obj, created = Unit.objects.get_or_create(**validated_data)
|
obj, created = Unit.objects.get_or_create(**validated_data)
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
@ -109,7 +129,8 @@ class UnitSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
|||||||
class FoodSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
class FoodSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
# since multi select tags dont have id's duplicate names might be routed to create
|
# since multi select tags dont have id's
|
||||||
|
# duplicate names might be routed to create
|
||||||
obj, created = Food.objects.get_or_create(**validated_data)
|
obj, created = Food.objects.get_or_create(**validated_data)
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
@ -129,7 +150,10 @@ class IngredientSerializer(WritableNestedModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Ingredient
|
model = Ingredient
|
||||||
fields = ('id', 'food', 'unit', 'amount', 'note', 'order', 'is_header', 'no_amount')
|
fields = (
|
||||||
|
'id', 'food', 'unit', 'amount', 'note', 'order',
|
||||||
|
'is_header', 'no_amount'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class StepSerializer(WritableNestedModelSerializer):
|
class StepSerializer(WritableNestedModelSerializer):
|
||||||
@ -137,7 +161,10 @@ class StepSerializer(WritableNestedModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Step
|
model = Step
|
||||||
fields = ('id', 'name', 'type', 'instruction', 'ingredients', 'time', 'order', 'show_as_header')
|
fields = (
|
||||||
|
'id', 'name', 'type', 'instruction', 'ingredients',
|
||||||
|
'time', 'order', 'show_as_header'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NutritionInformationSerializer(serializers.ModelSerializer):
|
class NutritionInformationSerializer(serializers.ModelSerializer):
|
||||||
@ -153,7 +180,11 @@ class RecipeSerializer(WritableNestedModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Recipe
|
model = Recipe
|
||||||
fields = ['id', 'name', 'image', 'keywords', 'steps', 'working_time', 'waiting_time', 'created_by', 'created_at', 'updated_at', 'internal', 'nutrition', 'servings']
|
fields = (
|
||||||
|
'id', 'name', 'image', 'keywords', 'steps', 'working_time',
|
||||||
|
'waiting_time', 'created_by', 'created_at', 'updated_at',
|
||||||
|
'internal', 'nutrition', 'servings'
|
||||||
|
)
|
||||||
read_only_fields = ['image', 'created_by', 'created_at']
|
read_only_fields = ['image', 'created_by', 'created_at']
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
@ -209,7 +240,11 @@ class MealPlanSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MealPlan
|
model = MealPlan
|
||||||
fields = ('id', 'title', 'recipe', 'servings', 'note', 'note_markdown', 'date', 'meal_type', 'created_by', 'shared', 'recipe_name', 'meal_type_name')
|
fields = (
|
||||||
|
'id', 'title', 'recipe', 'servings', 'note', 'note_markdown',
|
||||||
|
'date', 'meal_type', 'created_by', 'shared', 'recipe_name',
|
||||||
|
'meal_type_name'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ShoppingListRecipeSerializer(serializers.ModelSerializer):
|
class ShoppingListRecipeSerializer(serializers.ModelSerializer):
|
||||||
@ -229,7 +264,9 @@ class ShoppingListEntrySerializer(WritableNestedModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ShoppingListEntry
|
model = ShoppingListEntry
|
||||||
fields = ('id', 'list_recipe', 'food', 'unit', 'amount', 'order', 'checked')
|
fields = (
|
||||||
|
'id', 'list_recipe', 'food', 'unit', 'amount', 'order', 'checked'
|
||||||
|
)
|
||||||
read_only_fields = ('id',)
|
read_only_fields = ('id',)
|
||||||
|
|
||||||
|
|
||||||
@ -246,7 +283,10 @@ class ShoppingListSerializer(WritableNestedModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ShoppingList
|
model = ShoppingList
|
||||||
fields = ('id', 'uuid', 'note', 'recipes', 'entries', 'shared', 'finished', 'created_by', 'created_at',)
|
fields = (
|
||||||
|
'id', 'uuid', 'note', 'recipes', 'entries',
|
||||||
|
'shared', 'finished', 'created_by', 'created_at'
|
||||||
|
)
|
||||||
read_only_fields = ('id',)
|
read_only_fields = ('id',)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user