cartads cs: use internal dossier id for roles (#36927)

This commit is contained in:
Frédéric Péters 2019-10-15 10:15:49 +02:00
parent 73d347595c
commit 2ac5001685
2 changed files with 5 additions and 4 deletions

View File

@ -775,6 +775,7 @@ class AbstractCartaDSCS(BaseResource):
dossier.zip_ack_response = str(resp)
dossier.save()
CartaDSFile.objects.filter(tracking_code=dossier.tracking_code).update(sent_to_cartads=now())
self.sync_subscribers_role(dossier)
@endpoint(pattern='^(?P<signed_dossier_id>[\w:_-]+)/$',
methods=['post'],
@ -1100,7 +1101,6 @@ class AbstractCartaDSCS(BaseResource):
def sync_subscribers_role(self, dossier):
if not getattr(settings, 'KNOWN_SERVICES', {}).get('authentic'):
return
dossier_number = dossier.cartads_numero_dossier
idp_service = settings.KNOWN_SERVICES['authentic'].values()[0]
# sync subscribers with an authentic role, this can fail and it will
# be retried again later.
@ -1110,8 +1110,8 @@ class AbstractCartaDSCS(BaseResource):
'api/roles/?get_or_create=slug&orig=%s' % idp_service.get('orig')),
key=idp_service.get('secret'))
response = self.requests.post(role_api_url,
json={'name': 'Suivi Cart@DS %s' % dossier_number,
'slug': '_cartads_%s' % slugify(dossier_number),
json={'name': 'Suivi Cart@DS (%s)' % dossier.id,
'slug': '_cartads_%s' % dossier.id,
})
if response.status_code != 200:
return

View File

@ -645,7 +645,8 @@ def test_role_sync(connector, app, cached_data):
def idp_mock(url, request):
assert url.netloc == 'idp.example.org'
if url.path == '/api/roles/':
assert request.body == '{"name": "Suivi Cart@DS 123", "slug": "_cartads_123"}'
dossier = CartaDSDossier.objects.all().first()
assert request.body == '{"name": "Suivi Cart@DS (%s)", "slug": "_cartads_%s"}' % (dossier.id, dossier.id)
return {'content': json.dumps({'uuid': 'role-uuid'}), 'status_code': 200}
elif url.path == '/api/roles/role-uuid/relationships/members/':
body = json.loads(request.body)