diff options
| author | Turkesh Patel (Open ERP) <tpa@tinyerp.com> | 2012-08-23 10:38:04 +0530 |
|---|---|---|
| committer | Turkesh Patel (Open ERP) <tpa@tinyerp.com> | 2012-08-23 10:38:04 +0530 |
| commit | 7b36f6a7bddee2f30c0e426d1ee89bf282c87a4e (patch) | |
| tree | b186158809b5cfd0b42d9a51e2c268c16fd21952 | |
| parent | 568288c3e1be2d0c7ceddcbd0896f7ecca620f5f (diff) | |
| parent | 459f45a53ea0ca60f44d8a97578c21b005af2e09 (diff) | |
[MRG] merge with lp:openobject-server.
bzr revid: tpa@tinyerp.com-20120823050804-nrpewpzqtcqgl6fq
| -rw-r--r-- | openerp/addons/base/__openerp__.py | 13 | ||||
| -rw-r--r-- | openerp/addons/base/base_menu.xml | 2 | ||||
| -rw-r--r-- | openerp/addons/base/ir/ir.xml | 1 | ||||
| -rw-r--r-- | openerp/addons/base/module/module.py | 12 | ||||
| -rw-r--r-- | openerp/addons/base/module/module_view.xml | 2 | ||||
| -rw-r--r-- | openerp/addons/base/res/res_config.xml | 2 | ||||
| -rw-r--r-- | openerp/addons/base/res/res_security.xml | 2 | ||||
| -rw-r--r-- | openerp/addons/base/security/base_security.xml | 2 | ||||
| -rw-r--r-- | openerp/import_xml.rng | 1 | ||||
| -rw-r--r-- | openerp/tests/addons/test_impex/tests/test_import.py | 2 | ||||
| -rw-r--r-- | openerp/tests/common.py | 8 | ||||
| -rw-r--r-- | openerp/tools/convert.py | 19 | ||||
| -rw-r--r-- | openerp/tools/misc.py | 38 |
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: |
