Projet

Général

Profil

0001-astregs-add-grant-demand-creation-endpoint-34593.patch

Serghei Mihai, 11 juillet 2019 18:34

Télécharger (12,7 ko)

Voir les différences:

Subject: [PATCH] astregs: add grant demand creation endpoint (#34593)

 passerelle/apps/astregs/models.py             | 59 +++++++++++++++++++
 tests/data/astregs/ContactCreation.xml        |  2 +
 .../data/astregs/DossierCreationResponse.xml  |  1 +
 tests/test_astregs.py                         | 39 ++++++++++++
 4 files changed, 101 insertions(+)
 create mode 100644 tests/data/astregs/ContactCreation.xml
 create mode 100644 tests/data/astregs/DossierCreationResponse.xml
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&amp;#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
-