Browse Source

Take into accounts most remarks of @lasley

Remove <data> in views
Protect import of py3o libs
Remove dep on base module
Other small changes
14.0-report-py3o-pr-506
Alexis de Lattre 8 years ago
committed by default
parent
commit
d3b813b25b
  1. 4
      report_py3o/NEWS
  2. 7
      report_py3o/__openerp__.py
  3. 21
      report_py3o/models/ir_report.py
  4. 17
      report_py3o/py3o_parser.py
  5. 45
      report_py3o/views/ir_report.xml
  6. 10
      report_py3o/views/menu.xml
  7. 62
      report_py3o/views/py3o_server.xml
  8. 90
      report_py3o/views/py3o_template.xml

4
report_py3o/NEWS

@ -1,4 +0,0 @@
report_py3o 1.3
Production release

7
report_py3o/__openerp__.py

@ -2,7 +2,7 @@
# Copyright 2013 XCG Consulting (http://odoo.consulting) # Copyright 2013 XCG Consulting (http://odoo.consulting)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{ {
'name': 'LibreOffice Report Engine',
'name': 'Py3o Report Engine',
'summary': 'Reporting engine based on Libreoffice (ODT -> ODT, ' 'summary': 'Reporting engine based on Libreoffice (ODT -> ODT, '
'ODT -> PDF, ODT -> DOC, ODT -> DOCX, ODS -> ODS, etc.)', 'ODT -> PDF, ODT -> DOC, ODT -> DOCX, ODS -> ODS, etc.)',
'version': '9.0.1.0.0', 'version': '9.0.1.0.0',
@ -10,10 +10,7 @@
'license': 'AGPL-3', 'license': 'AGPL-3',
'author': 'XCG Consulting,Odoo Community Association (OCA)', 'author': 'XCG Consulting,Odoo Community Association (OCA)',
'website': 'http://odoo.consulting/', 'website': 'http://odoo.consulting/',
'depends': [
'base',
'report',
],
'depends': ['report'],
'external_dependencies': { 'external_dependencies': {
'python': ['py3o.template', 'python': ['py3o.template',
'py3o.formats'] 'py3o.formats']

21
report_py3o/models/ir_report.py

@ -2,15 +2,22 @@
# Copyright 2013 XCG Consulting (http://odoo.consulting) # Copyright 2013 XCG Consulting (http://odoo.consulting)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import os import os
from py3o.formats import Formats
from openerp import api, fields, models, _ from openerp import api, fields, models, _
from openerp.report.interface import report_int from openerp.report.interface import report_int
from openerp.exceptions import ValidationError from openerp.exceptions import ValidationError
from openerp import addons from openerp import addons
from ..py3o_parser import Py3oParser from ..py3o_parser import Py3oParser
import logging
logger = logging.getLogger(__name__)
class ReportXml(models.Model):
try:
from py3o.formats import Formats
except ImportError:
logger.debug('Cannot import py3o.formats')
class IrActionsReportXml(models.Model):
""" Inherit from ir.actions.report.xml to allow customizing the template """ Inherit from ir.actions.report.xml to allow customizing the template
file. The user cam chose a template from a list. file. The user cam chose a template from a list.
The list is configurable in the configuration tab, see py3o_template.py The list is configurable in the configuration tab, see py3o_template.py
@ -22,8 +29,8 @@ class ReportXml(models.Model):
@api.constrains("py3o_filetype", "report_type") @api.constrains("py3o_filetype", "report_type")
def _check_py3o_filetype(self): def _check_py3o_filetype(self):
if self.report_type == "py3o" and not self.py3o_filetype: if self.report_type == "py3o" and not self.py3o_filetype:
raise ValidationError(
"Field 'Output Format' is required for Py3O report")
raise ValidationError(_(
"Field 'Output Format' is required for Py3O report"))
@api.one @api.one
@api.constrains("py3o_is_local_fusion", "py3o_server_id", @api.constrains("py3o_is_local_fusion", "py3o_server_id",
@ -32,9 +39,9 @@ class ReportXml(models.Model):
is_native = Formats().get_format(self.py3o_filetype) is_native = Formats().get_format(self.py3o_filetype)
if ((not is_native or not self.py3o_is_local_fusion) and if ((not is_native or not self.py3o_is_local_fusion) and
not self.py3o_server_id): not self.py3o_server_id):
raise ValidationError(
raise ValidationError(_(
"Can not use not native format in local fusion. " "Can not use not native format in local fusion. "
"Please specify a Fusion Server")
"Please specify a Fusion Server"))
@api.model @api.model
def _get_py3o_filetypes(self): def _get_py3o_filetypes(self):
@ -116,4 +123,4 @@ class ReportXml(models.Model):
if new_report: if new_report:
return new_report return new_report
else: else:
return super(ReportXml, self)._lookup_report(cr, name)
return super(IrActionsReportXml, self)._lookup_report(cr, name)

17
report_py3o/py3o_parser.py

@ -9,14 +9,23 @@ import sys
from base64 import b64decode from base64 import b64decode
import requests import requests
from tempfile import NamedTemporaryFile from tempfile import NamedTemporaryFile
from py3o.template.helpers import Py3oConvertor
from py3o.template import Template
from py3o.formats import Formats
from openerp import _ from openerp import _
from openerp import exceptions from openerp import exceptions
from openerp.report.report_sxw import report_sxw from openerp.report.report_sxw import report_sxw
from openerp import registry from openerp import registry
import logging
logger = logging.getLogger(__name__)
try:
from py3o.template.helpers import Py3oConvertor
from py3o.template import Template
except ImportError:
logger.debug('Cannot import py3o.template')
try:
from py3o.formats import Formats
except ImportError:
logger.debug('Cannot import py3o.formats')
_extender_functions = {} _extender_functions = {}

45
report_py3o/views/ir_report.xml

@ -1,32 +1,31 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<odoo> <odoo>
<data>
<!-- Inherit from base.act_report_xml_view to add py3o-related settings. -->
<!-- Inherit from base.act_report_xml_view to add py3o-related settings. -->
<record id="py3o_report_view" model="ir.ui.view">
<field name="name">py3o_report_view</field>
<field name="model">ir.actions.report.xml</field>
<field name="inherit_id" ref="base.act_report_xml_view" />
<field name="arch" type="xml">
<record id="py3o_report_view" model="ir.ui.view">
<field name="name">py3o_report_view</field>
<field name="model">ir.actions.report.xml</field>
<field name="inherit_id" ref="base.act_report_xml_view" />
<field name="arch" type="xml">
<xpath expr="//page[@name='security']" position="before">
<page string="LibreOffice Template"
attrs="{'invisible': [('report_type', '!=', 'py3o')]}">
<xpath expr="//page[@name='security']" position="before">
<page string="LibreOffice Template" name="py3o_tab"
attrs="{'invisible': [('report_type', '!=', 'py3o')]}">
<group>
<field name="py3o_filetype" />
<field name="py3o_is_local_fusion"/>
<field name="py3o_server_id" />
<field name="py3o_template_id" />
<field name="module" />
<field name="py3o_template_fallback" />
</group>
<group name="py3o_params">
<field name="py3o_filetype" />
<field name="py3o_is_local_fusion"/>
<field name="py3o_server_id" />
<field name="py3o_template_id" />
<field name="module" />
<field name="py3o_template_fallback" />
</group>
</page>
</xpath>
</page>
</xpath>
</field>
</record>
</field>
</record>
</data>
</odoo> </odoo>

10
report_py3o/views/menu.xml

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<odoo> <odoo>
<data>
<menuitem id="py3o_config_menu"
name="Py3o"
parent="report.reporting_menuitem" />
</data>
<menuitem id="py3o_config_menu"
name="Py3o"
parent="report.reporting_menuitem" />
</odoo> </odoo>

62
report_py3o/views/py3o_server.xml

@ -1,38 +1,38 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<odoo> <odoo>
<data>
<record id="py3o_server_configuration_form_view" model="ir.ui.view">
<field name="name">py3o.server.configuration.form.view</field>
<field name="model">py3o.server</field>
<field name="arch" type="xml">
<form string="Py3o Server Configuration">
<group>
<field name="url" widget="url"/>
<field name="is_active" />
</group>
</form>
</field>
</record>
<record id="py3o_server_configuration_tree_view" model="ir.ui.view">
<field name="name">py3o.server.configuration.tree.view</field>
<field name="model">py3o.server</field>
<field name="arch" type="xml">
<tree string="Py3o Servers Configuration">
<field name="url" />
<record id="py3o_server_configuration_form_view" model="ir.ui.view">
<field name="name">py3o.server.configuration.form.view</field>
<field name="model">py3o.server</field>
<field name="arch" type="xml">
<form string="Py3o Server Configuration">
<group name="main">
<field name="url" widget="url"/>
<field name="is_active" /> <field name="is_active" />
</tree>
</field>
</record>
</group>
</form>
</field>
</record>
<record id="py3o_server_configuration_action" model="ir.actions.act_window">
<field name="name">Py3o Servers</field>
<field name="res_model">py3o.server</field>
<field name="view_mode">tree,form</field>
</record>
<record id="py3o_server_configuration_tree_view" model="ir.ui.view">
<field name="name">py3o.server.configuration.tree.view</field>
<field name="model">py3o.server</field>
<field name="arch" type="xml">
<tree string="Py3o Servers Configuration">
<field name="url" />
<field name="is_active" />
</tree>
</field>
</record>
<record id="py3o_server_configuration_action" model="ir.actions.act_window">
<field name="name">Py3o Servers</field>
<field name="res_model">py3o.server</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="py3o_server_configuration_menu"
parent="py3o_config_menu"
action="py3o_server_configuration_action" />
<menuitem id="py3o_server_configuration_menu"
parent="py3o_config_menu"
action="py3o_server_configuration_action" />
</data>
</odoo> </odoo>

90
report_py3o/views/py3o_template.xml

@ -1,54 +1,54 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<odoo> <odoo>
<data>
<record id="py3o_template_configuration_search_view" model="ir.ui.view">
<field name="name">py3o.template.configuration.search.view</field>
<field name="model">py3o.template</field>
<field name="arch" type="xml">
<search string="Py3o Templates Configuration">
<field name="name" />
<field name="filetype" />
<group string="Group By" name="groupby">
<filter name="filetype_groupby" string="File Type"
context="{'group_by': 'filetype'}"/>
</group>
</search>
</field>
</record>
<record id="py3o_template_configuration_form_view" model="ir.ui.view">
<field name="name">py3o.template.configuration.form.view</field>
<field name="model">py3o.template</field>
<field name="arch" type="xml">
<form string="Py3o Templates Configuration">
<group>
<field name="name" />
<field name="filetype" />
<field name="py3o_template_data" />
</group>
</form>
</field>
</record>
<record id="py3o_template_configuration_search_view" model="ir.ui.view">
<field name="name">py3o.template.configuration.search.view</field>
<field name="model">py3o.template</field>
<field name="arch" type="xml">
<search string="Py3o Templates">
<field name="name" />
<field name="filetype" />
<group string="Group By" name="groupby">
<filter name="filetype_groupby" string="File Type"
context="{'group_by': 'filetype'}"/>
</group>
</search>
</field>
</record>
<record id="py3o_template_configuration_tree_view" model="ir.ui.view">
<field name="name">py3o.template.configuration.tree.view</field>
<field name="model">py3o.template</field>
<field name="arch" type="xml">
<tree string="Py3o Templates Configuration">
<record id="py3o_template_configuration_form_view" model="ir.ui.view">
<field name="name">py3o.template.configuration.form.view</field>
<field name="model">py3o.template</field>
<field name="arch" type="xml">
<form string="Py3o Templates">
<group name="main">
<field name="name" /> <field name="name" />
<field name="filetype" /> <field name="filetype" />
</tree>
</field>
</record>
<field name="py3o_template_data" />
</group>
</form>
</field>
</record>
<record id="py3o_template_configuration_tree_view" model="ir.ui.view">
<field name="name">py3o.template.configuration.tree.view</field>
<field name="model">py3o.template</field>
<field name="arch" type="xml">
<tree string="Py3o Templates">
<field name="name" />
<field name="filetype" />
</tree>
</field>
</record>
<record id="py3o_template_configuration_action" model="ir.actions.act_window">
<field name="name">Py3o Templates</field>
<field name="res_model">py3o.template</field>
<field name="view_mode">tree,form</field>
</record>
<record id="py3o_template_configuration_action" model="ir.actions.act_window">
<field name="name">Py3o Templates</field>
<field name="res_model">py3o.template</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="py3o_template_configuration_menu"
parent="py3o_config_menu"
action="py3o_template_configuration_action" />
<menuitem id="py3o_template_configuration_menu"
parent="py3o_config_menu"
action="py3o_template_configuration_action" />
</data>
</odoo> </odoo>
Loading…
Cancel
Save