0001-toulouse-maelis-add-connector-key-into-referentials-.patch
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 |
- |