Projet

Général

Profil

0001-toulouse-maelis-add-connector-key-into-referentials-.patch

Nicolas Roche, 09 décembre 2022 16:27

Télécharger (4,73 ko)

Voir les différences:

Subject: [PATCH] toulouse-maelis: add connector key into referentials (#72244)

 .../migrations/0004_auto_20221209_1326.py     | 21 +++++++++++++++++++
 passerelle/contrib/toulouse_maelis/models.py  |  6 +++---
 tests/test_toulouse_maelis.py                 | 17 +++++++++++++++
 3 files changed, 41 insertions(+), 3 deletions(-)
 create mode 100644 passerelle/contrib/toulouse_maelis/migrations/0004_auto_20221209_1326.py
passerelle/contrib/toulouse_maelis/migrations/0004_auto_20221209_1326.py
1
# Generated by Django 2.2.26 on 2022-12-09 12:26
2

  
3
from django.db import migrations
4

  
5

  
6
class Migration(migrations.Migration):
7

  
8
    dependencies = [
9
        ('toulouse_maelis', '0003_referential_item_unaccent_text'),
10
    ]
11

  
12
    operations = [
13
        migrations.AlterModelOptions(
14
            name='referential',
15
            options={'ordering': ('resource', 'referential_name', 'item_text', 'item_id')},
16
        ),
17
        migrations.AlterUniqueTogether(
18
            name='referential',
19
            unique_together={('resource', 'referential_name', 'item_id')},
20
        ),
21
    ]
passerelle/contrib/toulouse_maelis/models.py
157 157
        if id is not None:
158 158
            queryset = self.referential.filter(referential_name=referential_name, item_id=id)
159 159
        else:
160 160
            queryset = self.referential.filter(referential_name=referential_name).all()
161 161
            if q:
162 162
                queryset = queryset.filter(item_unaccent_text__icontains=simplify(q))
163 163

  
164 164
        if distinct:
165
            queryset = queryset.distinct('referential_name', 'item_text')
165
            queryset = queryset.distinct('resource', 'referential_name', 'item_text')
166 166

  
167 167
        if limit:
168 168
            try:
169 169
                limit = int(limit)
170 170
            except ValueError:
171 171
                pass
172 172
            else:
173 173
                queryset = queryset[:limit]
......
1401 1401
    item_data = JSONField('Data')
1402 1402
    created = models.DateTimeField('Created', auto_now_add=True)
1403 1403
    updated = models.DateTimeField('Updated', auto_now=True)
1404 1404

  
1405 1405
    def __repr__(self):
1406 1406
        return '<Referential "%s/%s">' % (self.referential_name, self.item_id)
1407 1407

  
1408 1408
    class Meta:
1409
        ordering = ('referential_name', 'item_text', 'item_id')
1410
        unique_together = [['referential_name', 'item_id']]
1409
        ordering = ('resource', 'referential_name', 'item_text', 'item_id')
1410
        unique_together = [['resource', 'referential_name', 'item_id']]
tests/test_toulouse_maelis.py
241 241
        mocked_post.return_value = FakedResponse(
242 242
            content=get_xml_file('R_read_category_list_2_items.xml'), status_code=200
243 243
        )
244 244
        con.update_referential('Category')
245 245
        assert [
246 246
            (x.item_id, x.item_text) for x in Referential.objects.filter(referential_name='Category')
247 247
        ] == [('BI', 'BIPARENTALE'), ('ACCEUI', 'Famille acceuillante')]
248 248

  
249
    # referential are not shared by connectors
250
    new_con = setup_access_rights(
251
        ToulouseMaelis.objects.get_or_create(
252
            slug='test2',
253
            zeep_wsse_username='maelis-webservice',
254
            zeep_wsse_password='maelis-password',
255
        )[0]
256
    )
257
    assert new_con.referential.filter(referential_name='Category').count() == 0
258
    with mock.patch('passerelle.utils.Request.post') as mocked_post:
259
        mocked_post.return_value = FakedResponse(
260
            content=get_xml_file('R_read_category_list.xml'), status_code=200
261
        )
262
        new_con.update_referential('Category')
263
    assert new_con.referential.filter(referential_name='Category').count() == 3
264
    assert con.referential.filter(referential_name='Category').count() == 2
265

  
249 266

  
250 267
def test_cron(db):
251 268
    assert Referential.objects.filter(referential_name='Category').count() == 3
252 269
    assert sorted(list({x.referential_name for x in Referential.objects.all()})) == [
253 270
        'CSP',
254 271
        'Category',
255 272
        'ChildIndicator',
256 273
        'Civility',
257
-