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 unicodedata
|
||||
import uuid
|
||||
import zipfile
|
||||
from io import BytesIO
|
||||
from xml.etree import ElementTree as ET
|
||||
|
||||
import uno
|
||||
|
@ -913,3 +915,14 @@ def get_data(invoice, rfc, values):
|
|||
data['timbre'] = _timbre(doc, version, options)
|
||||
|
||||
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':
|
||||
data, file_name = main.Facturas.get_pdf(id, rfc)
|
||||
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
|
||||
|
||||
|
|
|
@ -1040,6 +1040,25 @@ class Facturas(BaseModel):
|
|||
doc = util.to_pdf(path, data)
|
||||
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
|
||||
def get_(cls, values):
|
||||
rows = tuple(Facturas
|
||||
|
|
Loading…
Reference in New Issue