From 3f7bf28792d46a38b89d3cd721fd3931e64668b4 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 13 Jul 2021 16:25:19 +0200 Subject: [PATCH 3/4] to be fixed up: return to api_id's length of 30 characters and truncate id before search/create --- .../migrations/0019_auto_20210712_1233.py | 18 ------------------ passerelle/apps/base_adresse/models.py | 8 ++++---- tests/test_base_adresse.py | 4 ++-- 3 files changed, 6 insertions(+), 24 deletions(-) delete mode 100644 passerelle/apps/base_adresse/migrations/0019_auto_20210712_1233.py diff --git a/passerelle/apps/base_adresse/migrations/0019_auto_20210712_1233.py b/passerelle/apps/base_adresse/migrations/0019_auto_20210712_1233.py deleted file mode 100644 index 9b9e1b7e..00000000 --- a/passerelle/apps/base_adresse/migrations/0019_auto_20210712_1233.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.19 on 2021-07-12 10:33 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('base_adresse', '0018_text_to_jsonb'), - ] - - operations = [ - migrations.AlterField( - model_name='addresscachemodel', - name='api_id', - field=models.CharField(max_length=128, unique=True), - ), - ] diff --git a/passerelle/apps/base_adresse/models.py b/passerelle/apps/base_adresse/models.py index 9a4e6720..fc92bee4 100644 --- a/passerelle/apps/base_adresse/models.py +++ b/passerelle/apps/base_adresse/models.py @@ -157,7 +157,7 @@ class BaseAdresse(BaseResource): data = self.format_address_data(feature) result.append(data) address, created = AddressCacheModel.objects.get_or_create( - api_id=data['id'], defaults={'data': data} + api_id=data['id'][:30], defaults={'data': data} ) if not created: address.update_timestamp() @@ -172,7 +172,7 @@ class BaseAdresse(BaseResource): lat, lon, q = None, None, None # Try cache try: - address = AddressCacheModel.objects.get(api_id=id) + address = AddressCacheModel.objects.get(api_id=id[:30]) except AddressCacheModel.DoesNotExist: pass else: @@ -243,7 +243,7 @@ class BaseAdresse(BaseResource): continue # skip unknown result = self.format_address_data(feature) address, created = AddressCacheModel.objects.get_or_create( - api_id=result['id'], defaults={'data': result} + api_id=result['id'][:30], defaults={'data': result} ) if not created: address.update_timestamp() @@ -658,7 +658,7 @@ class CityModel(UnaccentNameMixin, models.Model): class AddressCacheModel(models.Model): - api_id = models.CharField(max_length=128, unique=True) + api_id = models.CharField(max_length=30, unique=True) data = JSONField() timestamp = models.DateTimeField(auto_now=True) diff --git a/tests/test_base_adresse.py b/tests/test_base_adresse.py index 2806409d..d06e0548 100644 --- a/tests/test_base_adresse.py +++ b/tests/test_base_adresse.py @@ -841,7 +841,7 @@ def test_base_adresse_addresses_cache(app, base_adresse, mock_api_adresse_data_g assert data['text'] == 'Rue Roger Halope 49000 Angers' api_id = data['id'] - assert AddressCacheModel.objects.filter(api_id=api_id).exists() + assert AddressCacheModel.objects.filter(api_id=api_id[:30]).exists() assert AddressCacheModel.objects.count() == 1 resp = app.get('/base-adresse/%s/addresses?id=%s' % (base_adresse.slug, api_id)) @@ -936,7 +936,7 @@ def test_base_adresse_reverse_cache( assert data['text'] == 'Rue Roger Halope 49000 Angers' api_id = data['id'] - assert AddressCacheModel.objects.filter(api_id=api_id).exists() + assert AddressCacheModel.objects.filter(api_id=api_id[:30]).exists() assert AddressCacheModel.objects.count() == 1 first_timestamp = AddressCacheModel.objects.get().timestamp -- 2.32.0.rc0