diff --git a/grandlyon_elyx/models.py b/grandlyon_elyx/models.py index 163cfc9..1f648dd 100644 --- a/grandlyon_elyx/models.py +++ b/grandlyon_elyx/models.py @@ -23,7 +23,10 @@ class ParameterTypeError(Exception): class GrandlyonElyx(BaseResource): token_url = models.URLField(_('Token URL'), max_length=256) token_authorization = models.CharField(_('Token Authorization'), max_length=128) - wsdl_url = models.CharField(_('WSDL URL'), max_length=256) # not URLField, it can be file:// + service_url = models.URLField('URL du service', max_length=256) + username = models.CharField(_('Username'), max_length=128) + password = models.CharField(_('Password'), max_length=128) + scope = models.CharField('Scope du service', max_length=128) verify_cert = models.BooleanField(default=True, verbose_name=_('Check HTTPS Certificate validity')) @@ -40,7 +43,7 @@ class GrandlyonElyx(BaseResource): return token headers = {'Authorization': 'Basic %s' % self.token_authorization} resp = self.requests.post(self.token_url, headers=headers, - data={'grant_type': 'password', 'username': 'svc-elxws-dev', 'password': 't5ZMrzgB'}, + data={'grant_type': 'password', 'username': self.username, 'password': self.password, 'scope': self.scope}, verify=self.verify_cert).json() token = '%s %s' % (resp.get('token_type'), resp.get('access_token')) timeout = int(resp.get('expires_in')) @@ -69,7 +72,7 @@ class GrandlyonElyx(BaseResource): if resp.status_code == 401: # ask for a new token, and retry request.headers['Authorization'] = self.get_token(renew=True) - resp = self.instance.requests.post(request.url, data=request.data, + resp = self.requests.post(request.url, data=request.data, headers=request.headers, verify=self.verify_cert) return resp @@ -106,21 +109,25 @@ class GrandlyonElyx(BaseResource): send_request = requests.Request() send_request.headers['Content-Type'] = 'application/json' - #TODO: param - send_request.url = 'https://api-rec.grandlyon.com/mercure_dev/1.0/bureau_notaires/1.0/rr/Demandes?operation=envoi' - #TODO: reference, login, civilite, plusieurs parcelles, mail + send_request.url = self.service_url+'/rr/Demandes?operation=envoi' send_request.data = u'{"objet_json":"demandePortail","ID_REQ_SIG":"'+user_email+'_'+timestamp+'",' send_request.data += u'"ID_REQ_DEMANDE":"'+formdata.values['type_de_demande']+'-'+formdata.values['tracking_code']+'","TYPE":"'+formdata.values['type_de_demande']+'","DATE_DEM":"'+datetime.datetime.now().strftime('%d/%m/%Y')+'",' send_request.data += u'"CIVILITE":"'+self.none_to_str(formdata.values['civilite_code'])+'","NOM":"'+self.none_to_str(formdata.values['nom'])+'","PRENOM":"'+self.none_to_str(formdata.values['prenom'])+'","ADRESSE":"'+self.none_to_str(formdata.values['numero_voie'])+' '+self.none_to_str(formdata.values['voie'])+'","BP":"'+self.none_to_str(formdata.values['boite_postale']) send_request.data += u'","CP":"'+self.none_to_str(formdata.values['code_postal'])+'","VILLE":"'+self.none_to_str(formdata.values['commune'])+'",' send_request.data += u'"REFERENCE":"'+self.none_to_str(formdata.values['reference'])+'","CLASSE_OBJETS":"ICPARCEL","LISTE_PARCELLES":"'+liste_parcelles+'","MAIL_DEMANDEUR":"'+user_email+'",' - send_request.data += u'"TYPE_CERTIF":"'+formdata.values['type_certificat'].replace(u'é',u'e').upper()+'",' + if formdata.values['type_de_demande'] == 'CA': + send_request.data += u'"TYPE_CERTIF":"ATTESTATION",' + if formdata.values['type_de_demande'] == 'RU': + send_request.data += u'"PLAN":true,' + send_request.data += u'"MODE_SYNTHETIQUE":true,' + send_request.data += u'"ADRESSE_DEFAUT":"",' send_request.data += u'"ENV":"'+formdata.values['env']+'"}' send_request.data = send_request.data.encode('utf-8') #print >> open('/home/grandlyon/log/elyx.debug', 'a+'), datetime.datetime.now(), "send_request.data:", send_request.data resp = self.send_post(send_request) + #print >> open('/home/grandlyon/log/elyx.debug', 'a+'), datetime.datetime.now(), "resp.content:", resp.content return {'data': json.loads(resp.content)} @endpoint(perm='can_access') @@ -128,16 +135,15 @@ class GrandlyonElyx(BaseResource): file = None send_request = requests.Request() - #TODO: param - send_request.url = 'https://api-rec.grandlyon.com/mercure_dev/1.0/bureau_notaires/1.0/rr/Demandes?operation=suivi&id='+iddemande + send_request.url = self.service_url+'/rr/Demandes?operation=suivi&id='+iddemande resp = self.send_get(send_request) data = json.loads(resp.content) if data['EtatDemande'] == "DEMANDE_DISPO": file_request = requests.Request() - #TODO: param - file_request.url = 'https://api-rec.grandlyon.com/mercure_dev/1.0/bureau_notaires/1.0/rs/ReadResource?url='+data['Url'] + #file_request.url = 'https://api-rec.grandlyon.com/mercure_dev/1.0/bureau_notaires/1.0/rs/ReadResource?url='+data['Url'] + file_request.url = self.service_url+'/rs/ReadResource?url='+data['Url'] #print >> open('/home/grandlyon/log/elyx.debug', 'a+'), datetime.datetime.now(), "file url:", file_request.url file_resp = self.send_get(file_request) file = {'b64_content': base64.b64encode(file_resp.content), 'filename': 'certificat.pdf'}