From 4a920429db6cf270761e41dc576c754a4915510a Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Mon, 8 Mar 2021 14:08:55 +0100 Subject: [PATCH 2/2] base: export only editable fields (#51724) --- passerelle/base/models.py | 8 ++++++-- tests/test_import_export.py | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/passerelle/base/models.py b/passerelle/base/models.py index 0ee3a5e1..e54a1f1d 100644 --- a/passerelle/base/models.py +++ b/passerelle/base/models.py @@ -358,7 +358,9 @@ class BaseResource(models.Model): concrete_fields = [ f for f in self.__class__._meta.get_fields() - if f.concrete and (not f.is_relation or f.one_to_one or (f.many_to_one and f.related_model)) + if f.concrete + and f.editable + and (not f.is_relation or f.one_to_one or (f.many_to_one and f.related_model)) ] for field in concrete_fields: if field.name == 'id': @@ -429,7 +431,9 @@ class BaseResource(models.Model): concrete_fields = [ f for f in cls._meta.get_fields() - if f.concrete and (not f.is_relation or f.one_to_one or (f.many_to_one and f.related_model)) + if f.concrete + and f.editable + and (not f.is_relation or f.one_to_one or (f.many_to_one and f.related_model)) ] for field in concrete_fields: if field.name == 'id': diff --git a/tests/test_import_export.py b/tests/test_import_export.py index 45662593..f740b26a 100644 --- a/tests/test_import_export.py +++ b/tests/test_import_export.py @@ -10,10 +10,12 @@ from django.urls import reverse from django.core.management import call_command from django.contrib.contenttypes.models import ContentType from django.test import Client +from django.utils import timezone from django.utils.encoding import force_bytes, force_text from django.utils.six import BytesIO, StringIO from passerelle.apps.base_adresse.models import BaseAdresse +from passerelle.apps.ovh.models import OVHSMSGateway from passerelle.base.models import ApiUser, AccessRight from passerelle.compat import json_loads from passerelle.utils import import_site, export_site @@ -245,3 +247,25 @@ def test_export_base_adresse(): ba_export = ba.export_json() new_ba = BaseAdresse.import_json(ba_export, overwrite=True) assert ba == new_ba + + +def test_export_ovh(): + ovh = OVHSMSGateway.objects.create( + slug='test-ovh', + title='Test OVH', + account='sms-test42', + application_key='RHrTdU2oTsrVC0pu', + application_secret='CLjtS69tTcPgCKxedeoZlgMSoQGSiXMa', + consumer_key='iF0zi0MJrbjNcI3hvuvwkhNk8skrigxz', + credit_threshold_alert=100, + credit_left=102, + credit_alert_timestamp=timezone.now(), + alert_emails=['test@entrouvert.org'], + ) + + ovh_export = ovh.export_json() + ovh.delete() + new_ovh = OVHSMSGateway.import_json(ovh_export) + assert new_ovh.alert_emails == ovh.alert_emails + assert new_ovh.credit_alert_timestamp is None + assert new_ovh.credit_left == 0 -- 2.20.1