From 0fa5ef8c76e6156f80bb32e8b89bd2c34c072fbf Mon Sep 17 00:00:00 2001 From: "Jay (Open ERP)" Date: Mon, 6 Jul 2009 16:16:15 +0530 Subject: [PATCH 1/7] [FIX] Expression calculation(Query making) corrected for Translateable field bzr revid: jvo@tinyerp.com-20090706104615-dj50oi5ni1fhez48 --- bin/osv/expression.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/bin/osv/expression.py b/bin/osv/expression.py index 52abe2eaf2c..b849e77bd08 100644 --- a/bin/osv/expression.py +++ b/bin/osv/expression.py @@ -201,18 +201,30 @@ class expression(object): if field.translate: if operator in ('like', 'ilike', 'not like', 'not ilike'): right = '%%%s%%' % right + + operator = operator == '=like' and 'like' or operator query1 = '( SELECT res_id' \ ' FROM ir_translation' \ ' WHERE name = %s' \ ' AND lang = %s' \ - ' AND type = %s' \ - ' AND value ' + operator + ' %s' \ + ' AND type = %s' + instr = ' %s' + #Covering in,not in operators with operands (%s,%s) ,etc. + if operator in ['in','not in']: + instr = ','.join(['%s'] * len(right)) + query1 += ' AND value ' + operator + ' ' +" (" + instr + ")" \ ') UNION (' \ ' SELECT id' \ ' FROM "' + working_table._table + '"' \ - ' WHERE "' + left + '" ' + operator + ' %s' \ - ')' + ' WHERE "' + left + '" ' + operator + ' ' +" (" + instr + "))" + else: + query1 += ' AND value ' + operator + instr + \ + ') UNION (' \ + ' SELECT id' \ + ' FROM "' + working_table._table + '"' \ + ' WHERE "' + left + '" ' + operator + instr + ")" + query2 = [working_table._name + ',' + left, context.get('lang', False) or 'en_US', 'model', From 649c69f34b95f219bb63f29b838d4c2d6a9d986b Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Mon, 6 Jul 2009 21:32:22 +0200 Subject: [PATCH 2/7] merge bzr revid: fp@tinyerp.com-20090706193222-45lelv5ws4b7cr42 --- bin/addons/base/ir/ir_model.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bin/addons/base/ir/ir_model.py b/bin/addons/base/ir/ir_model.py index aa89e0f71dd..e88e9ae2815 100644 --- a/bin/addons/base/ir/ir_model.py +++ b/bin/addons/base/ir/ir_model.py @@ -71,6 +71,11 @@ class ir_model(osv.osv): pooler.restart_pool(cr.dbname) return res + def write(self, cr, user, ids, vals, context=None): + if context: + del context['__last_update'] + return super(ir_model,self).write(cr, user, ids, vals, context) + def create(self, cr, user, vals, context=None): if context and context.get('manual',False): vals['state']='manual' From 552de8630db7f26d95aed7cb2567fb513f6f1753 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Mon, 6 Jul 2009 21:41:53 +0200 Subject: [PATCH 3/7] [FIX] bug 371768 bad tooltip bzr revid: fp@tinyerp.com-20090706194153-asiybgnwywsdgwv9 --- bin/addons/base/ir/ir_rule.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/addons/base/ir/ir_rule.py b/bin/addons/base/ir/ir_rule.py index 597ccf705e0..a2d53b4de27 100644 --- a/bin/addons/base/ir/ir_rule.py +++ b/bin/addons/base/ir/ir_rule.py @@ -31,7 +31,7 @@ class ir_rule_group(osv.osv): _columns = { 'name': fields.char('Name', size=128, select=1), 'model_id': fields.many2one('ir.model', 'Object',select=1, required=True), - 'global': fields.boolean('Global', select=1, help="Make the rule global, otherwise it needs to be put on a group or user"), + 'global': fields.boolean('Global', select=1, help="Make the rule global, otherwise it needs to be put on a group"), 'rules': fields.one2many('ir.rule', 'rule_group', 'Tests', help="The rule is satisfied if at least one test is True"), 'groups': fields.many2many('res.groups', 'group_rule_group_rel', 'rule_group_id', 'group_id', 'Groups'), 'users': fields.many2many('res.users', 'user_rule_group_rel', 'rule_group_id', 'user_id', 'Users'), From ec12c029cad62ea6300074ed7881fda415721296 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Mon, 6 Jul 2009 21:45:57 +0200 Subject: [PATCH 4/7] [FIX] bug 371496 bzr revid: fp@tinyerp.com-20090706194557-2g5yal31qhsmu4ss --- bin/addons/base/rng/view.rng | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/addons/base/rng/view.rng b/bin/addons/base/rng/view.rng index 59f52559f04..78944519593 100644 --- a/bin/addons/base/rng/view.rng +++ b/bin/addons/base/rng/view.rng @@ -272,6 +272,7 @@ + From 43318c5c55cf863d92ab8e11f09377e99865ed2b Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Mon, 6 Jul 2009 21:49:09 +0200 Subject: [PATCH 5/7] [FIX] bug 369947 bzr revid: fp@tinyerp.com-20090706194909-foz20j4k0mh423a6 --- bin/addons/base/ir/ir.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/addons/base/ir/ir.xml b/bin/addons/base/ir/ir.xml index c1314cac2c3..f98b888399b 100644 --- a/bin/addons/base/ir/ir.xml +++ b/bin/addons/base/ir/ir.xml @@ -1063,7 +1063,7 @@ ir.model.access tree - + From 2895633576940cdd40c0c735b82756d1daafd3e7 Mon Sep 17 00:00:00 2001 From: "mra (Open ERP)" Date: Tue, 7 Jul 2009 11:40:58 +0530 Subject: [PATCH 6/7] [FIX] loading module sequence while creating new database bzr revid: mra@tinyerp.com-20090707061058-zefrioyrq0198zg0 --- bin/addons/__init__.py | 49 ++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/bin/addons/__init__.py b/bin/addons/__init__.py index 3d4810a308f..10e2791efc5 100644 --- a/bin/addons/__init__.py +++ b/bin/addons/__init__.py @@ -68,7 +68,7 @@ class Graph(dict): father.addChild(name) else: Node(name, self) - + def update_from_db(self, cr): # update the graph with values from the database (if exist) ## First, we set the default values for each package in graph @@ -141,7 +141,7 @@ class Node(Singleton): def __iter__(self): return itertools.chain(iter(self.children), *map(iter, self.children)) - + def __str__(self): return self._pprint() @@ -322,7 +322,7 @@ def upgrade_graph(graph, cr, module_list, force=None): raise if info.get('installable', True): packages.append((module, info.get('depends', []), info)) - + dependencies = dict([(p, deps) for p, deps, data in packages]) current, later = set([p for p, dep, data in packages]), set() @@ -352,7 +352,7 @@ def upgrade_graph(graph, cr, module_list, force=None): for package in later: unmet_deps = filter(lambda p: p not in graph, dependencies[package]) logger.notifyChannel('init', netsvc.LOG_ERROR, 'module %s: Unmet dependencies: %s' % (package, ', '.join(unmet_deps))) - + result = len(graph) - len_graph if result != len(module_list): logger.notifyChannel('init', netsvc.LOG_WARNING, 'Not all modules have loaded.') @@ -513,7 +513,7 @@ class MigrationManager(object): parsed_installed_version = parse_version(pkg.installed_version or '') current_version = parse_version(convert_version(pkg.data.get('version', '0'))) - + versions = _get_migration_versions(pkg) for version in versions: @@ -573,19 +573,16 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, **kwargs): modobj = None for package in graph: - logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: loading objects' % package.name) - migrations.migrate_module(package, 'pre') - register_class(package.name) - modules = pool.instanciate(package.name, cr) - if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'): - init_module_objects(cr, package.name, modules) - cr.commit() - - for package in graph: - status['progress'] = (float(statusi)+0.1) / len(graph) m = package.name mid = package.id - + logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: loading objects' % m) + migrations.migrate_module(package, 'pre') + register_class(m) + modules = pool.instanciate(m, cr) + if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'): + init_module_objects(cr, m, modules) + cr.commit() + status['progress'] = (float(statusi)+0.1) / len(graph) if modobj is None: modobj = pool.get('ir.module.module') @@ -595,7 +592,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, **kwargs): idref = {} status['progress'] = (float(statusi)+0.4) / len(graph) - + mode = 'update' if hasattr(package, 'init') or package.state == 'to install': mode = 'init' @@ -630,10 +627,10 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, **kwargs): tools.convert_xml_import(cr, m, fp, idref, mode=mode, noupdate=True, **kwargs) fp.close() cr.execute('update ir_module_module set demo=%s where id=%s', (True, mid)) - package_todo.append(package.name) + package_todo.append(m) migrations.migrate_module(package, 'post') - + if modobj: ver = release.major_version + '.' + package.data.get('version', '1.0') # Set new modules and dependencies @@ -642,21 +639,21 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, **kwargs): # Update translations for all installed languages modobj.update_translations(cr, 1, [mid], None) cr.commit() - + package.state = 'installed' for kind in ('init', 'demo', 'update'): if hasattr(package, kind): delattr(package, kind) statusi += 1 - + cr.execute('select model from ir_model where state=%s', ('manual',)) for model in cr.dictfetchall(): pool.get('ir.model').instanciate(cr, 1, model['model'], {}) pool.get('ir.model.data')._process_end(cr, 1, package_todo) cr.commit() - + return has_updates def load_modules(db, force_demo=False, status=None, update_module=False): @@ -673,7 +670,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False): # NOTE: Try to also load the modules that have been marked as uninstallable previously... STATES_TO_LOAD = ['installed', 'to upgrade', 'uninstallable'] graph = create_graph(cr, ['base'], force) - + has_updates = load_module_graph(cr, graph, status, perform_checks=(not update_module), report=report) if update_module: @@ -695,9 +692,9 @@ def load_modules(db, force_demo=False, status=None, update_module=False): modobj.button_upgrade(cr, 1, ids) cr.execute("update ir_module_module set state=%s where name=%s", ('installed', 'base')) - + STATES_TO_LOAD += ['to install'] - + loop_guardrail = 0 while True: loop_guardrail += 1 @@ -713,7 +710,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False): if new_modules_in_graph == 0: # nothing to load break - + logger.notifyChannel('init', netsvc.LOG_DEBUG, 'Updating graph with %d more modules' % (len(module_list))) r = load_module_graph(cr, graph, status, report=report) has_updates = has_updates or r From 9540e16bb69ab998b0f48a2e137cf263448c9fec Mon Sep 17 00:00:00 2001 From: "mra (Open ERP)" Date: Tue, 7 Jul 2009 15:17:02 +0530 Subject: [PATCH 7/7] [REV] revert chanegs for revision no 1810 bzr revid: mra@tinyerp.com-20090707094702-hn9phh0hgrauml40 --- bin/addons/__init__.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/bin/addons/__init__.py b/bin/addons/__init__.py index 10e2791efc5..d2b33ce7a4d 100644 --- a/bin/addons/__init__.py +++ b/bin/addons/__init__.py @@ -573,16 +573,18 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, **kwargs): modobj = None for package in graph: + logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: loading objects' % package.name) + migrations.migrate_module(package, 'pre') + register_class(package.name) + modules = pool.instanciate(package.name, cr) + if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'): + init_module_objects(cr, package.name, modules) + cr.commit() + + for package in graph: + status['progress'] = (float(statusi)+0.1) / len(graph) m = package.name mid = package.id - logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: loading objects' % m) - migrations.migrate_module(package, 'pre') - register_class(m) - modules = pool.instanciate(m, cr) - if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'): - init_module_objects(cr, m, modules) - cr.commit() - status['progress'] = (float(statusi)+0.1) / len(graph) if modobj is None: modobj = pool.get('ir.module.module') @@ -627,7 +629,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, **kwargs): tools.convert_xml_import(cr, m, fp, idref, mode=mode, noupdate=True, **kwargs) fp.close() cr.execute('update ir_module_module set demo=%s where id=%s', (True, mid)) - package_todo.append(m) + package_todo.append(package.name) migrations.migrate_module(package, 'post')