debut dev piece complementaire

This commit is contained in:
Etienne Loupias 2018-06-19 09:43:29 +02:00
parent 18ffcd34b0
commit e1ee93e23f
1 changed files with 80 additions and 0 deletions

View File

@ -256,6 +256,9 @@ class CartADS(BaseResource):
finally:
os.remove(localFileName)
if formdata.values['commune_raw'] == None:
return {'message': 'commune_raw=None', 'err': 1}
message = '<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:ns0="http://tempuri.org/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays" '
message += 'xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><ns1:Body><ns0:NotifierDepotDossier>'
message += '<ns0:token>'+self.get_token_cartads()+'</ns0:token>'
@ -439,6 +442,83 @@ class CartADS(BaseResource):
resp = self.get_client('cartads-dossier.wsdl').service.GetInfosDossier(self.get_token_cartads(), id_dossier)
return {'data': sudsobject_to_dict(resp)}
@endpoint(perm='can_access')
def get_pieces_dossier_a_completer(self, request, id_dossier):
resp = self.get_client('cartads-piece.wsdl').service.GetPiecesDossierACompleter(self.get_token_cartads(), id_dossier)
dict_resp = sudsobject_to_dict(resp)
#return {'data': sudsobject_to_dict(resp)}
if not 'PieceDossier' in dict_resp:
return {'data': None, 'err': 0}
# On parcourt la liste pour la mettre sous la forme id, text, pour l'utiliser comme source de donnees dans le formulaire
out = []
for objet in dict_resp['PieceDossier']:
out_item = {}
out_item['id'] = objet["IdPiece"]
out_item['text'] = objet["CodePiece"] + " - " + objet["LibellePiece"]
out_item['Descriptif'] = objet["Descriptif"]
out_item['IdDosPiece'] = objet["IdDosPiece"]
out_item['CodePiece'] = objet["CodePiece"]
out.append(out_item)
def getKey(objet):
return objet['CodePiece']
return {'data': sorted(out, key=getKey)}
@endpoint(perm='can_access', methods=['get','post'])
def upload_file(self, request):
# get creation fields from payload
try:
formdata = FormData(json.loads(request.body), CREATION_SCHEMA)
except ValueError as e:
raise ParameterTypeError(e.message)
print >> open('/home/grandlyon/log/cartads.debug', 'a+'), datetime.datetime.now(), "piece_compl_var_fichier: ", formdata.values['piece_compl_var_fichier']
print >> open('/home/grandlyon/log/cartads.debug', 'a+'), datetime.datetime.now(), "piece_compl_var_fichier_raw: ", formdata.values['piece_compl_var_fichier_raw']
#TODO: faire un get de https://demarches.guichet-dev.grandlyon.com/permis-de-construire/21/files/form-piece_compl_depose-fichier/plan-situation.txt
if not formdata.values['piece_compl_var_fichier']:
return {'data': 'no piece_compl_var_fichier', 'err': 1}
message = '<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:tem="http://tempuri.org/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">'
message += '<soapenv:Header>'
message += '<tem:Token>'+self.get_token_cartads()+'</tem:Token>'
message += '<tem:NomFichier>'+formdata.values['piece_compl_var_fichier']+'</tem:NomFichier>'
message += '<tem:Length>'+length(formdata.values['piece_compl_var_fichier_raw'])+'</tem:Length>'
message += '<tem:InformationsComplementaires>'
message += '<arr:KeyValueOfstringstring><arr:Key>docDaact</arr:Key><arr:Value>doc</arr:Value></arr:KeyValueOfstringstring>'
message += '</tem:InformationsComplementaires>'
message += '<tem:IdDossier>'+'436205'+'</tem:IdDossier>'
message += '</soapenv:Header>'
message += '<soapenv:Body><tem:RemoteFileInfoUploadRequest>'
message += '<tem:FileByteStream>'+formdata.values['piece_compl_var_fichier_raw']+'</tem:FileByteStream>'
message += '</tem:RemoteFileInfoUploadRequest></soapenv:Body></soapenv:Envelope>'
headers = {'Authorization': self.get_token(),
'SOAPAction':'"http://tempuri.org/IServiceDocumentation/UploadFile"',
'Content-Type': 'text/xml; charset=UTF-8'}
#headers = u'Content-Length: 844 | Accept-Encoding: gzip, deflate | SOAPAction: "http://tempuri.org/IServicePortail/NotifierDepotDossier" | Accept: */* | User-Agent: python-requests/2.4.3 CPython/2.7.9 Linux/3.16.0-4-amd64 | Connection: keep-alive | Content-Type: text/xml; charset=utf-8 | '
#headers += u'Authorization: Bearer 458931e2-fbac-3087-875c-e0833d66f620' # + self.get_token()
print >> open('/home/grandlyon/log/cartads.debug', 'a+'), datetime.datetime.now(), "test avant le UploadFile"
print >> open('/home/grandlyon/log/cartads.debug', 'a+'), datetime.datetime.now(), "message: " + message
#TODO: faire en soap comme les autres ou adapter url pour prod
resp = self.requests.post('https://api-rec.grandlyon.com/ads-rec-documentation/',
data=message,
headers=headers)
return {'data': resp.content, 'err': 0}
def write_wcs_page(self, request, no_page, label_page, output_string, objet, id):
output_string += u"<field>\n"
output_string += u" <label>"+label_page+u"</label>\n"