From 013f62a35abdad728cffd8dc49160e1426e2f517 Mon Sep 17 00:00:00 2001 From: tux091 <renaud.legac@free.fr> Date: Wed, 7 Mar 2012 21:39:39 +0100 Subject: [PATCH] Introduce a mechanism to download report in different formats using iframe. --- controllers/reports.py | 27 +++++++++++++++++++++------ languages/fr-fr.py | 1 + models/dummy.py | 2 +- models/widgets.py | 2 +- views/reports/report_2.html | 3 +++ views/reports/report_2.latex | 11 +++++++++++ 6 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 views/reports/report_2.html create mode 100644 views/reports/report_2.latex diff --git a/controllers/reports.py b/controllers/reports.py index d5719027..a58620e6 100644 --- a/controllers/reports.py +++ b/controllers/reports.py @@ -20,10 +20,25 @@ def report_2(): """Return the url arguments """ - - s = "" - print request.post_vars - for k in request.post_vars: - s += "<br>%s: %s" % (k, request.post_vars[k]) - return '<h3>report_2</h3>'+s \ No newline at end of file + vars = request.vars + # user request a file with a specific format (latex,...) + # return to the browser na iframe balise with a new URL + # the browser will request the file locate at the url + if vars.Foo1My_format and vars.Foo1My_format == 'latex': + + # remove the field use to select the file format + # in order to avoid circular loop + del vars.Foo1My_format + + s = IFRAME(_id='MyId', + _frameborder=0, + _width=0, + _height=0, + _css='display:none;visibility:hidden;height:0px;', + _src=URL('reports', 'report_2.latex', vars=vars)).xml() + + return s + + # standart reponse + return dict(test=vars) \ No newline at end of file diff --git a/languages/fr-fr.py b/languages/fr-fr.py index 583ddf00..02f38304 100644 --- a/languages/fr-fr.py +++ b/languages/fr-fr.py @@ -27,6 +27,7 @@ 'Last Page': 'Dernière Page', 'Max Records': 'Max Records', 'My Date': 'My Date', +'My Format': 'My Format', 'My Int': 'My Int', 'My List': 'My List', 'My String': 'My String', diff --git a/models/dummy.py b/models/dummy.py index f93c67bf..b18d69e7 100644 --- a/models/dummy.py +++ b/models/dummy.py @@ -16,4 +16,4 @@ dummy.define_table("foo1", Field('my_string', 'string'), Field('my_int', 'integer', requires=IS_INT_IN_RANGE(0, 100)), Field('my_date', 'date'), - Field('my_list', requires=IS_IN_SET(['a', 'b', 'c']))) + Field('my_format', default='html', requires=IS_IN_SET(['html', 'latex', 'pdf']))) diff --git a/models/widgets.py b/models/widgets.py index 92c71894..0c6751a5 100755 --- a/models/widgets.py +++ b/models/widgets.py @@ -192,7 +192,7 @@ configurator = lambda tablename: dbui.to_gridPanel(db[tablename]) gridNode.add_children(db.tables, func=configurator) reportNode = dbui.Node(T('Reports')) -node = dbui.Panel(html='salut ma poule') +node = dbui.Panel(html="salut ma poule") reportNode.add_child(T('report_1'), node) fields = dbui.to_fields(dummy.foo1) diff --git a/views/reports/report_2.html b/views/reports/report_2.html new file mode 100644 index 00000000..5181b246 --- /dev/null +++ b/views/reports/report_2.html @@ -0,0 +1,3 @@ +<h3>Report_2</h3> +{{for k in test:}} + <br>{{=k}}: {{=test[k]}}{{pass}} diff --git a/views/reports/report_2.latex b/views/reports/report_2.latex new file mode 100644 index 00000000..e0efffea --- /dev/null +++ b/views/reports/report_2.latex @@ -0,0 +1,11 @@ +\documentclass[english]{article} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{babel} +\begin{document} +\section*{Test} +\begin{enumerate} + {{for k in test:}} + \item {{=k}}: {{=test[k]}}{{pass}} +\end{enumerate} +\end{document} \ No newline at end of file -- GitLab