+Add quantity field to ingredients

+Clear list now requires confirmation
+Confirm / Cancel buttons are now coloured
This commit is contained in:
Alexander Laevens
2022-12-07 02:13:34 -07:00
parent 31c4505e49
commit 4d0388b262
20 changed files with 396 additions and 83 deletions

View File

@@ -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),
),
]

View File

@@ -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)

View File

@@ -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

View File

@@ -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