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:
@ -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),
|
||||
|
Reference in New Issue
Block a user