From 78e09640cec85f8c32ab1a39c9f5a20b89908c11 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Fri, 19 Dec 2014 13:19:55 +0100 Subject: [PATCH 1/6] [ADD] report_custom_filename --- report_custom_filename/__init__.py | 22 ++++++++ report_custom_filename/__openerp__.py | 53 ++++++++++++++++++ .../controllers/__init__.py | 21 +++++++ report_custom_filename/controllers/reports.py | 53 ++++++++++++++++++ .../i18n/report_custom_filename.pot | 34 +++++++++++ report_custom_filename/model/__init__.py | 21 +++++++ .../model/ir_actions_report_xml.py | 35 ++++++++++++ .../static/description/icon.png | Bin 0 -> 1817 bytes .../view/ir_actions_report_xml.xml | 14 +++++ 9 files changed, 253 insertions(+) create mode 100644 report_custom_filename/__init__.py create mode 100644 report_custom_filename/__openerp__.py create mode 100644 report_custom_filename/controllers/__init__.py create mode 100644 report_custom_filename/controllers/reports.py create mode 100644 report_custom_filename/i18n/report_custom_filename.pot create mode 100644 report_custom_filename/model/__init__.py create mode 100644 report_custom_filename/model/ir_actions_report_xml.py create mode 100644 report_custom_filename/static/description/icon.png create mode 100644 report_custom_filename/view/ir_actions_report_xml.xml diff --git a/report_custom_filename/__init__.py b/report_custom_filename/__init__.py new file mode 100644 index 00000000..cba0a4dc --- /dev/null +++ b/report_custom_filename/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import controllers +from . import model diff --git a/report_custom_filename/__openerp__.py b/report_custom_filename/__openerp__.py new file mode 100644 index 00000000..a9808390 --- /dev/null +++ b/report_custom_filename/__openerp__.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +{ + "name": "Custom report filenames", + "summary": "Configure the filename to use when downloading a report", + "version": "1.0", + "author": "Therp BV", + "license": "AGPL-3", + "complexity": "normal", + "description": """ +This addon allows for custom filenames for reports. Currently, only old-style +reports (ir.actions.report.xml) are supported, it should be simple to add +support for qweb reports. + +Acknowledgements +================ +Icon courtesy of http://www.picol.org/ (download_settings.svg) + """, + "category": "Reporting", + "depends": [ + 'web', + 'email_template', + ], + "data": [ + "view/ir_actions_report_xml.xml", + ], + "test": [ + ], + "auto_install": False, + "installable": True, + "application": False, + "external_dependencies": { + 'python': ['jinja2'], + }, +} diff --git a/report_custom_filename/controllers/__init__.py b/report_custom_filename/controllers/__init__.py new file mode 100644 index 00000000..329fca16 --- /dev/null +++ b/report_custom_filename/controllers/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import reports diff --git a/report_custom_filename/controllers/reports.py b/report_custom_filename/controllers/reports.py new file mode 100644 index 00000000..1ff58ed0 --- /dev/null +++ b/report_custom_filename/controllers/reports.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +import simplejson +from openerp import http +from openerp.addons.web.controllers import main +from openerp.addons.email_template import email_template + + +class Reports(main.Reports): + @http.route('/web/report', type='http', auth="user") + @main.serialize_exception + def index(self, action, token): + result = super(Reports, self).index(action, token) + action = simplejson.loads(action) + context = dict(http.request.context) + context.update(action["context"]) + report_xml = http.request.session.model('ir.actions.report.xml') + report_ids = report_xml.search( + [('report_name', '=', action['report_name'])], + 0, False, False, context) + for report in report_xml.browse(report_ids): + if not report.download_filename: + continue + objects = http.request.session.model(context['active_model'])\ + .browse(context['active_ids']) + generated_filename = email_template.mako_template_env\ + .from_string(report.download_filename)\ + .render({ + 'objects': objects, + 'o': objects[0], + 'object': objects[0], + }) + result.headers['Content-Disposition'] = main.content_disposition( + generated_filename) + return result diff --git a/report_custom_filename/i18n/report_custom_filename.pot b/report_custom_filename/i18n/report_custom_filename.pot new file mode 100644 index 00000000..fa2ec82c --- /dev/null +++ b/report_custom_filename/i18n/report_custom_filename.pot @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_custom_filename +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-12-19 12:17+0000\n" +"PO-Revision-Date: 2014-12-19 12:17+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: report_custom_filename +#: field:ir.actions.report.xml,download_filename:0 +msgid "Download filename" +msgstr "" + +#. module: report_custom_filename +#: help:ir.actions.report.xml,download_filename:0 +msgid "Fill in this field to have a custom file name when downloading this report. This string is evaluated as a jinja2 expression.\n" +"You can use python expressions, `objects` is a browse record list of the objects for which the report is being generated.\n" +"Check for this list's length to determine if it is a report being printed for multiple records or not. You also have access to `o`, which is the first record in the list" +msgstr "" + +#. module: report_custom_filename +#: model:ir.model,name:report_custom_filename.model_ir_actions_report_xml +msgid "ir.actions.report.xml" +msgstr "" + diff --git a/report_custom_filename/model/__init__.py b/report_custom_filename/model/__init__.py new file mode 100644 index 00000000..b7da7af1 --- /dev/null +++ b/report_custom_filename/model/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import ir_actions_report_xml diff --git a/report_custom_filename/model/ir_actions_report_xml.py b/report_custom_filename/model/ir_actions_report_xml.py new file mode 100644 index 00000000..27cd638c --- /dev/null +++ b/report_custom_filename/model/ir_actions_report_xml.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp import models, fields + + +class IrActionsReportXml(models.Model): + _inherit = 'ir.actions.report.xml' + + download_filename = fields.Char( + 'Download filename', + help='Fill in this field to have a custom file name when downloading ' + 'this report. This string is evaluated as a jinja2 expression.\n' + 'You can use python expressions, `objects` is a browse record list of ' + 'the objects for which the report is being generated.\n' + 'Check for this list\'s length to determine if it is a report being ' + 'printed for multiple records or not. You also have access to `o`, ' + 'which is the first record in the list') diff --git a/report_custom_filename/static/description/icon.png b/report_custom_filename/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..df9ef01c1a78075d2df5de33a105ecf917d5a580 GIT binary patch literal 1817 zcmai#X*kpi8^-^$G{!O*>!`?UDN2$hOM@_DhM~qe6spVEmzg<@tXanrBAHUi5^6?< zW2vD<(O8akZUC`ya$&j??24hLf3tTxGDP5)o>fSOUKdwL+pq6V>!& zpjeUyJe`Y|mP@#+ss&cJ`u`95peH)&M8BnYV+`YxF$wjz)IXAi2X;YsAR-ANU=52f zP#MS=Gy<8YA1AyiJP-#9hZH0nB;~5;Vg-?+Pa!K{oI1Sg2MjHB`$5^p@1}Yl?AUPgRmK~K;a%4SXEKx1kcH>N-XY}*iiDJU!TmsRHQ<5vs$_<`m;T> z%k3^Z79>QGPSH>%rPHgAxI~hn9w-mwFnrM+^^+CL6bRTph^~)LC|nTC0=)chz-Y{d zNJW@>s`kpOaIXXSf+6sqK=tj~)L!t5l)_7XVvO}bMLkX1J^rqAlcOxH9&oxt%2MOu za)HZ-!%TrI&K2j}>BllC8lec!KjQg^8Y;Rv+hS|{z0U(pdK$&BuTY(cp_+yvI@+B( z9?Q|RoF-9BYlrVmBS|DS;HEH#SUv(`*o%~_+(6Ej)V-CX$JC4%QS_#U&(F++18lG` z;QJXZ?}Y3WbRUrGtAyvY*7Y`bPEIS>yQ-R^w#)}$p92X^gy#~Ul%-JAQfKff_q9h) z8@FHRwVY!EanB;ZnTu!oeh4}{j=Lb=H9>(@gX8qMk%Y6?tjx+2LL=^fI~MeFN=`3E zHZpIfFwQ>_=+cm1|KRt67`S01|DV4U$tg4J> zKZ?w%!+5lxhP7if>OtaNP1X4Msj%yK{AD!dXwenH)$e^FiQUi)>D=OME-rEmQe^j4$<^xGe1S zR}t3VcY>iZQ>F{CMcSg3#u8f;d+!V7254T0%8gLaE;lY96cL2*KD~TZgN!aN9cJ_` z1wz*nW<6uj8^?KM*_%u=5~JfvL_4ETegE+4bJenFbYDl5K#F(1FTFM0xAaR_e_1W)R zIWOZ~rwUYj1dSB-I#J-CC*01-zFx&KoB($)UbX>{$ySFgK3P@q4|?=pPSY+qF^ay; z2F2;I8GM$cRu7o;9q7V}e6iu?kr(?@)x~x+tczU_)+p4APr_Ic-04{Q=-h9nh>kcv zAEeR%o}k5&57Xd|(7qk;8U$uUQnBI9iLPVE?p>jD`M6~cW-mr%!30dl!7+MWmu!0! z>G5ooI8CaV@RohibTzZp_`CGxoi;6_iGBn3u-iJE22{QLP`!Gb1M-W$;-+b9zE0k2 z-K$CN?e#`&c0=t+>8S1_iDn(6GA-FPOibtreh6wSu=q}NSY`N#O(0Lk*yj(v~f6 z; + + + + ir.actions.report.xml + + + + + + + + + From db8b04f3d155da5fb5faa9ab730c1492c8599618 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Fri, 23 Jan 2015 08:57:13 +0100 Subject: [PATCH 2/6] [ADD] move description to README.rst --- report_custom_filename/README.rst | 40 +++++++++++++++++++++++++++ report_custom_filename/__openerp__.py | 9 ------ 2 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 report_custom_filename/README.rst diff --git a/report_custom_filename/README.rst b/report_custom_filename/README.rst new file mode 100644 index 00000000..93357360 --- /dev/null +++ b/report_custom_filename/README.rst @@ -0,0 +1,40 @@ +Custom report filenames +======================= + +This addon allows for custom filenames for reports. + +Configuration +============= + +To configure this module, open the report whose filename you want to change and fill in the `Download filename` field. This field is evaluated as jinja2 template with `objects` being a list of browse records of the records to print, and `o` the first record. + +Known issues / Roadmap +====================== + + * Currently, only old-style reports (ir.actions.report.xml) are supported, it should be simple to add support for qweb reports. + +Credits +======= + +Contributors +------------ + +* Holger Brunn + +Icon +---- + +Icon courtesy of http://www.picol.org/ (download_settings.svg) + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: http://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/report_custom_filename/__openerp__.py b/report_custom_filename/__openerp__.py index a9808390..212a6b91 100644 --- a/report_custom_filename/__openerp__.py +++ b/report_custom_filename/__openerp__.py @@ -25,15 +25,6 @@ "author": "Therp BV", "license": "AGPL-3", "complexity": "normal", - "description": """ -This addon allows for custom filenames for reports. Currently, only old-style -reports (ir.actions.report.xml) are supported, it should be simple to add -support for qweb reports. - -Acknowledgements -================ -Icon courtesy of http://www.picol.org/ (download_settings.svg) - """, "category": "Reporting", "depends": [ 'web', From 3f8fb0bc3d46f522df18b89a65ebb18713d355dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Fri, 8 May 2015 13:15:42 +0200 Subject: [PATCH 3/6] [BACK] backport module to 7 version --- report_custom_filename/controllers/reports.py | 24 +++++++++---------- .../model/ir_actions_report_xml.py | 24 ++++++++++--------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/report_custom_filename/controllers/reports.py b/report_custom_filename/controllers/reports.py index 1ff58ed0..303976db 100644 --- a/report_custom_filename/controllers/reports.py +++ b/report_custom_filename/controllers/reports.py @@ -19,35 +19,35 @@ # ############################################################################## import simplejson -from openerp import http +from openerp.addons.web import http from openerp.addons.web.controllers import main from openerp.addons.email_template import email_template class Reports(main.Reports): - @http.route('/web/report', type='http', auth="user") - @main.serialize_exception - def index(self, action, token): - result = super(Reports, self).index(action, token) + + @http.httprequest + def index(self, req, action, token): + result = super(Reports, self).index(req, action, token) action = simplejson.loads(action) - context = dict(http.request.context) + context = dict(req.context) context.update(action["context"]) - report_xml = http.request.session.model('ir.actions.report.xml') + report_xml = req.session.model('ir.actions.report.xml') report_ids = report_xml.search( [('report_name', '=', action['report_name'])], 0, False, False, context) - for report in report_xml.browse(report_ids): - if not report.download_filename: + for report in report_xml.read(report_ids, fields=['download_filename']): + if not report['download_filename']: continue - objects = http.request.session.model(context['active_model'])\ + objects = req.session.model(context['active_model'])\ .browse(context['active_ids']) generated_filename = email_template.mako_template_env\ - .from_string(report.download_filename)\ + .from_string(report['download_filename'])\ .render({ 'objects': objects, 'o': objects[0], 'object': objects[0], }) result.headers['Content-Disposition'] = main.content_disposition( - generated_filename) + generated_filename, req) return result diff --git a/report_custom_filename/model/ir_actions_report_xml.py b/report_custom_filename/model/ir_actions_report_xml.py index 27cd638c..3d1f5a9e 100644 --- a/report_custom_filename/model/ir_actions_report_xml.py +++ b/report_custom_filename/model/ir_actions_report_xml.py @@ -18,18 +18,20 @@ # along with this program. If not, see . # ############################################################################## -from openerp import models, fields +from openerp.osv import fields, orm -class IrActionsReportXml(models.Model): +class IrActionsReportXml(orm.Model): _inherit = 'ir.actions.report.xml' - download_filename = fields.Char( - 'Download filename', - help='Fill in this field to have a custom file name when downloading ' - 'this report. This string is evaluated as a jinja2 expression.\n' - 'You can use python expressions, `objects` is a browse record list of ' - 'the objects for which the report is being generated.\n' - 'Check for this list\'s length to determine if it is a report being ' - 'printed for multiple records or not. You also have access to `o`, ' - 'which is the first record in the list') + _columns = { + 'download_filename': fields.char( + 'Download filename', + help='Fill in this field to have a custom file name when ' + 'downloading this report. This string is evaluated as a jinja2 ' + 'expression.\nYou can use python expressions, `objects` is a ' + 'browse record list of the objects for which the report is being ' + 'generated.\nCheck for this list\'s length to determine if it is ' + 'a report being printed for multiple records or not. You also ' + 'have access to `o`, which is the first record in the list') + } From c32dc1e41cef9b90ff2934cdcdb7e52fe0ff6c1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Fri, 8 May 2015 13:21:11 +0200 Subject: [PATCH 4/6] Add OCA as author of OCA addons --- report_custom_filename/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/report_custom_filename/__openerp__.py b/report_custom_filename/__openerp__.py index 212a6b91..6777ec55 100644 --- a/report_custom_filename/__openerp__.py +++ b/report_custom_filename/__openerp__.py @@ -22,7 +22,7 @@ "name": "Custom report filenames", "summary": "Configure the filename to use when downloading a report", "version": "1.0", - "author": "Therp BV", + "author": "Therp BV,Odoo Community Association (OCA)", "license": "AGPL-3", "complexity": "normal", "category": "Reporting", From 9e7144d2ab0a09d72a6efe5b91ebaeb183a041a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Fri, 8 May 2015 13:25:13 +0200 Subject: [PATCH 5/6] Add myself in contributor list --- report_custom_filename/README.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/report_custom_filename/README.rst b/report_custom_filename/README.rst index 93357360..821fed77 100644 --- a/report_custom_filename/README.rst +++ b/report_custom_filename/README.rst @@ -20,6 +20,7 @@ Contributors ------------ * Holger Brunn +* Sébastien Beau Icon ---- From 51f3c45a039b10ff944fd8e40a738061cc6a896b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Fri, 8 May 2015 15:35:30 +0200 Subject: [PATCH 6/6] [FIX] fix description and icon backport --- report_custom_filename/README.rst | 41 ----------------- report_custom_filename/__openerp__.py | 43 ++++++++++++++++++ .../static/{description => src/img}/icon.png | Bin 3 files changed, 43 insertions(+), 41 deletions(-) delete mode 100644 report_custom_filename/README.rst rename report_custom_filename/static/{description => src/img}/icon.png (100%) diff --git a/report_custom_filename/README.rst b/report_custom_filename/README.rst deleted file mode 100644 index 821fed77..00000000 --- a/report_custom_filename/README.rst +++ /dev/null @@ -1,41 +0,0 @@ -Custom report filenames -======================= - -This addon allows for custom filenames for reports. - -Configuration -============= - -To configure this module, open the report whose filename you want to change and fill in the `Download filename` field. This field is evaluated as jinja2 template with `objects` being a list of browse records of the records to print, and `o` the first record. - -Known issues / Roadmap -====================== - - * Currently, only old-style reports (ir.actions.report.xml) are supported, it should be simple to add support for qweb reports. - -Credits -======= - -Contributors ------------- - -* Holger Brunn -* Sébastien Beau - -Icon ----- - -Icon courtesy of http://www.picol.org/ (download_settings.svg) - -Maintainer ----------- - -.. image:: http://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: http://odoo-community.org - -This module is maintained by the OCA. - -OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. - -To contribute to this module, please visit http://odoo-community.org. diff --git a/report_custom_filename/__openerp__.py b/report_custom_filename/__openerp__.py index 6777ec55..3c72f4f7 100644 --- a/report_custom_filename/__openerp__.py +++ b/report_custom_filename/__openerp__.py @@ -26,6 +26,49 @@ "license": "AGPL-3", "complexity": "normal", "category": "Reporting", + "description": """ +Custom report filenames +======================= + +This addon allows for custom filenames for reports. + +Configuration +============= + +To configure this module, open the report whose filename you want to change and fill in the `Download filename` field. This field is evaluated as jinja2 template with `objects` being a list of browse records of the records to print, and `o` the first record. + +Known issues / Roadmap +====================== + + * Currently, only old-style reports (ir.actions.report.xml) are supported, it should be simple to add support for qweb reports. + +Credits +======= + +Contributors +------------ + +* Holger Brunn +* Sébastien Beau + +Icon +---- + +Icon courtesy of http://www.picol.org/ (download_settings.svg) + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: http://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. + """, "depends": [ 'web', 'email_template', diff --git a/report_custom_filename/static/description/icon.png b/report_custom_filename/static/src/img/icon.png similarity index 100% rename from report_custom_filename/static/description/icon.png rename to report_custom_filename/static/src/img/icon.png