forked from elmau/empresa-libre
Generar ZIP
This commit is contained in:
parent
09e3b46eca
commit
28bb6a74d1
|
@ -14,6 +14,8 @@ import tempfile
|
||||||
import time
|
import time
|
||||||
import unicodedata
|
import unicodedata
|
||||||
import uuid
|
import uuid
|
||||||
|
import zipfile
|
||||||
|
from io import BytesIO
|
||||||
from xml.etree import ElementTree as ET
|
from xml.etree import ElementTree as ET
|
||||||
|
|
||||||
import uno
|
import uno
|
||||||
|
@ -913,3 +915,14 @@ def get_data(invoice, rfc, values):
|
||||||
data['timbre'] = _timbre(doc, version, options)
|
data['timbre'] = _timbre(doc, version, options)
|
||||||
|
|
||||||
return path, data
|
return path, data
|
||||||
|
|
||||||
|
|
||||||
|
def to_zip(*files):
|
||||||
|
zip_buffer = BytesIO()
|
||||||
|
|
||||||
|
with zipfile.ZipFile(zip_buffer, 'a', zipfile.ZIP_DEFLATED, False) as zip_file:
|
||||||
|
for data, file_name in files:
|
||||||
|
zip_file.writestr(file_name, data)
|
||||||
|
|
||||||
|
return zip_buffer.getvalue()
|
||||||
|
|
||||||
|
|
|
@ -122,5 +122,8 @@ class StorageEngine(object):
|
||||||
if type_doc == 'pdf':
|
if type_doc == 'pdf':
|
||||||
data, file_name = main.Facturas.get_pdf(id, rfc)
|
data, file_name = main.Facturas.get_pdf(id, rfc)
|
||||||
content_type = 'application/pdf'
|
content_type = 'application/pdf'
|
||||||
|
if type_doc == 'zip':
|
||||||
|
data, file_name = main.Facturas.get_zip(id, rfc)
|
||||||
|
content_type = 'application/octet-stream'
|
||||||
return data, file_name, content_type
|
return data, file_name, content_type
|
||||||
|
|
||||||
|
|
|
@ -1040,6 +1040,25 @@ class Facturas(BaseModel):
|
||||||
doc = util.to_pdf(path, data)
|
doc = util.to_pdf(path, data)
|
||||||
return doc, name
|
return doc, name
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_zip(cls, id, rfc):
|
||||||
|
obj = Facturas.get(Facturas.id==id)
|
||||||
|
name_zip = '{}{}_{}.zip'.format(obj.serie, obj.folio, obj.cliente.rfc)
|
||||||
|
if obj.uuid is None:
|
||||||
|
return b'', name_zip
|
||||||
|
|
||||||
|
file_xml = cls.get_xml(id)
|
||||||
|
if not file_xml[0]:
|
||||||
|
return b'', name_zip
|
||||||
|
|
||||||
|
file_pdf = cls.get_pdf(id, rfc)
|
||||||
|
if not file_pdf[0]:
|
||||||
|
return b'', name_zip
|
||||||
|
|
||||||
|
file_zip = util.to_zip(file_xml, file_pdf)
|
||||||
|
|
||||||
|
return file_zip, name_zip
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_(cls, values):
|
def get_(cls, values):
|
||||||
rows = tuple(Facturas
|
rows = tuple(Facturas
|
||||||
|
|
Loading…
Reference in New Issue