+Add quantity field to ingredients
+Clear list now requires confirmation +Confirm / Cancel buttons are now coloured
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
# Generated by Django 4.1.3 on 2022-12-06 22:34
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0005_list_updates'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='list',
|
||||
name='updates',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='listingredient',
|
||||
name='quantity',
|
||||
field=models.CharField(blank=True, max_length=50, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='recipeingredient',
|
||||
name='quantity',
|
||||
field=models.CharField(blank=True, max_length=50, null=True),
|
||||
),
|
||||
]
|
||||
@@ -26,7 +26,6 @@ class Homegroup(models.Model):
|
||||
class List(models.Model):
|
||||
# Foreign Key ListIngredient -> List [as ingredients]
|
||||
homegroup = models.OneToOneField(Homegroup, on_delete=models.CASCADE, primary_key=True)
|
||||
updates = models.BigIntegerField(default=0);
|
||||
|
||||
|
||||
class Recipe(models.Model):
|
||||
@@ -37,9 +36,11 @@ class Recipe(models.Model):
|
||||
|
||||
class RecipeIngredient(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
quantity = models.CharField(max_length=50, null=True, blank=True)
|
||||
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, related_name="ingredients")
|
||||
|
||||
class ListIngredient(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
quantity = models.CharField(max_length=50, null=True, blank=True)
|
||||
list = models.ForeignKey(List, on_delete=models.CASCADE, related_name="ingredients")
|
||||
in_cart = models.BooleanField(default=False)
|
||||
@@ -9,12 +9,12 @@ channel_layer = get_channel_layer()
|
||||
class RecipeIngredientSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = RecipeIngredient
|
||||
fields = ["id", "name", "recipe"]
|
||||
fields = ["id", "name", "quantity", "recipe"]
|
||||
|
||||
class ListIngredientSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = ListIngredient
|
||||
fields = ["id", "name", "list", "in_cart"]
|
||||
fields = ["id", "name", "quantity", "list", "in_cart"]
|
||||
|
||||
class RecipeSerializer(serializers.ModelSerializer):
|
||||
ingredients = serializers.SerializerMethodField()
|
||||
@@ -33,13 +33,9 @@ class ListSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = List
|
||||
fields = ["homegroup", "updates", "ingredients"]
|
||||
fields = ["homegroup", "ingredients"]
|
||||
read_only_fields = ["homegroup"]
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
# async_to_sync(channel_layer.group_send)(f"group_{instance.homegroup.id}", {"type": "model_update"})
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
def get_ingredients(self, instance):
|
||||
ingredients = instance.ingredients.all().order_by("name")
|
||||
return ListIngredientSerializer(ingredients, many=True).data
|
||||
|
||||
@@ -12,7 +12,7 @@ class HasHomegroup(permissions.BasePermission):
|
||||
return super().has_permission(request, view)
|
||||
|
||||
class Pagination(pagination.PageNumberPagination):
|
||||
page_size = 4
|
||||
page_size = 10
|
||||
|
||||
class NoListModelViewset(mixins.CreateModelMixin, mixins.DestroyModelMixin, mixins.UpdateModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user