starting work on new sync algorithm
This commit is contained in:
parent
475ce44df9
commit
c76f5d9482
18
cookbook/migrations/0206_shoppinglistentry_updated_at.py
Normal file
18
cookbook/migrations/0206_shoppinglistentry_updated_at.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.7 on 2023-12-30 08:00
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0205_alter_food_fdc_id_alter_propertytype_fdc_id'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='shoppinglistentry',
|
||||
name='updated_at',
|
||||
field=models.DateTimeField(auto_now=True),
|
||||
),
|
||||
]
|
@ -1050,6 +1050,8 @@ class ShoppingListEntry(ExportModelOperationsMixin('shopping_list_entry'), model
|
||||
checked = models.BooleanField(default=False)
|
||||
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
completed_at = models.DateTimeField(null=True, blank=True)
|
||||
delay_until = models.DateTimeField(null=True, blank=True)
|
||||
|
||||
|
@ -1074,7 +1074,7 @@ class ShoppingListEntrySerializer(WritableNestedModelSerializer):
|
||||
|
||||
# autosync values are only needed for frequent 'checked' value updating
|
||||
if self.context['request'] and bool(int(self.context['request'].query_params.get('autosync', False))):
|
||||
for f in list(set(fields) - set(['id', 'checked'])):
|
||||
for f in list(set(fields) - set(['id', 'checked', 'updated_at', ])):
|
||||
del fields[f]
|
||||
return fields
|
||||
|
||||
@ -1118,7 +1118,7 @@ class ShoppingListEntrySerializer(WritableNestedModelSerializer):
|
||||
fields = (
|
||||
'id', 'list_recipe', 'food', 'unit', 'ingredient', 'ingredient_note', 'amount', 'order', 'checked',
|
||||
'recipe_mealplan',
|
||||
'created_by', 'created_at', 'completed_at', 'delay_until'
|
||||
'created_by', 'created_at', 'updated_at', 'completed_at', 'delay_until'
|
||||
)
|
||||
read_only_fields = ('id', 'created_by', 'created_at',)
|
||||
|
||||
|
@ -1163,6 +1163,11 @@ class ShoppingListEntryViewSet(viewsets.ModelViewSet):
|
||||
if 'checked' in self.request.query_params or 'recent' in self.request.query_params:
|
||||
return shopping_helper(self.queryset, self.request)
|
||||
|
||||
last_autosync = self.request.query_params.get('last_autosync', None)
|
||||
if last_autosync:
|
||||
last_autosync = datetime.datetime.now() # TODO implement
|
||||
self.queryset = self.queryset.filter(updated_at__gte=last_autosync)
|
||||
|
||||
# TODO once old shopping list is removed this needs updated to sharing users in preferences
|
||||
return self.queryset
|
||||
|
||||
@ -1174,11 +1179,13 @@ class ShoppingListViewSet(viewsets.ModelViewSet):
|
||||
permission_classes = [(CustomIsOwner | CustomIsShared) & CustomTokenHasReadWriteScope]
|
||||
|
||||
def get_queryset(self):
|
||||
return self.queryset.filter(
|
||||
self.queryset = self.queryset.filter(
|
||||
Q(created_by=self.request.user)
|
||||
| Q(shared=self.request.user)
|
||||
| Q(created_by__in=list(self.request.user.get_shopping_share()))
|
||||
).filter(space=self.request.space).distinct()
|
||||
).filter(space=self.request.space)
|
||||
|
||||
return self.queryset.distinct()
|
||||
|
||||
def get_serializer_class(self):
|
||||
try:
|
||||
|
Loading…
Reference in New Issue
Block a user