1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-06-21 01:48:21 +02:00

Spam click on invalidity button is no longer possible

This commit is contained in:
Yohann D'ANELLO
2020-08-13 17:04:10 +02:00
parent c466715e8a
commit bb2704323a
6 changed files with 42 additions and 17 deletions

View File

@ -81,19 +81,27 @@ def save_object(sender, instance, **kwargs):
if instance.last_login != previous.last_login:
return
# On crée notre propre sérialiseur JSON pour pouvoir sauvegarder les modèles
fields = '__all__'
if previous:
# On ne garde que les champs modifiés
changed_fields = []
for field in instance._meta.fields:
if getattr(instance, field.name) != getattr(previous, field.name):
changed_fields.append(field.name)
if len(changed_fields) == 0:
# Pas de log s'il n'y a pas de modification
return
# On crée notre propre sérialiseur JSON pour pouvoir sauvegarder les modèles avec uniquement les champs modifiés
class CustomSerializer(ModelSerializer):
class Meta:
model = instance.__class__
fields = '__all__'
fields = changed_fields
previous_json = JSONRenderer().render(CustomSerializer(previous).data).decode("UTF-8") if previous else None
instance_json = JSONRenderer().render(CustomSerializer(instance).data).decode("UTF-8")
if previous_json == instance_json:
# Pas de log s'il n'y a pas de modification
return
Changelog.objects.create(user=user,
ip=ip,
model=ContentType.objects.get_for_model(instance),