Fix isisues

sync
Laurent 12 months ago
parent 3251dc3531
commit 4680a09532
  1. 53
      api/sync.py
  2. 2
      api/views.py
  3. 7
      tournaments/signals.py

@ -34,31 +34,8 @@ class DataApi(APIView):
model = apps.get_model(app_label='tournaments', model_name=model_name)
now = timezone.localtime(timezone.now())
try:
data_id = data.get('id')
instance = get_data('tournaments', model_name, data_id)
if model_operation == 'DELETE':
# parent_model, parent_id = instance.get_parent_reference()
instance = get_data('tournaments', model_name, data_id)
instance.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
# return self.delete_and_save_log(request, data_id, model_operation, model_name, store_id, now)
else: # PUT
serializer = serializer_class(instance, data=data, context={'request': request})
if serializer.is_valid():
if instance.last_update <= serializer.validated_data.get('last_update'):
print('>>> update')
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
# return self.save_and_create_log(request, serializer, model_operation, model_name, store_id, now)
else:
print('>>> return 203')
return Response(serializer.data, status=status.HTTP_203_NON_AUTHORITATIVE_INFORMATION)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
except model.DoesNotExist: # POST
print('>>> insert')
if model_operation == 'POST':
serializer = serializer_class(data=data, context={'request': request})
if serializer.is_valid():
serializer.save()
@ -66,6 +43,34 @@ class DataApi(APIView):
# return self.save_and_create_log(request, serializer, model_operation, model_name, store_id, now)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif model_operation == 'PUT':
data_id = data.get('id')
instance = get_data('tournaments', model_name, data_id)
serializer = serializer_class(instance, data=data, context={'request': request})
if serializer.is_valid():
if instance.last_update <= serializer.validated_data.get('last_update'):
print('>>> update')
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
# return self.save_and_create_log(request, serializer, model_operation, model_name, store_id, now)
else:
print('>>> return 203')
return Response(serializer.data, status=status.HTTP_203_NON_AUTHORITATIVE_INFORMATION)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif model_operation == 'DELETE':
data_id = data.get('id')
try:
instance = get_data('tournaments', model_name, data_id)
instance.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
except model.DoesNotExist: # POST
delete = ModelLog.objects.filter(model_id=data_id, operation=model_operation).first()
if delete:
return Response(status=status.HTTP_208_ALREADY_REPORTED)
else:
return Response(status=status.HTTP_404_NOT_FOUND)
def get(self, request, *args, **kwargs):
last_update_str = request.query_params.get('last_update')

@ -36,7 +36,7 @@ class CustomAuthToken(APIView):
true_username = self.get_username_from_email(username)
user = authenticate(username=true_username, password=password)
if user is not None:
if user:
# if user.device_id is None or user.device_id == device_id or user.username == 'apple-test':
# if user.device_id is None or user.device_id == device_id or user.username == 'apple-test':

@ -54,7 +54,7 @@ def notify_impacted_users(instance, signal):
user_ids.add(instance.id)
elif isinstance(instance, BaseModel):
owner = instance.last_updated_by
if owner is not None:
if owner:
user_ids.add(owner.id)
if isinstance(instance, BaseModel):
@ -69,7 +69,7 @@ def notify_impacted_users(instance, signal):
def save_model_log_if_possible(instance, signal, created):
user = instance.last_updated_by
if user is not None:
if user:
if signal == post_save or signal == pre_save:
if created:
operation = ModelOperation.POST
@ -89,6 +89,7 @@ def save_model_log_if_possible(instance, signal, created):
users = {user}
data_access_list = related_data_access(instance)
for data_access in data_access_list:
users.add(data_access.owner)
users.update(data_access.shared_with.all())
if isinstance(instance, DataAccess):
users.add(instance.owner)
@ -107,9 +108,11 @@ def save_model_log(users, model_operation, model_name, model_id, store_id):
now = timezone.now()
existing_log = ModelLog.objects.filter(users__in=users, model_id=model_id, operation=model_operation).first()
if existing_log:
# print(f'update existing log {existing_log.users} ')
existing_log.date = now
existing_log.model_operation = model_operation
existing_log.save()
existing_log.users.set(users)
else:
model_log = ModelLog()
model_log.operation = model_operation

Loading…
Cancel
Save