summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTurkesh Patel (Open ERP) <tpa@tinyerp.com>2012-08-23 10:38:04 +0530
committerTurkesh Patel (Open ERP) <tpa@tinyerp.com>2012-08-23 10:38:04 +0530
commit7b36f6a7bddee2f30c0e426d1ee89bf282c87a4e (patch)
treeb186158809b5cfd0b42d9a51e2c268c16fd21952
parent568288c3e1be2d0c7ceddcbd0896f7ecca620f5f (diff)
parent459f45a53ea0ca60f44d8a97578c21b005af2e09 (diff)
[MRG] merge with lp:openobject-server.
bzr revid: tpa@tinyerp.com-20120823050804-nrpewpzqtcqgl6fq
-rw-r--r--openerp/addons/base/__openerp__.py13
-rw-r--r--openerp/addons/base/base_menu.xml2
-rw-r--r--openerp/addons/base/ir/ir.xml1
-rw-r--r--openerp/addons/base/module/module.py12
-rw-r--r--openerp/addons/base/module/module_view.xml2
-rw-r--r--openerp/addons/base/res/res_config.xml2
-rw-r--r--openerp/addons/base/res/res_security.xml2
-rw-r--r--openerp/addons/base/security/base_security.xml2
-rw-r--r--openerp/import_xml.rng1
-rw-r--r--openerp/tests/addons/test_impex/tests/test_import.py2
-rw-r--r--openerp/tests/common.py8
-rw-r--r--openerp/tools/convert.py19
-rw-r--r--openerp/tools/misc.py38
13 files changed, 77 insertions, 27 deletions
diff --git a/openerp/addons/base/__openerp__.py b/openerp/addons/base/__openerp__.py
index 5b65bff4bd7..3fdb8c6448d 100644
--- a/openerp/addons/base/__openerp__.py
+++ b/openerp/addons/base/__openerp__.py
@@ -25,20 +25,21 @@
'name': 'Base',
'version': '1.3',
'category': 'Hidden',
- 'description': """The kernel of OpenERP, needed for all installation.""",
+ 'description': """
+The kernel of OpenERP, needed for all installation.
+===================================================
+""",
'author': 'OpenERP SA',
'maintainer': 'OpenERP SA',
'website': 'http://www.openerp.com',
'depends': [],
- 'init_xml': [
+ 'data': [
'base_data.xml',
'security/base_security.xml',
'base_menu.xml',
'res/res_security.xml',
'res/res_config.xml',
- 'data/res.country.state.csv'
- ],
- 'update_xml': [
+ 'data/res.country.state.csv',
'ir/wizard/wizard_menu_view.xml',
'ir/ir.xml',
'ir/ir_filters.xml',
@@ -77,7 +78,7 @@
'res/res_widget_data.xml',
'publisher_warranty/publisher_warranty_data.xml',
],
- 'demo_xml': [
+ 'demo': [
'base_demo.xml',
'res/res_partner_demo.xml',
'res/res_partner_demo.yml',
diff --git a/openerp/addons/base/base_menu.xml b/openerp/addons/base/base_menu.xml
index 770e0e2d329..f3e0cda7e12 100644
--- a/openerp/addons/base/base_menu.xml
+++ b/openerp/addons/base/base_menu.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
- <data>
+ <data noupdate="1">
<!-- Top menu item -->
<menuitem name="Reporting"
diff --git a/openerp/addons/base/ir/ir.xml b/openerp/addons/base/ir/ir.xml
index fac2946e204..49bb719bad7 100644
--- a/openerp/addons/base/ir/ir.xml
+++ b/openerp/addons/base/ir/ir.xml
@@ -560,7 +560,6 @@
<record model="ir.ui.view" id="view_ir_needaction_users_rel_tree">
<field name="name">ir.needaction_users_rel.tree</field>
<field name="model">ir.needaction_users_rel</field>
- <field name="sequence">10</field>
<field name="arch" type="xml">
<tree string="Subscription">
<field name="user_id"/>
diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py
index 5751ed678eb..d523ff0ac7f 100644
--- a/openerp/addons/base/module/module.py
+++ b/openerp/addons/base/module/module.py
@@ -29,6 +29,7 @@ from openerp import modules, pooler, release, tools, addons
from openerp.tools.parse_version import parse_version
from openerp.tools.translate import _
from openerp.osv import fields, osv, orm
+from docutils.core import publish_string
_logger = logging.getLogger(__name__)
@@ -94,6 +95,15 @@ class module(osv.osv):
'module %s', name, exc_info=True)
return info
+ def _get_desc(self, cr, uid, ids, field_name=None, arg=None, context=None):
+ res = dict.fromkeys(ids, '')
+ for module in self.browse(cr, uid, ids, context=context):
+ desc = self.get_module_info(module.name).get('description', '')
+ overrides = dict(embed_stylesheet=False, doctitle_xform=False, output_encoding='unicode')
+ output = publish_string(source=desc, writer_name='html', settings_overrides=overrides)
+ res[module.id] = output
+ return res
+
def _get_latest_version(self, cr, uid, ids, field_name=None, arg=None, context=None):
res = dict.fromkeys(ids, '')
for m in self.browse(cr, uid, ids):
@@ -182,7 +192,7 @@ class module(osv.osv):
'category_id': fields.many2one('ir.module.category', 'Category', readonly=True, select=True),
'shortdesc': fields.char('Module Name', size=64, readonly=True, translate=True),
'summary': fields.char('Summary', size=64, readonly=True, translate=True),
- 'description': fields.text("Description", readonly=True, translate=True),
+ 'description': fields.function(_get_desc, string='Description', type='html', method=True, readonly=True, store=True),
'author': fields.char("Author", size=128, readonly=True),
'maintainer': fields.char('Maintainer', size=128, readonly=True),
'contributors': fields.text('Contributors', readonly=True),
diff --git a/openerp/addons/base/module/module_view.xml b/openerp/addons/base/module/module_view.xml
index 19f9dbdaa44..ec7db50bbe6 100644
--- a/openerp/addons/base/module/module_view.xml
+++ b/openerp/addons/base/module/module_view.xml
@@ -38,7 +38,7 @@
<field name="model">ir.module.module</field>
<field name="arch" type="xml">
<search string="Search modules">
- <field name="name" filter_domain="['|', '|', '|', ('description', 'ilike', self), ('summary', 'ilike', self), ('shortdesc', 'ilike', self), ('name',
+ <field name="name" filter_domain="['|', '|', ('summary', 'ilike', self), ('shortdesc', 'ilike', self), ('name',
'ilike', self)]"/>
<filter name="app" icon="terp-check" string="Apps" domain="[('application', '=', 1)]"/>
<filter name="extra" icon="terp-check" string="Extra" domain="[('application', '=', 0)]"/>
diff --git a/openerp/addons/base/res/res_config.xml b/openerp/addons/base/res/res_config.xml
index bdfd6ab329c..a705250b989 100644
--- a/openerp/addons/base/res/res_config.xml
+++ b/openerp/addons/base/res/res_config.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
- <data>
+ <data noupdate="1">
<record id="res_config_view_base" model="ir.ui.view">
<field name="name">res.config.view.base</field>
<field name="model">res.config</field>
diff --git a/openerp/addons/base/res/res_security.xml b/openerp/addons/base/res/res_security.xml
index f02abd90985..8aa18bd8df4 100644
--- a/openerp/addons/base/res/res_security.xml
+++ b/openerp/addons/base/res/res_security.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
-<data noupdate="0">
+<data noupdate="1">
<record model="res.groups" id="group_partner_manager">
<field name="name">Partner Manager</field>
diff --git a/openerp/addons/base/security/base_security.xml b/openerp/addons/base/security/base_security.xml
index cd0b7e999b3..11be6e35bd1 100644
--- a/openerp/addons/base/security/base_security.xml
+++ b/openerp/addons/base/security/base_security.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<openerp>
- <data noupdate="0">
+ <data noupdate="1">
<!--
Users Groups
diff --git a/openerp/import_xml.rng b/openerp/import_xml.rng
index bf5a9e1800e..5dd789c6e95 100644
--- a/openerp/import_xml.rng
+++ b/openerp/import_xml.rng
@@ -185,7 +185,6 @@
<rng:optional> <rng:attribute name="string"/> </rng:optional>
<rng:optional> <rng:attribute name="sequence"/> </rng:optional>
<rng:optional> <rng:attribute name="groups"/> </rng:optional>
- <rng:optional> <rng:attribute name="type"/> </rng:optional>
<rng:optional> <rng:attribute name="menu"/> </rng:optional>
<rng:empty />
</rng:element>
diff --git a/openerp/tests/addons/test_impex/tests/test_import.py b/openerp/tests/addons/test_impex/tests/test_import.py
index ab12f0375b5..4712d53feff 100644
--- a/openerp/tests/addons/test_impex/tests/test_import.py
+++ b/openerp/tests/addons/test_impex/tests/test_import.py
@@ -3,6 +3,7 @@ import openerp.modules.registry
import openerp
from openerp.tests import common
+from openerp.tools.misc import mute_logger
def ok(n):
""" Successful import of ``n`` records
@@ -221,6 +222,7 @@ class test_integer_field(ImporterCase):
-1, -42, -(2**31 - 1), -(2**31), -12345678
], values(self.read()))
+ @mute_logger('openerp.sql_db')
def test_out_of_range(self):
self.assertEqual(
self.import_(['value'], [[str(2**31)]]),
diff --git a/openerp/tests/common.py b/openerp/tests/common.py
index b1af4338312..53c67c68844 100644
--- a/openerp/tests/common.py
+++ b/openerp/tests/common.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
import os
+import threading
import time
import unittest2
import xmlrpclib
@@ -11,6 +12,13 @@ ADDONS_PATH = openerp.tools.config['addons_path']
PORT = openerp.tools.config['xmlrpc_port']
DB = openerp.tools.config['db_name']
+# If the database name is not provided on the command-line,
+# use the one on the thread (which means if it is provided on
+# the command-line, this will break when installing another
+# database from XML-RPC).
+if not DB and hasattr(threading.current_thread(), 'dbname'):
+ DB = threading.current_thread().dbname
+
HOST = '127.0.0.1'
ADMIN_USER = 'admin'
diff --git a/openerp/tools/convert.py b/openerp/tools/convert.py
index 36f560ba62c..8269fa5d7ff 100644
--- a/openerp/tools/convert.py
+++ b/openerp/tools/convert.py
@@ -591,7 +591,21 @@ form: module.record_id""" % (xml_id,)
if rec.get('action'):
a_action = rec.get('action','').encode('utf8')
- a_type = rec.get('type','').encode('utf8') or 'act_window'
+
+ # determine the type of action
+ if '.' in a_action:
+ # action referring to another module
+ a_action_module, a_action_name = a_action.split('.')
+ else:
+ # local action: use current module
+ a_action_module = self.module
+ a_action_name = a_action
+
+ # fetch the model and the res id
+ ir_action_ref = self.pool.get('ir.model.data').get_object_reference(cr, self.uid, a_action_module, a_action_name)
+ # get the part of the model we need
+ a_type = ir_action_ref[0].split('.')[-1]
+
icons = {
"act_window": 'STOCK_NEW',
"report.xml": 'STOCK_PASTE',
@@ -601,6 +615,7 @@ form: module.record_id""" % (xml_id,)
"server": 'STOCK_EXECUTE',
}
values['icon'] = icons.get(a_type,'STOCK_NEW')
+
if a_type=='act_window':
a_id = self.id_get(cr, a_action)
cr.execute('select view_type,view_mode,name,view_id,target from ir_act_window where id=%s', (int(a_id),))
@@ -627,7 +642,7 @@ form: module.record_id""" % (xml_id,)
values['icon'] = 'STOCK_EXECUTE'
if not values.get('name', False):
values['name'] = action_name
-
+
elif a_type in ['wizard', 'url', 'client', 'server'] and not values.get('name'):
a_id = self.id_get(cr, a_action)
a_table = 'ir_act_%s' % a_type
diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py
index 242c60cca4a..5b8fcc7291e 100644
--- a/openerp/tools/misc.py
+++ b/openerp/tools/misc.py
@@ -55,7 +55,6 @@ try:
from html2text import html2text
except ImportError:
html2text = None
-import contextlib
import openerp.loglevels as loglevels
import openerp.pooler as pooler
@@ -1142,19 +1141,36 @@ class UnquoteEvalContext(defaultdict):
return unquote(key)
-class MuteFilter(logging.Filter):
+class mute_logger(object):
+ """Temporary suppress the logging.
+ Can be used as context manager or decorator.
+
+ @mute_logger('openerp.plic.ploc')
+ def do_stuff():
+ blahblah()
+
+ with mute_logger('openerp.foo.bar'):
+ do_suff()
+
+ """
+ def __init__(self, *loggers):
+ self.loggers = loggers
+
def filter(self, record):
return 0
-@contextlib.contextmanager
-def mute_logger(*loggers):
- mute = MuteFilter()
- for logger in loggers:
- logging.getLogger(logger).addFilter(mute)
-
- yield
+ def __enter__(self):
+ for logger in self.loggers:
+ logging.getLogger(logger).addFilter(self)
- for logger in loggers:
- logging.getLogger(logger).removeFilter(mute)
+ def __exit__(self, exc_type=None, exc_val=None, exc_tb=None):
+ for logger in self.loggers:
+ logging.getLogger(logger).removeFilter(self)
+ def __call__(self, func):
+ @wraps(func)
+ def deco(*args, **kwargs):
+ with self:
+ return func(*args, **kwargs)
+ return deco
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: