diff --git a/docs/changelog.rst b/docs/changelog.rst index 050cc3be8a..6845f6f7f4 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -62,6 +62,7 @@ In preparation for HD Views developments (PR #3298) - ApidaeTrekParser: round computed duration - ApidaeTrekParser: fix attached pictures import + 2.93.0 (2022-12-06) ----------------------- diff --git a/geotrek/common/parsers.py b/geotrek/common/parsers.py index 7b4b7f5588..ad9ac43510 100644 --- a/geotrek/common/parsers.py +++ b/geotrek/common/parsers.py @@ -276,6 +276,9 @@ def parse_translation_field(self, dst, src, val): if old_value != val_default_language: self.set_value(dst_field_lang, src, val_default_language) modified = True + if new_value != old_value: + modified = True + return modified def parse_field(self, row, dst, src, updated, non_field): diff --git a/geotrek/trekking/tests/test_parsers.py b/geotrek/trekking/tests/test_parsers.py index 42ce41b782..2c6e07401f 100644 --- a/geotrek/trekking/tests/test_parsers.py +++ b/geotrek/trekking/tests/test_parsers.py @@ -664,6 +664,13 @@ class TestApidaeTrekParser(ApidaeTrekParser): selection_id = 654321 +class TestApidaeTrekSameValueDefaultLanguageDifferentTranslationParser(TestApidaeTrekParser): + def filter_description(self, src, val): + description = super().filter_description(src, val) + self.set_value('description_fr', src, "FOOBAR") + return description + + @skipIf(settings.TREKKING_TOPOLOGY_ENABLED, 'Test without dynamic segmentation only') class ApidaeTrekParserTests(TestCase): @@ -782,6 +789,39 @@ def test_trek_is_imported(self, mocked_get): self.assertEqual(Attachment.objects.count(), 0) + @mock.patch('requests.get') + def test_trek_import_multiple_time(self, mocked_get): + RouteFactory(route='Boucle') + mocked_get.side_effect = self.make_dummy_get('a_trek.json') + + call_command('import', 'geotrek.trekking.tests.test_parsers.TestApidaeTrekParser', verbosity=0) + + self.assertEqual(Trek.objects.count(), 1) + trek = Trek.objects.all().first() + old_description_en = trek.description_en + old_description = trek.description + description_fr = ( + '
Départ : du parking de la Chapelle Saint Michel
' + '1/ Suivre le chemin qui part à droite, traversant le vallon.
' + '2/ Au carrefour tourner à droite et suivre la rivière
' + '3/ Retour à la chapelle en passant à travers le petit bois.
' + 'Ouvert toute l\'année
' + 'Fermeture exceptionnelle en cas de pluie forte
' + 'Suivre le balisage GR (blanc/rouge) ou GRP (jaune/rouge).
' + 'Montée en télésiège payante. 2 points de vente - télésiège Frastaz et Bois Noir.
' + 'Site web (URL):https://example.com/ma_rando.html
'
+ 'Téléphone:01 23 45 67 89
'
+ 'Mél:accueil-rando@example.com
'
+ 'Signaux de fumée:1 gros nuage suivi de 2 petits