0001-astregs-add-grant-demand-creation-endpoint-34593.patch
passerelle/apps/astregs/models.py | ||
---|---|---|
188 | 188 |
} |
189 | 189 |
} |
190 | 190 | |
191 |
GRANT_SCHEMA = { |
|
192 |
"$schema": "http://json-schema.org/draft-03/schema#", |
|
193 |
"title": "AstreGS grant", |
|
194 |
"description": "", |
|
195 |
"type": "object", |
|
196 |
"properties": { |
|
197 |
"Libelle": { |
|
198 |
"type": "string", |
|
199 |
"required": True |
|
200 |
}, |
|
201 |
"LibelleCourt": { |
|
202 |
"type": "string", |
|
203 |
"required": True |
|
204 |
}, |
|
205 |
"ModGestion": { |
|
206 |
"type": "string", |
|
207 |
"required": True, |
|
208 |
"enum": ["1", "2", "3", "4"] |
|
209 |
}, |
|
210 |
"TypeAide": { |
|
211 |
"type": "string", |
|
212 |
"required": True |
|
213 |
}, |
|
214 |
"Sens": { |
|
215 |
"type": "string", |
|
216 |
"required": True |
|
217 |
}, |
|
218 |
"CodeTiersDem": { |
|
219 |
"type": "string", |
|
220 |
"required": True |
|
221 |
}, |
|
222 |
"CodeServiceGestionnaire": { |
|
223 |
"type": "string", |
|
224 |
"required": True |
|
225 |
}, |
|
226 |
"CodeServiceUtilisateur": { |
|
227 |
"type": "string", |
|
228 |
"required": True |
|
229 |
} |
|
230 |
} |
|
231 |
} |
|
232 | ||
233 | ||
191 | 234 |
class AstreGS(BaseResource): |
192 | 235 |
wsdl_base_url = models.URLField(_('Webservices base URL')) |
193 | 236 |
username = models.CharField(_('Username'), max_length=32) |
... | ... | |
464 | 507 |
return {'data': serialize_object(r)} |
465 | 508 | |
466 | 509 | |
510 |
@endpoint(name='create-grant-demand', perm='can_access', |
|
511 |
post={'description': _('Create grant demand'), |
|
512 |
'request_body': { |
|
513 |
'schema': { |
|
514 |
'application/json': GRANT_SCHEMA |
|
515 |
} |
|
516 |
} |
|
517 |
} |
|
518 |
) |
|
519 |
def create_grant_demand(self, request, post_data): |
|
520 |
r = self.call('Dossier', 'Creation', |
|
521 |
Dossier=post_data |
|
522 |
) |
|
523 |
return {'data': serialize_object(r)} |
|
524 | ||
525 | ||
467 | 526 |
class Link(models.Model): |
468 | 527 |
resource = models.ForeignKey(AstreGS) |
469 | 528 |
name_id = models.CharField(max_length=32) |
tests/data/astregs/ContactCreation.xml | ||
---|---|---|
1 |
<?xml version='1.0' encoding='utf-8'?> |
|
2 |
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><soap-env:Body><ns0:creation xmlns:ns0="http://gfi.astre.webservices/rf/gf/contact"><ns0:request><ns0:Authentification><ns0:USERNOM>CS-FORML</ns0:USERNOM><ns0:USERPWD>G63mn9H2bJ</ns0:USERPWD></ns0:Authentification><ns0:Contexte><ns0:Organisme>CG06</ns0:Organisme><ns0:Budget>01</ns0:Budget><ns0:Exercice>2019</ns0:Exercice></ns0:Contexte><ns0:Contact><ns0:idContact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:CodeContact>AS207002</ns0:CodeContact><ns0:CodeTitreCivilite>035</ns0:CodeTitreCivilite><ns0:Nom>Mihai</ns0:Nom><ns0:Prenom>Serghei</ns0:Prenom><ns0:NomDeJeuneFille xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:DateDeNaissance xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:FormuleCivilite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:IntituleTitre2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:IntituleTitre3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:IntituleTitre4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:SituationDeFamille xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:CodeFonction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:LibelleFonction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:TelephoneBureau>01 43 35 01 35</ns0:TelephoneBureau><ns0:TelephoneMobile>0607080900</ns0:TelephoneMobile><ns0:NumeroDeFax xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:AdresseMail>smihai@entrouvert.com</ns0:AdresseMail><ns0:PageWeb>http://entrouvert.com</ns0:PageWeb><ns0:AdresseDestinataire xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:AdresseComplementaire xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:ComplementGeographique xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:RueVoie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:ComplementVoie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:CodePostal xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:Ville xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:CodePays xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:LibellePays xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:LibelleAdresse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns0:Commentaire>Test création contact</ns0:Commentaire></ns0:Contact></ns0:request></ns0:creation></soap-env:Body></soap-env:Envelope> |
tests/data/astregs/DossierCreationResponse.xml | ||
---|---|---|
1 |
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns1:creationResponse xmlns:ns1="http://gfi.astre.webservices/gad/dossier"><ns1:response><ns1:DossierReturn><ns1:CodeDossier>2019_06407</ns1:CodeDossier><ns1:Exercice>2019</ns1:Exercice><ns1:GestionCourrier></ns1:GestionCourrier><ns1:ArticleLib></ns1:ArticleLib><ns1:Libelle>test grant demand</ns1:Libelle><ns1:LibelleCourt>test</ns1:LibelleCourt><ns1:ModGestion>1</ns1:ModGestion><ns1:CodeSession></ns1:CodeSession><ns1:LicSession xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="1" /><ns1:CodeDossierCommun></ns1:CodeDossierCommun><ns1:LibelleDossierCommun></ns1:LibelleDossierCommun><ns1:DateSession xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="1" /><ns1:CodeZonage></ns1:CodeZonage><ns1:LibelleZonage></ns1:LibelleZonage><ns1:OpMere xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="1" /><ns1:PhMere xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="1" /><ns1:Phase></ns1:Phase><ns1:LicPhase></ns1:LicPhase><ns1:CodeServiceGestionnaire>SGG</ns1:CodeServiceGestionnaire><ns1:LibelleServiceGestionnaire>Direction de l&#39;éducation, du sport et de la culture</ns1:LibelleServiceGestionnaire><ns1:CodeServiceUtilisateur>SUG4</ns1:CodeServiceUtilisateur><ns1:LibelleServiceUtilisateur>SPORTS ET JEUNESSE</ns1:LibelleServiceUtilisateur><ns1:TypeAide>F</ns1:TypeAide><ns1:CodeAide>030105</ns1:CodeAide><ns1:LibelleAide>Actions culturelles - Etab publics locaux</ns1:LibelleAide><ns1:Sens>D</ns1:Sens><ns1:CodeRegle></ns1:CodeRegle><ns1:LibelleRegle></ns1:LibelleRegle><ns1:indAideNat></ns1:indAideNat><ns1:indAssoc></ns1:indAssoc><ns1:CodManif></ns1:CodManif><ns1:LibManif></ns1:LibManif><ns1:CodeSection></ns1:CodeSection><ns1:CodeTypeSubvention></ns1:CodeTypeSubvention><ns1:LibelleTypeSubvention></ns1:LibelleTypeSubvention><ns1:CodeTypeIntervention></ns1:CodeTypeIntervention><ns1:LibelleTypeIntervention></ns1:LibelleTypeIntervention><ns1:CodeTypeOperation></ns1:CodeTypeOperation><ns1:LibelleTypeOperation></ns1:LibelleTypeOperation><ns1:IndicateurConvention>0</ns1:IndicateurConvention><ns1:NbConventions>0</ns1:NbConventions><ns1:CodInstructeur></ns1:CodInstructeur><ns1:Instructeur></ns1:Instructeur><ns1:DateDecision></ns1:DateDecision><ns1:IndDebTrav></ns1:IndDebTrav><ns1:DateDebTrav></ns1:DateDebTrav><ns1:DateCaducite></ns1:DateCaducite><ns1:NumGedelib></ns1:NumGedelib><ns1:CodeTiersDem>487463</ns1:CodeTiersDem><ns1:NomTiersDem>My Tiers</ns1:NomTiersDem><ns1:CodPostVilleDemandeur></ns1:CodPostVilleDemandeur><ns1:CodeTiersAttrib></ns1:CodeTiersAttrib><ns1:NomTiersAttrib xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="1" /><ns1:CodPostVilleAttributaire xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="1" /><ns1:Maitre_oeuvre></ns1:Maitre_oeuvre><ns1:CodeProgramme></ns1:CodeProgramme><ns1:LibelleProgramme></ns1:LibelleProgramme><ns1:ExEnv></ns1:ExEnv><ns1:NumEnveloppe></ns1:NumEnveloppe><ns1:LigneCredit></ns1:LigneCredit><ns1:Operation></ns1:Operation><ns1:LicOperation></ns1:LicOperation><ns1:TauxTVA></ns1:TauxTVA><ns1:CoutTravauxHT></ns1:CoutTravauxHT><ns1:MontantVote></ns1:MontantVote><ns1:TauxVote></ns1:TauxVote><ns1:MontantDemande></ns1:MontantDemande><ns1:TauxDemande></ns1:TauxDemande><ns1:CoutTravauxTTC></ns1:CoutTravauxTTC><ns1:MontantSubventionnable></ns1:MontantSubventionnable><ns1:MontantPropose></ns1:MontantPropose><ns1:TauxPropose></ns1:TauxPropose><ns1:Mandat>0,00</ns1:Mandat><ns1:DateEnCours>11/07/2019</ns1:DateEnCours><ns1:CodeStatut>ENR</ns1:CodeStatut><ns1:InventTypInt></ns1:InventTypInt><ns1:NumDemande></ns1:NumDemande><ns1:DemandesDePaiement>0,00</ns1:DemandesDePaiement><ns1:NoVersArc></ns1:NoVersArc><ns1:CommDossier></ns1:CommDossier><ns1:IndDossierComplet>0</ns1:IndDossierComplet><ns1:IId1></ns1:IId1><ns1:IId2></ns1:IId2><ns1:IId3></ns1:IId3><ns1:IId4></ns1:IId4><ns1:IId5></ns1:IId5><ns1:IId6></ns1:IId6><ns1:IId7></ns1:IId7><ns1:IId8></ns1:IId8><ns1:IId9></ns1:IId9><ns1:IId10></ns1:IId10><ns1:VId1></ns1:VId1><ns1:VId2></ns1:VId2><ns1:VId3></ns1:VId3><ns1:VId4></ns1:VId4><ns1:VId5></ns1:VId5><ns1:VId6></ns1:VId6><ns1:VId7></ns1:VId7><ns1:VId8></ns1:VId8><ns1:VId9></ns1:VId9><ns1:VId10></ns1:VId10><ns1:IndicateurHtSubventionnable>1</ns1:IndicateurHtSubventionnable><ns1:CodeBudget>01</ns1:CodeBudget><ns1:CodDossierAssocie></ns1:CodDossierAssocie><ns1:CodeExtranetDoss></ns1:CodeExtranetDoss><ns1:LibCourrier1></ns1:LibCourrier1><ns1:LibCourrier2></ns1:LibCourrier2><ns1:LibelleTypeReunion></ns1:LibelleTypeReunion><ns1:CommPret></ns1:CommPret><ns1:NoBoiteArc></ns1:NoBoiteArc><ns1:DateCreation>11/07/2019</ns1:DateCreation><ns1:DateMaj></ns1:DateMaj></ns1:DossierReturn></ns1:response></ns1:creationResponse></soapenv:Body></soapenv:Envelope> |
tests/test_astregs.py | ||
---|---|---|
347 | 347 |
assert resp.json['data'] |
348 | 348 |
assert resp.json['data']['RefDocument'] == '111' |
349 | 349 |
assert resp.json['data']['NumVersion'] == '1' |
350 | ||
351 | ||
352 |
@mock.patch('passerelle.utils.Request.get') |
|
353 |
@mock.patch('passerelle.utils.Request.post') |
|
354 |
def test_create_grant_demand(mocked_post, mocked_get, connector, app): |
|
355 |
mocked_get.return_value = mock.Mock(content=get_xml_file('Dossier.wsdl')) |
|
356 |
mocked_post.return_value = mock.Mock(content=get_xml_file('DossierCreationResponse.xml'), |
|
357 |
headers={'Content-Type': 'text/xml'}, |
|
358 |
status_code=200) |
|
359 |
payload = { |
|
360 |
'Libelle': 'test grant demand', |
|
361 |
'LibelleCourt': 'test', |
|
362 |
'ModGestion': '1', |
|
363 |
'TypeAide': 'F', |
|
364 |
'Sens': 'D', |
|
365 |
'CodeTiersDem': '487473', |
|
366 |
'CodeServiceGestionnaire': 'SGG', |
|
367 |
'CodeAide': '030105', |
|
368 |
'CodeServiceUtilisateur': '030105', |
|
369 |
} |
|
370 |
resp = app.post_json('/astregs/test/create-grant-demand', params=payload) |
|
371 |
assert resp.json['data'] |
|
372 |
data = resp.json['data'] |
|
373 |
assert data['CodeDossier'] =='2019_06407' |
|
374 |
assert data['Exercice'] == '2019' |
|
375 |
assert data['Libelle'] == 'test grant demand' |
|
376 |
assert data['LibelleCourt'] == 'test' |
|
377 |
assert data['ModGestion'] == '1' |
|
378 |
assert data['CodeServiceGestionnaire'] == 'SGG' |
|
379 |
assert data['CodeServiceUtilisateur'] == 'SUG4' |
|
380 |
assert data['LibelleServiceUtilisateur'] == 'SPORTS ET JEUNESSE' |
|
381 |
assert data['TypeAide'] == 'F' |
|
382 |
assert data['CodeAide'] == '030105' |
|
383 |
assert data['LibelleAide'] == 'Actions culturelles - Etab publics locaux' |
|
384 |
assert data['Sens'] == 'D' |
|
385 |
assert data['CodeTiersDem'] == '487463' |
|
386 |
assert data['NomTiersDem'] == 'My Tiers' |
|
387 |
assert data['CodeStatut'] == 'ENR' |
|
388 |
assert data['DateCreation'] == '11/07/2019' |
|
350 |
- |