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)
# 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, '
'ODT -> PDF, ODT -> DOC, ODT -> DOCX, ODS -> ODS, etc.)',
'version': '9.0.1.0.0',
@ -10,10 +10,7 @@
'license': 'AGPL-3',
'author': 'XCG Consulting,Odoo Community Association (OCA)',
'website': 'http://odoo.consulting/',
'depends': [
'base',
'report',
],
'depends': ['report'],
'external_dependencies': {
'python': ['py3o.template',
'py3o.formats']

21
report_py3o/models/ir_report.py

@ -2,15 +2,22 @@
# Copyright 2013 XCG Consulting (http://odoo.consulting)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import os
from py3o.formats import Formats
from openerp import api, fields, models, _
from openerp.report.interface import report_int
from openerp.exceptions import ValidationError
from openerp import addons
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
file. The user cam chose a template from a list.
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")
def _check_py3o_filetype(self):
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.constrains("py3o_is_local_fusion", "py3o_server_id",
@ -32,9 +39,9 @@ class ReportXml(models.Model):
is_native = Formats().get_format(self.py3o_filetype)
if ((not is_native or not self.py3o_is_local_fusion) and
not self.py3o_server_id):
raise ValidationError(
raise ValidationError(_(
"Can not use not native format in local fusion. "
"Please specify a Fusion Server")
"Please specify a Fusion Server"))
@api.model
def _get_py3o_filetypes(self):
@ -116,4 +123,4 @@ class ReportXml(models.Model):
if new_report:
return new_report
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
import requests
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 exceptions
from openerp.report.report_sxw import report_sxw
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 = {}

45
report_py3o/views/ir_report.xml

@ -1,32 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<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>

10
report_py3o/views/menu.xml

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<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>

62
report_py3o/views/py3o_server.xml

@ -1,38 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<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" />
</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>

90
report_py3o/views/py3o_template.xml

@ -1,54 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<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="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>
Loading…
Cancel
Save