cartads_cs: keep track of original formdata (#36438)
This commit is contained in:
parent
3ffc2d553c
commit
96fc053f7b
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.12 on 2019-09-25 13:27
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cartads_cs', '0008_auto_20190923_1712'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='cartadsdossier',
|
||||
name='formdata_url',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
]
|
|
@ -96,6 +96,7 @@ class CartaDSDossier(models.Model):
|
|||
cartads_steps_cache = JSONField(default={})
|
||||
last_update_datetime = models.DateTimeField(auto_now=True)
|
||||
subscribers = models.ManyToManyField(CartaDSSubscriber, blank=True)
|
||||
formdata_url = models.CharField(null=True, max_length=200)
|
||||
|
||||
|
||||
class AbstractCartaDSCS(BaseResource):
|
||||
|
@ -652,15 +653,19 @@ class AbstractCartaDSCS(BaseResource):
|
|||
'name_id': {
|
||||
'description': _('UUID of requester'),
|
||||
},
|
||||
'formdata_url': {
|
||||
'description': _('URL of user form'),
|
||||
},
|
||||
})
|
||||
def send(self, request, commune_id, type_dossier_id, objet_demande_id,
|
||||
tracking_code, email, name_id=None):
|
||||
tracking_code, email, name_id=None, formdata_url=None):
|
||||
dossier = CartaDSDossier(
|
||||
commune_id=commune_id,
|
||||
type_dossier_id=type_dossier_id,
|
||||
objet_demande_id=objet_demande_id,
|
||||
tracking_code=tracking_code,
|
||||
email=email,
|
||||
formdata_url=formdata_url
|
||||
)
|
||||
dossier.save()
|
||||
signer = Signer(salt='cart@ds_cs/dossier')
|
||||
|
@ -995,8 +1000,11 @@ class AbstractCartaDSCS(BaseResource):
|
|||
'description': _('Dossier Password'),
|
||||
'example_value': '5A3E36FE-80D3-45E5-9323-7415E04D3B14',
|
||||
},
|
||||
'formdata_url': {
|
||||
'description': _('URL of user form'),
|
||||
},
|
||||
})
|
||||
def join(self, request, name_id, dossier_number, dossier_password):
|
||||
def join(self, request, name_id, dossier_number, dossier_password, formdata_url=None):
|
||||
client = self.soap_client(wsdl_url=self.get_wsdl_url('ServiceSuiviNumerique'))
|
||||
try:
|
||||
resp = client.service.ActiverServiceSuiviNumerique(
|
||||
|
@ -1016,10 +1024,11 @@ class AbstractCartaDSCS(BaseResource):
|
|||
id_dossier)
|
||||
dossier.type_dossier_id = infos['CoTypeDossier']
|
||||
dossier.commune_id = self.get_commune_id(infos['Commune'])
|
||||
dossier.formdata_url = formdata_url
|
||||
dossier.save()
|
||||
|
||||
dossier.subscribers.add(CartaDSSubscriber.objects.get_or_create(name_id=name_id)[0])
|
||||
return {'err': 0, 'dossier_id': dossier.id}
|
||||
return {'err': 0, 'dossier_id': dossier.id, 'formdata_url': dossier.formdata_url}
|
||||
|
||||
|
||||
class CartaDSCS(AbstractCartaDSCS):
|
||||
|
|
|
@ -575,19 +575,21 @@ def test_join(connector, app, cached_data):
|
|||
# new
|
||||
with mock.patch('passerelle.apps.cartads_cs.models.CartaDSCS.soap_client') as client:
|
||||
client.return_value = mock.Mock(service=FakeService())
|
||||
resp = app.get('/cartads-cs/test/join?name_id=3456&dossier_number=123&dossier_password=XXX')
|
||||
resp = app.get('/cartads-cs/test/join?name_id=3456&dossier_number=123&dossier_password=XXX&formdata_url=https://etc.')
|
||||
dossier = CartaDSDossier.objects.get(id=resp.json['dossier_id'])
|
||||
assert dossier.commune_id == '2'
|
||||
assert dossier.type_dossier_id == 'PC'
|
||||
assert dossier.formdata_url == 'https://etc.'
|
||||
|
||||
# existing
|
||||
with mock.patch('passerelle.apps.cartads_cs.models.CartaDSCS.soap_client') as client:
|
||||
client.return_value = mock.Mock(service=FakeService())
|
||||
resp = app.get('/cartads-cs/test/join?name_id=2345&dossier_number=123&dossier_password=XXX')
|
||||
resp = app.get('/cartads-cs/test/join?name_id=2345&dossier_number=123&dossier_password=XXX&formdata_url=other')
|
||||
dossier = CartaDSDossier.objects.get(id=resp.json['dossier_id'])
|
||||
assert CartaDSDossier.objects.count() == 1
|
||||
assert dossier.commune_id == '2'
|
||||
assert dossier.type_dossier_id == 'PC'
|
||||
assert dossier.formdata_url == 'https://etc.'
|
||||
assert [x.name_id for x in dossier.subscribers.all().order_by('name_id')] == ['2345', '3456']
|
||||
|
||||
# check /files API afterwards
|
||||
|
|
Loading…
Reference in New Issue