From 4410326efb159f369696953509693139a87921f3 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Tue, 10 Oct 2017 22:42:11 -0500 Subject: [PATCH] Descargar XML --- source/app/controllers/main.py | 15 +++++++++++++++ source/app/main.py | 4 +++- source/app/middleware.py | 3 +++ source/app/models/db.py | 6 ++++++ source/app/models/main.py | 6 ++++++ source/static/js/controller/invoices.js | 9 +++++++++ source/static/js/controller/main.js | 1 + source/static/js/ui/invoices.js | 12 ------------ 8 files changed, 43 insertions(+), 13 deletions(-) diff --git a/source/app/controllers/main.py b/source/app/controllers/main.py index 5fcbe6a..0041f76 100644 --- a/source/app/controllers/main.py +++ b/source/app/controllers/main.py @@ -196,3 +196,18 @@ class AppFolios(object): resp.status = falcon.HTTP_200 else: resp.status = falcon.HTTP_204 + + +class AppDocumentos(object): + + def __init__(self, db): + self._db = db + #~ self._not_json = True + + def on_get(self, req, resp, type_doc, id_doc): + req.context['result'], file_name, content_type = \ + self._db.get_doc(type_doc, id_doc) + resp.append_header('Content-Disposition', + 'attachment; filename={}'.format(file_name)) + resp.content_type = content_type + resp.status = falcon.HTTP_200 diff --git a/source/app/main.py b/source/app/main.py index f701a7f..b423f09 100644 --- a/source/app/main.py +++ b/source/app/main.py @@ -14,7 +14,8 @@ from middleware import ( from models.db import StorageEngine from controllers.main import ( AppLogin, AppLogout, AppAdmin, AppEmisor, - AppMain, AppValues, AppPartners, AppProducts, AppInvoices, AppFolios + AppMain, AppValues, AppPartners, AppProducts, AppInvoices, AppFolios, + AppDocumentos ) from settings import DEBUG @@ -37,6 +38,7 @@ api.add_route('/emisor', AppEmisor(db)) api.add_route('/folios', AppFolios(db)) api.add_route('/main', AppMain(db)) api.add_route('/values/{table}', AppValues(db)) +api.add_route('/doc/{type_doc}/{id_doc}', AppDocumentos(db)) api.add_route('/partners', AppPartners(db)) api.add_route('/products', AppProducts(db)) api.add_route('/invoices', AppInvoices(db)) diff --git a/source/app/middleware.py b/source/app/middleware.py index 127271c..fc2d00f 100644 --- a/source/app/middleware.py +++ b/source/app/middleware.py @@ -46,6 +46,9 @@ class JSONTranslator(object): def process_response(self, req, resp, resource): if 'result' not in req.context: return + if '/doc/' in req.path: + resp.body = req.context['result'] + return resp.body = util.dumps(req.context['result']) diff --git a/source/app/models/db.py b/source/app/models/db.py index 81d45ec..fe07363 100644 --- a/source/app/models/db.py +++ b/source/app/models/db.py @@ -115,3 +115,9 @@ class StorageEngine(object): def add_folios(self, values): return main.Folios.add(values) + def get_doc(self, type_doc, id): + if type_doc == 'xml': + data, file_name = main.Facturas.get_xml(id) + content_type = 'application.xml' + return data, file_name, content_type + diff --git a/source/app/models/main.py b/source/app/models/main.py index c42b8d9..350b25c 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -933,6 +933,12 @@ class Facturas(BaseModel): class Meta: order_by = ('fecha',) + @classmethod + def get_xml(cls, id): + obj = Facturas.get(Facturas.id==id) + name = '{}{}_{}.xml'.format(obj.serie, obj.folio, obj.cliente.rfc) + return obj.xml, name + @classmethod def get_(cls, values): rows = tuple(Facturas diff --git a/source/static/js/controller/invoices.js b/source/static/js/controller/invoices.js index a4c2b98..eaf553d 100644 --- a/source/static/js/controller/invoices.js +++ b/source/static/js/controller/invoices.js @@ -640,3 +640,12 @@ function cmd_invoice_timbrar_click(){ } }) } + + +function grid_invoices_click(id, e, node){ + var row = this.getItem(id) + if(id.column == 'xml'){ + location = '/doc/xml/' + row.id + } + +} diff --git a/source/static/js/controller/main.js b/source/static/js/controller/main.js index b9e64ba..8830ebd 100644 --- a/source/static/js/controller/main.js +++ b/source/static/js/controller/main.js @@ -44,6 +44,7 @@ var controllers = { $$('grid_details').attachEvent('onBeforeEditStart', grid_details_before_edit_start) $$('grid_details').attachEvent('onBeforeEditStop', grid_details_before_edit_stop) $$('cmd_invoice_timbrar').attachEvent('onItemClick', cmd_invoice_timbrar_click) + $$('grid_invoices').attachEvent('onItemClick', grid_invoices_click) } } diff --git a/source/static/js/ui/invoices.js b/source/static/js/ui/invoices.js index 6d93c27..1cdcb61 100644 --- a/source/static/js/ui/invoices.js +++ b/source/static/js/ui/invoices.js @@ -17,18 +17,6 @@ var toolbar_invoices_util = [ ] -function doc_xml(obj){ - var node = "" - return node -} - - -function doc_pdf(obj){ - var node = "" - return node -} - - function get_icon(tipo){ var node = "" return node