diff --git a/openerp/addons/base/__openerp__.py b/openerp/addons/base/__openerp__.py index 8d051a17127..cde4a2a25d3 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/module/module.py b/openerp/addons/base/module/module.py index cc0b05af97f..368ac9fbe8f 100644 --- a/openerp/addons/base/module/module.py +++ b/openerp/addons/base/module/module.py @@ -19,6 +19,8 @@ # ############################################################################## from collections import defaultdict +import base64 +from docutils.core import publish_string import imp import logging import os @@ -28,7 +30,6 @@ import tempfile import urllib import zipfile import zipimport -import base64 try: from cStringIO import StringIO @@ -121,6 +122,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): @@ -209,7 +219,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 8aca2546f4f..bca4645b818 100644 --- a/openerp/addons/base/module/module_view.xml +++ b/openerp/addons/base/module/module_view.xml @@ -44,7 +44,7 @@ ir.module.module - diff --git a/openerp/addons/base/res/res_config.xml b/openerp/addons/base/res/res_config.xml index bdfd6ab329c..342aeaa6e0f 100644 --- a/openerp/addons/base/res/res_config.xml +++ b/openerp/addons/base/res/res_config.xml @@ -1,6 +1,7 @@ + res.config.view.base res.config diff --git a/openerp/addons/base/res/res_security.xml b/openerp/addons/base/res/res_security.xml index f02abd90985..c7d2a77f846 100644 --- a/openerp/addons/base/res/res_security.xml +++ b/openerp/addons/base/res/res_security.xml @@ -1,42 +1,37 @@ - + - - Partner Manager - + + Partner Manager + - - - - - - - - - + + + + + + + + + - + + + company rule + + + + [('id','child_of',[user.company_id.id])] + - + + + user rule + + + [('company_ids','child_of',[user.company_id.id])] + - - - - company rule - - - - [('id','child_of',[user.company_id.id])] - - - - - user rule - - - [('company_ids','child_of',[user.company_id.id])] - - - + diff --git a/openerp/addons/base/security/base_security.xml b/openerp/addons/base/security/base_security.xml index cd0b7e999b3..8eb832ea618 100644 --- a/openerp/addons/base/security/base_security.xml +++ b/openerp/addons/base/security/base_security.xml @@ -1,54 +1,51 @@ - - - - - Access Rights - - - Configuration - - - - - - Employee - - - - - Multi Companies - - - - Multi Currencies - - - - Technical Features - - - - User - - - Manager - - - - - - - - - - + + + Access Rights + + + Configuration + + + + + + Employee + + + + + Multi Companies + + + + Multi Currencies + + + + Technical Features + + + + User + + + Manager + + + + + + + + res.widget.user rule @@ -58,8 +55,11 @@ res.partner company - + ['|','|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id]),('company_id','=',False)] 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 @@ - diff --git a/openerp/tools/convert.py b/openerp/tools/convert.py index 36f560ba62c..be8465055ee 100644 --- a/openerp/tools/convert.py +++ b/openerp/tools/convert.py @@ -591,7 +591,11 @@ 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 + a_type, a_id = self.model_id_get(cr, a_action) + a_type = a_type.split('.')[-1] # keep only type part + icons = { "act_window": 'STOCK_NEW', "report.xml": 'STOCK_PASTE', @@ -601,8 +605,8 @@ 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),)) rrres = cr.fetchone() assert rrres, "No window action defined for this id %s !\n" \ @@ -627,9 +631,8 @@ 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 cr.execute('select name from %s where id=%%s' % a_table, (int(a_id),)) resw = cr.fetchone() @@ -667,9 +670,6 @@ form: module.record_id""" % (xml_id,) self.idref[rec_id] = int(pid) if rec.get('action') and pid: - a_action = rec.get('action').encode('utf8') - a_type = rec.get('type','').encode('utf8') or 'act_window' - a_id = self.id_get(cr, a_action) action = "ir.actions.%s,%d" % (a_type, a_id) self.pool.get('ir.model.data').ir_set(cr, self.uid, 'action', 'tree_but_open', 'Menuitem', [('ir.ui.menu', int(pid))], action, True, True, xml_id=rec_id) return ('ir.ui.menu', pid) diff --git a/setup.py b/setup.py index 6e1adadde82..5925a0484ba 100755 --- a/setup.py +++ b/setup.py @@ -96,6 +96,7 @@ setuptools.setup( # our tree.) http://download.gna.org/pychart/ # TODO 'pychart', 'babel', + 'docutils', 'feedparser', 'gdata', 'lxml',