Projet

Général

Profil

0003-to-be-fixed-up-return-to-api_id-s-length-of-30-chara.patch

Benjamin Dauvergne, 13 juillet 2021 16:42

Télécharger (4,05 ko)

Voir les différences:

Subject: [PATCH 3/5] 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
passerelle/apps/base_adresse/migrations/0019_auto_20210712_1233.py
1
# Generated by Django 2.2.19 on 2021-07-12 10:33
2

  
3
from django.db import migrations, models
4

  
5

  
6
class Migration(migrations.Migration):
7

  
8
    dependencies = [
9
        ('base_adresse', '0018_text_to_jsonb'),
10
    ]
11

  
12
    operations = [
13
        migrations.AlterField(
14
            model_name='addresscachemodel',
15
            name='api_id',
16
            field=models.CharField(max_length=128, unique=True),
17
        ),
18
    ]
passerelle/apps/base_adresse/models.py
157 157
            data = self.format_address_data(feature)
158 158
            result.append(data)
159 159
            address, created = AddressCacheModel.objects.get_or_create(
160
                api_id=data['id'], defaults={'data': data}
160
                api_id=data['id'][:30], defaults={'data': data}
161 161
            )
162 162
            if not created:
163 163
                address.update_timestamp()
......
172 172
            lat, lon, q = None, None, None
173 173
        # Try cache
174 174
        try:
175
            address = AddressCacheModel.objects.get(api_id=id)
175
            address = AddressCacheModel.objects.get(api_id=id[:30])
176 176
        except AddressCacheModel.DoesNotExist:
177 177
            pass
178 178
        else:
......
243 243
                continue  # skip unknown
244 244
            result = self.format_address_data(feature)
245 245
            address, created = AddressCacheModel.objects.get_or_create(
246
                api_id=result['id'], defaults={'data': result}
246
                api_id=result['id'][:30], defaults={'data': result}
247 247
            )
248 248
            if not created:
249 249
                address.update_timestamp()
......
658 658

  
659 659

  
660 660
class AddressCacheModel(models.Model):
661
    api_id = models.CharField(max_length=128, unique=True)
661
    api_id = models.CharField(max_length=30, unique=True)
662 662
    data = JSONField()
663 663
    timestamp = models.DateTimeField(auto_now=True)
664 664

  
tests/test_base_adresse.py
841 841
    assert data['text'] == 'Rue Roger Halope 49000 Angers'
842 842

  
843 843
    api_id = data['id']
844
    assert AddressCacheModel.objects.filter(api_id=api_id).exists()
844
    assert AddressCacheModel.objects.filter(api_id=api_id[:30]).exists()
845 845
    assert AddressCacheModel.objects.count() == 1
846 846

  
847 847
    resp = app.get('/base-adresse/%s/addresses?id=%s' % (base_adresse.slug, api_id))
......
936 936
    assert data['text'] == 'Rue Roger Halope 49000 Angers'
937 937

  
938 938
    api_id = data['id']
939
    assert AddressCacheModel.objects.filter(api_id=api_id).exists()
939
    assert AddressCacheModel.objects.filter(api_id=api_id[:30]).exists()
940 940
    assert AddressCacheModel.objects.count() == 1
941 941
    first_timestamp = AddressCacheModel.objects.get().timestamp
942 942

  
943
-