toulouse-maelis: add activity natures codes fields on connector (#75752)
This commit is contained in:
parent
0b49c8c5ae
commit
3dc2d69493
|
@ -0,0 +1,40 @@
|
|||
# Generated by Django 2.2.26 on 2023-03-24 16:30
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('toulouse_maelis', '0005_auto_20221221_1546'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='toulousemaelis',
|
||||
name='extrasco_nature_codes',
|
||||
field=models.TextField(
|
||||
blank=True,
|
||||
default='X',
|
||||
verbose_name='Codes des natures des activités extra-scolaires, séparés par des virgules',
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='toulousemaelis',
|
||||
name='loisir_nature_codes',
|
||||
field=models.TextField(
|
||||
blank=True,
|
||||
default='P,L,S,1,2,3,4,5,6,7,8,9',
|
||||
verbose_name='Codes des natures des activités loisirs, séparés par des virgules',
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='toulousemaelis',
|
||||
name='perisco_nature_codes',
|
||||
field=models.TextField(
|
||||
blank=True,
|
||||
default='A,R',
|
||||
verbose_name='Codes des natures des activités péri-scolaires, séparés par des virgules',
|
||||
),
|
||||
),
|
||||
]
|
|
@ -59,6 +59,21 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
zeep_wsse_password = models.CharField(
|
||||
max_length=64, blank=True, default='', verbose_name='Mot de passe WSSE'
|
||||
)
|
||||
perisco_nature_codes = models.TextField(
|
||||
blank=True,
|
||||
default='A,R',
|
||||
verbose_name='Codes des natures des activités péri-scolaires, séparés par des virgules',
|
||||
)
|
||||
extrasco_nature_codes = models.TextField(
|
||||
blank=True,
|
||||
default='X',
|
||||
verbose_name='Codes des natures des activités extra-scolaires, séparés par des virgules',
|
||||
)
|
||||
loisir_nature_codes = models.TextField(
|
||||
blank=True,
|
||||
default='P,L,S,' + ','.join(str(x) for x in range(1, 10)),
|
||||
verbose_name='Codes des natures des activités loisirs, séparés par des virgules',
|
||||
)
|
||||
|
||||
category = 'Connecteurs métiers'
|
||||
_category_ordering = ['Famille', 'Activités']
|
||||
|
@ -66,6 +81,15 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
class Meta:
|
||||
verbose_name = 'Toulouse Maelis'
|
||||
|
||||
def get_perisco_nature_codes(self):
|
||||
return [x.strip() for x in self.perisco_nature_codes.split(',') if x.strip()]
|
||||
|
||||
def get_extrasco_nature_codes(self):
|
||||
return [x.strip() for x in self.extrasco_nature_codes.split(',') if x.strip()]
|
||||
|
||||
def get_loisir_nature_codes(self):
|
||||
return [x.strip() for x in self.loisir_nature_codes.split(',') if x.strip()]
|
||||
|
||||
def get_client(self, wsdl_short_name):
|
||||
wsse = UsernameToken(self.zeep_wsse_username, self.zeep_wsse_password)
|
||||
wsdl_name = wsdl_short_name + 'Service?wsdl'
|
||||
|
|
|
@ -32,6 +32,7 @@ from passerelle.contrib.toulouse_maelis.utils import get_public_criterias, json_
|
|||
from passerelle.utils.jsonresponse import APIError
|
||||
from passerelle.utils.soap import SOAPError
|
||||
from passerelle.utils.templates import render_to_string
|
||||
from tests.test_manager import login
|
||||
from tests.utils import FakedResponse, ResponsesSoap, generic_endpoint_url, setup_access_rights
|
||||
|
||||
TEST_BASE_DIR = os.path.join(os.path.dirname(__file__), 'data', 'toulouse_maelis')
|
||||
|
@ -243,6 +244,63 @@ def con(db):
|
|||
return ToulouseMaelis.objects.get()
|
||||
|
||||
|
||||
def test_nature_codes(con):
|
||||
assert con.get_perisco_nature_codes() == ['A', 'R']
|
||||
assert con.get_extrasco_nature_codes() == ['X']
|
||||
assert con.get_loisir_nature_codes() == ['P', 'L', 'S', '1', '2', '3', '4', '5', '6', '7', '8', '9']
|
||||
|
||||
|
||||
def test_manager(admin_user, app, con):
|
||||
app = login(app)
|
||||
path = '/%s/%s/' % (con.get_connector_slug(), con.slug)
|
||||
resp = app.get(path)
|
||||
assert [
|
||||
x.text
|
||||
for x in resp.html.find('div', {'id': 'description'}).find_all('p')
|
||||
if x.text.startswith('Codes des natures des activités péri-scolaires')
|
||||
][0].split(':')[1].strip() == 'A,R'
|
||||
assert [
|
||||
x.text
|
||||
for x in resp.html.find('div', {'id': 'description'}).find_all('p')
|
||||
if x.text.startswith('Codes des natures des activités extra-scolaires')
|
||||
][0].split(':')[1].strip() == 'X'
|
||||
assert (
|
||||
'P,L,S,1,2,3'
|
||||
in [
|
||||
x.text
|
||||
for x in resp.html.find('div', {'id': 'description'}).find_all('p')
|
||||
if x.text.startswith('Codes des natures des activités loisirs')
|
||||
][0]
|
||||
)
|
||||
|
||||
path = '/manage/%s/%s/edit' % (con.get_connector_slug(), con.slug)
|
||||
resp = app.get(path)
|
||||
resp.form['title'] = 'Malis connector'
|
||||
resp.form['description'] = 'Malis connector'
|
||||
resp.form['perisco_nature_codes'] = 'P,L, O ,P'
|
||||
resp.form['extrasco_nature_codes'] = 'Z'
|
||||
resp.form['loisir_nature_codes'] = ''
|
||||
resp = resp.form.submit()
|
||||
resp = resp.follow()
|
||||
assert [
|
||||
x.text
|
||||
for x in resp.html.find('div', {'id': 'description'}).find_all('p')
|
||||
if x.text.startswith('Codes des natures des activités péri-scolaires')
|
||||
][0].split(':')[1].strip() == 'P,L, O ,P'
|
||||
assert [
|
||||
x.text
|
||||
for x in resp.html.find('div', {'id': 'description'}).find_all('p')
|
||||
if x.text.startswith('Codes des natures des activités extra-scolaires')
|
||||
][0].split(':')[1].strip() == 'Z'
|
||||
assert 'Codes des natures des activités loisirs' not in [
|
||||
x.text for x in resp.html.find('div', {'id': 'description'}).find_all('p')
|
||||
]
|
||||
con = ToulouseMaelis.objects.get()
|
||||
assert con.get_perisco_nature_codes() == ['P', 'L', 'O', 'P']
|
||||
assert con.get_extrasco_nature_codes() == ['Z']
|
||||
assert con.get_loisir_nature_codes() == []
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
def test_call_with_wrong_wsdl_url(mocked_get, con):
|
||||
mocked_get.side_effect = CONNECTION_ERROR
|
||||
|
|
Loading…
Reference in New Issue