mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-01 04:10:06 -05:00
wip serializer permission
This commit is contained in:
@@ -5,6 +5,7 @@ from drf_writable_nested import (UniqueFieldsMixin,
|
|||||||
WritableNestedModelSerializer)
|
WritableNestedModelSerializer)
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework.exceptions import ValidationError
|
from rest_framework.exceptions import ValidationError
|
||||||
|
from rest_framework.serializers import BaseSerializer, Serializer
|
||||||
|
|
||||||
from cookbook.models import (Comment, CookLog, Food, Ingredient, Keyword,
|
from cookbook.models import (Comment, CookLog, Food, Ingredient, Keyword,
|
||||||
MealPlan, MealType, NutritionInformation, Recipe,
|
MealPlan, MealType, NutritionInformation, Recipe,
|
||||||
@@ -39,6 +40,12 @@ class CustomDecimalField(serializers.Field):
|
|||||||
raise ValidationError('A valid number is required')
|
raise ValidationError('A valid number is required')
|
||||||
|
|
||||||
|
|
||||||
|
class CreateWithSpaceMixin(Serializer):
|
||||||
|
def create(self, validated_data):
|
||||||
|
validated_data['space'] = self.context['request'].space
|
||||||
|
return super().create(validated_data)
|
||||||
|
|
||||||
|
|
||||||
class UserNameSerializer(WritableNestedModelSerializer):
|
class UserNameSerializer(WritableNestedModelSerializer):
|
||||||
username = serializers.SerializerMethodField('get_user_label')
|
username = serializers.SerializerMethodField('get_user_label')
|
||||||
|
|
||||||
@@ -61,7 +68,7 @@ class UserPreferenceSerializer(serializers.ModelSerializer):
|
|||||||
read_only_fields = ['user']
|
read_only_fields = ['user']
|
||||||
|
|
||||||
|
|
||||||
class StorageSerializer(serializers.ModelSerializer):
|
class StorageSerializer(serializers.ModelSerializer, CreateWithSpaceMixin):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Storage
|
model = Storage
|
||||||
fields = (
|
fields = (
|
||||||
@@ -75,7 +82,7 @@ class StorageSerializer(serializers.ModelSerializer):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class SyncSerializer(serializers.ModelSerializer):
|
class SyncSerializer(serializers.ModelSerializer, CreateWithSpaceMixin):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Sync
|
model = Sync
|
||||||
fields = (
|
fields = (
|
||||||
@@ -84,7 +91,7 @@ class SyncSerializer(serializers.ModelSerializer):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class SyncLogSerializer(serializers.ModelSerializer):
|
class SyncLogSerializer(serializers.ModelSerializer, CreateWithSpaceMixin):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = SyncLog
|
model = SyncLog
|
||||||
fields = ('id', 'sync', 'status', 'msg', 'created_at')
|
fields = ('id', 'sync', 'status', 'msg', 'created_at')
|
||||||
@@ -147,7 +154,7 @@ class SupermarketCategorySerializer(UniqueFieldsMixin, WritableNestedModelSerial
|
|||||||
fields = ('id', 'name')
|
fields = ('id', 'name')
|
||||||
|
|
||||||
|
|
||||||
class SupermarketCategoryRelationSerializer(serializers.ModelSerializer):
|
class SupermarketCategoryRelationSerializer(serializers.ModelSerializer, CreateWithSpaceMixin):
|
||||||
category = SupermarketCategorySerializer()
|
category = SupermarketCategorySerializer()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -155,7 +162,7 @@ class SupermarketCategoryRelationSerializer(serializers.ModelSerializer):
|
|||||||
fields = ('id', 'category', 'supermarket', 'order')
|
fields = ('id', 'category', 'supermarket', 'order')
|
||||||
|
|
||||||
|
|
||||||
class SupermarketSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
class SupermarketSerializer(UniqueFieldsMixin, serializers.ModelSerializer, CreateWithSpaceMixin):
|
||||||
category_to_supermarket = SupermarketCategoryRelationSerializer(many=True, read_only=True)
|
category_to_supermarket = SupermarketCategoryRelationSerializer(many=True, read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -255,7 +262,7 @@ class RecipeImageSerializer(WritableNestedModelSerializer):
|
|||||||
fields = ['image', ]
|
fields = ['image', ]
|
||||||
|
|
||||||
|
|
||||||
class RecipeImportSerializer(serializers.ModelSerializer):
|
class RecipeImportSerializer(serializers.ModelSerializer, CreateWithSpaceMixin):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RecipeImport
|
model = RecipeImport
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
@@ -267,7 +274,7 @@ class CommentSerializer(serializers.ModelSerializer):
|
|||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
|
||||||
class RecipeBookSerializer(serializers.ModelSerializer):
|
class RecipeBookSerializer(serializers.ModelSerializer, CreateWithSpaceMixin):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RecipeBook
|
model = RecipeBook
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
@@ -280,13 +287,14 @@ class RecipeBookEntrySerializer(serializers.ModelSerializer):
|
|||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
|
||||||
class MealTypeSerializer(serializers.ModelSerializer):
|
class MealTypeSerializer(serializers.ModelSerializer, CreateWithSpaceMixin):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MealType
|
model = MealType
|
||||||
fields = '__all__'
|
fields = ('name', 'order', 'created_by')
|
||||||
|
read_only_fields = ('space',)
|
||||||
|
|
||||||
|
|
||||||
class MealPlanSerializer(serializers.ModelSerializer):
|
class MealPlanSerializer(serializers.ModelSerializer, CreateWithSpaceMixin):
|
||||||
recipe_name = serializers.ReadOnlyField(source='recipe.name')
|
recipe_name = serializers.ReadOnlyField(source='recipe.name')
|
||||||
meal_type_name = serializers.ReadOnlyField(source='meal_type.name')
|
meal_type_name = serializers.ReadOnlyField(source='meal_type.name')
|
||||||
note_markdown = serializers.SerializerMethodField('get_note_markdown')
|
note_markdown = serializers.SerializerMethodField('get_note_markdown')
|
||||||
@@ -304,7 +312,7 @@ class MealPlanSerializer(serializers.ModelSerializer):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ShoppingListRecipeSerializer(serializers.ModelSerializer):
|
class ShoppingListRecipeSerializer(serializers.ModelSerializer, CreateWithSpaceMixin):
|
||||||
recipe_name = serializers.ReadOnlyField(source='recipe.name')
|
recipe_name = serializers.ReadOnlyField(source='recipe.name')
|
||||||
servings = CustomDecimalField()
|
servings = CustomDecimalField()
|
||||||
|
|
||||||
@@ -314,7 +322,7 @@ class ShoppingListRecipeSerializer(serializers.ModelSerializer):
|
|||||||
read_only_fields = ('id',)
|
read_only_fields = ('id',)
|
||||||
|
|
||||||
|
|
||||||
class ShoppingListEntrySerializer(WritableNestedModelSerializer):
|
class ShoppingListEntrySerializer(WritableNestedModelSerializer, CreateWithSpaceMixin):
|
||||||
food = FoodSerializer(allow_null=True)
|
food = FoodSerializer(allow_null=True)
|
||||||
unit = UnitSerializer(allow_null=True, required=False)
|
unit = UnitSerializer(allow_null=True, required=False)
|
||||||
amount = CustomDecimalField()
|
amount = CustomDecimalField()
|
||||||
@@ -332,7 +340,7 @@ class ShoppingListEntryCheckedSerializer(serializers.ModelSerializer):
|
|||||||
fields = ('id', 'checked')
|
fields = ('id', 'checked')
|
||||||
|
|
||||||
|
|
||||||
class ShoppingListSerializer(WritableNestedModelSerializer):
|
class ShoppingListSerializer(WritableNestedModelSerializer, CreateWithSpaceMixin):
|
||||||
recipes = ShoppingListRecipeSerializer(many=True, allow_null=True)
|
recipes = ShoppingListRecipeSerializer(many=True, allow_null=True)
|
||||||
entries = ShoppingListEntrySerializer(many=True, allow_null=True)
|
entries = ShoppingListEntrySerializer(many=True, allow_null=True)
|
||||||
shared = UserNameSerializer(many=True)
|
shared = UserNameSerializer(many=True)
|
||||||
@@ -356,7 +364,7 @@ class ShoppingListAutoSyncSerializer(WritableNestedModelSerializer):
|
|||||||
read_only_fields = ('id',)
|
read_only_fields = ('id',)
|
||||||
|
|
||||||
|
|
||||||
class ShareLinkSerializer(serializers.ModelSerializer):
|
class ShareLinkSerializer(serializers.ModelSerializer, CreateWithSpaceMixin):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ShareLink
|
model = ShareLink
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
@@ -365,6 +373,7 @@ class ShareLinkSerializer(serializers.ModelSerializer):
|
|||||||
class CookLogSerializer(serializers.ModelSerializer):
|
class CookLogSerializer(serializers.ModelSerializer):
|
||||||
def create(self, validated_data): # TODO make mixin
|
def create(self, validated_data): # TODO make mixin
|
||||||
validated_data['created_by'] = self.context['request'].user
|
validated_data['created_by'] = self.context['request'].user
|
||||||
|
validated_data['space'] = self.context['request'].space
|
||||||
return super().create(validated_data)
|
return super().create(validated_data)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -373,7 +382,7 @@ class CookLogSerializer(serializers.ModelSerializer):
|
|||||||
read_only_fields = ('id', 'created_by')
|
read_only_fields = ('id', 'created_by')
|
||||||
|
|
||||||
|
|
||||||
class ViewLogSerializer(serializers.ModelSerializer):
|
class ViewLogSerializer(serializers.ModelSerializer, CreateWithSpaceMixin):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ViewLog
|
model = ViewLog
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|||||||
Reference in New Issue
Block a user