diff options
| author | nvi-openerp <nicolas.vanhoren@openerp.com> | 2010-12-08 11:52:49 +0100 |
|---|---|---|
| committer | nvi-openerp <nicolas.vanhoren@openerp.com> | 2010-12-08 11:52:49 +0100 |
| commit | 38569b7754bb2e1dc1b6e8d58df626ff0fafaedb (patch) | |
| tree | e0ad1d56381f8f0e4d288c0f50407191ab8ac7a7 /bin/tools | |
| parent | 8cc1c1086d2243678e2fef9c1631758ac517d097 (diff) | |
| parent | 00f2f6b97d71f43fe38c0ade7875864dd7ef564b (diff) | |
[merge]
bzr revid: nicolas.vanhoren@openerp.com-20101206091222-miwtrvjkfh8hy8ec
bzr revid: nicolas.vanhoren@openerp.com-20101206174010-f819dzx7vyw2jntk
bzr revid: nicolas.vanhoren@openerp.com-20101207132443-z0wabhbh0ruzwoo2
bzr revid: nicolas.vanhoren@openerp.com-20101208105249-qfjalxkboqpi9xr0
Diffstat (limited to 'bin/tools')
| -rw-r--r-- | bin/tools/convert.py | 62 | ||||
| -rw-r--r-- | bin/tools/misc.py | 56 | ||||
| -rw-r--r-- | bin/tools/translate.py | 6 | ||||
| -rw-r--r-- | bin/tools/yaml_import.py | 12 | ||||
| -rw-r--r-- | bin/tools/yaml_tag.py | 2 |
5 files changed, 71 insertions, 67 deletions
diff --git a/bin/tools/convert.py b/bin/tools/convert.py index 0f091ad4a56..49d56b15b1e 100644 --- a/bin/tools/convert.py +++ b/bin/tools/convert.py @@ -62,7 +62,7 @@ class ConvertError(Exception): return 'Exception:\n\t%s\nUsing file:\n%s' % (self.orig, self.d) def _ref(self, cr): - return lambda x: self.id_get(cr, False, x) + return lambda x: self.id_get(cr, x) def _obj(pool, cr, uid, model_str, context=None): model = pool.get(model_str) @@ -139,7 +139,7 @@ def _eval_xml(self, node, pool, cr, uid, idref, context=None): m = re.findall('[^%]%\((.*?)\)[ds]', s) for id in m: if not id in idref: - idref[id]=self.id_get(cr, False, id) + idref[id]=self.id_get(cr, id) return s % idref _fix_multiple_roots(node) return '<?xml version="1.0"?>\n'\ @@ -177,7 +177,7 @@ def _eval_xml(self, node, pool, cr, uid, idref, context=None): args = [] a_eval = node.get('eval','') if a_eval: - idref['ref'] = lambda x: self.id_get(cr, False, x) + idref['ref'] = lambda x: self.id_get(cr, x) args = unsafe_eval(a_eval, idref) for n in node: return_val = _eval_xml(self,n, pool, cr, uid, idref, context) @@ -262,7 +262,7 @@ class xml_import(object): def get_uid(self, cr, uid, data_node, node): node_uid = node.get('uid','') or (len(data_node) and data_node.get('uid','')) if node_uid: - return self.id_get(cr, None, node_uid) + return self.id_get(cr, node_uid) return uid def _test_xml_id(self, xml_id): @@ -290,7 +290,7 @@ form: module.record_id""" % (xml_id,) ids = self.pool.get(d_model).search(cr, self.uid, unsafe_eval(d_search, idref)) if d_id: try: - ids.append(self.id_get(cr, d_model, d_id)) + ids.append(self.id_get(cr, d_id)) except: # d_id cannot be found. doesn't matter in this case pass @@ -334,10 +334,10 @@ form: module.record_id""" % (xml_id,) groups_value = [] for group in g_names: if group.startswith('-'): - group_id = self.id_get(cr, 'res.groups', group[1:]) + group_id = self.id_get(cr, group[1:]) groups_value.append((3, group_id)) else: - group_id = self.id_get(cr, 'res.groups', group) + group_id = self.id_get(cr, group) groups_value.append((4, group_id)) res['groups_id'] = groups_value @@ -377,10 +377,10 @@ form: module.record_id""" % (xml_id,) groups_value = [] for group in g_names: if group.startswith('-'): - group_id = self.id_get(cr, 'res.groups', group[1:]) + group_id = self.id_get(cr, group[1:]) groups_value.append((3, group_id)) else: - group_id = self.id_get(cr, 'res.groups', group) + group_id = self.id_get(cr, group) groups_value.append((4, group_id)) res['groups_id'] = groups_value @@ -425,8 +425,8 @@ form: module.record_id""" % (xml_id,) self._test_xml_id(xml_id) type = rec.get('type','').encode('utf-8') or 'ir.actions.act_window' view_id = False - if rec.get('view'): - view_id = self.id_get(cr, 'ir.actions.act_window', rec.get('view','').encode('utf-8')) + if rec.get('view_id'): + view_id = self.id_get(cr, rec.get('view_id','').encode('utf-8')) domain = rec.get('domain','').encode('utf-8') or '{}' res_model = rec.get('res_model','').encode('utf-8') src_model = rec.get('src_model','').encode('utf-8') @@ -438,7 +438,7 @@ form: module.record_id""" % (xml_id,) uid = self.uid active_id = str("active_id") # for further reference in client/bin/tools/__init__.py def ref(str_id): - return self.id_get(cr, None, str_id) + return self.id_get(cr, str_id) # Include all locals() in eval_context, for backwards compatibility eval_context = { @@ -489,10 +489,10 @@ form: module.record_id""" % (xml_id,) groups_value = [] for group in g_names: if group.startswith('-'): - group_id = self.id_get(cr, 'res.groups', group[1:]) + group_id = self.id_get(cr, group[1:]) groups_value.append((3, group_id)) else: - group_id = self.id_get(cr, 'res.groups', group) + group_id = self.id_get(cr, group) groups_value.append((4, group_id)) res['groups_id'] = groups_value @@ -527,7 +527,7 @@ form: module.record_id""" % (xml_id,) model = str(rec.get('model','')) w_ref = rec.get('ref','') if w_ref: - id = self.id_get(cr, model, w_ref) + id = self.id_get(cr, w_ref) else: number_children = len(rec) assert number_children > 0,\ @@ -579,7 +579,7 @@ form: module.record_id""" % (xml_id,) # The parent attribute was specified, if non-empty determine its ID, otherwise # explicitly make a top-level menu if rec.get('parent'): - menu_parent_id = self.id_get(cr, 'ir.ui.menu', rec.get('parent','')) + menu_parent_id = self.id_get(cr, rec.get('parent','')) else: # we get here with <menuitem parent="">, explicit clear of parent, or # if no parent attribute at all but menu name is not a menu path @@ -588,7 +588,7 @@ form: module.record_id""" % (xml_id,) if rec.get('name'): values['name'] = rec.get('name') try: - res = [ self.id_get(cr, 'ir.ui.menu', rec.get('id','')) ] + res = [ self.id_get(cr, rec.get('id','')) ] except: res = None @@ -603,7 +603,7 @@ form: module.record_id""" % (xml_id,) } values['icon'] = icons.get(a_type,'STOCK_NEW') if a_type=='act_window': - a_id = self.id_get(cr, 'ir.actions.%s'% a_type, a_action) + 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" \ @@ -628,7 +628,7 @@ form: module.record_id""" % (xml_id,) if not values.get('name', False): values['name'] = action_name elif a_type=='wizard': - a_id = self.id_get(cr, 'ir.actions.%s'% a_type, a_action) + a_id = self.id_get(cr, a_action) cr.execute('select name from ir_act_wizard where id=%s', (int(a_id),)) resw = cr.fetchone() if (not values.get('name', False)) and resw: @@ -647,10 +647,10 @@ form: module.record_id""" % (xml_id,) groups_value = [] for group in g_names: if group.startswith('-'): - group_id = self.id_get(cr, 'res.groups', group[1:]) + group_id = self.id_get(cr, group[1:]) groups_value.append((3, group_id)) else: - group_id = self.id_get(cr, 'res.groups', group) + group_id = self.id_get(cr, group) groups_value.append((4, group_id)) values['groups_id'] = groups_value @@ -664,7 +664,7 @@ form: module.record_id""" % (xml_id,) 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, 'ir.actions.%s' % a_type, a_action) + 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) @@ -692,7 +692,7 @@ form: module.record_id""" % (xml_id,) context = self.get_context(data_node, rec, eval_dict) uid = self.get_uid(cr, self.uid, data_node, rec) if rec_id: - ids = [self.id_get(cr, rec_model, rec_id)] + ids = [self.id_get(cr, rec_id)] elif rec_src: q = unsafe_eval(rec_src, eval_dict) ids = self.pool.get(rec_model).search(cr, uid, q, context=context) @@ -814,10 +814,10 @@ form: module.record_id""" % (xml_id,) else: if f_name in model._columns \ and model._columns[f_name]._type == 'reference': - val = self.model_id_get(cr, f_model, f_ref) + val = self.model_id_get(cr, f_ref) f_val = val[0] + ',' + str(val[1]) else: - f_val = self.id_get(cr, f_model, f_ref) + f_val = self.id_get(cr, f_ref) else: f_val = _eval_xml(self,field, self.pool, cr, self.uid, self.idref) if model._columns.has_key(f_name): @@ -832,23 +832,19 @@ form: module.record_id""" % (xml_id,) cr.commit() return rec_model, id - def id_get(self, cr, model, id_str): + def id_get(self, cr, id_str): if id_str in self.idref: return self.idref[id_str] - res = self.model_id_get(cr, model, id_str) + res = self.model_id_get(cr, id_str) if res and len(res)>1: res = res[1] return res - def model_id_get(self, cr, model, id_str): + def model_id_get(self, cr, id_str): model_data_obj = self.pool.get('ir.model.data') mod = self.module if '.' in id_str: mod,id_str = id_str.split('.') - result = model_data_obj._get_id(cr, self.uid, mod, id_str) - res = model_data_obj.read(cr, self.uid, [result], ['model', 'res_id']) - if res and res[0] and res[0]['res_id']: - return res[0]['model'], int(res[0]['res_id']) - return False + return model_data_obj.get_object_reference(cr, self.uid, mod, id_str) def parse(self, de): if not de.tag in ['terp', 'openerp']: diff --git a/bin/tools/misc.py b/bin/tools/misc.py index 7a416052d21..59230d5f141 100644 --- a/bin/tools/misc.py +++ b/bin/tools/misc.py @@ -76,20 +76,19 @@ def init_db(cr): p_id = None while categs: if p_id is not None: - cr.execute('select id \ - from ir_module_category \ - where name=%s and parent_id=%s', (categs[0], p_id)) + cr.execute('SELECT id \ + FROM ir_module_category \ + WHERE name=%s AND parent_id=%s', (categs[0], p_id)) else: - cr.execute('select id \ - from ir_module_category \ - where name=%s and parent_id is NULL', (categs[0],)) + cr.execute('SELECT id \ + FROM ir_module_category \ + WHERE name=%s AND parent_id IS NULL', (categs[0],)) c_id = cr.fetchone() if not c_id: - cr.execute('select nextval(\'ir_module_category_id_seq\')') + cr.execute('INSERT INTO ir_module_category \ + (name, parent_id) \ + VALUES (%s, %s) RETURNING id', (categs[0], p_id)) c_id = cr.fetchone()[0] - cr.execute('insert into ir_module_category \ - (id, name, parent_id) \ - values (%s, %s, %s)', (c_id, categs[0], p_id)) else: c_id = c_id[0] p_id = c_id @@ -104,23 +103,23 @@ def init_db(cr): state = 'uninstalled' else: state = 'uninstallable' - cr.execute('select nextval(\'ir_module_module_id_seq\')') - id = cr.fetchone()[0] - cr.execute('insert into ir_module_module \ - (id, author, website, name, shortdesc, description, \ - category_id, state, certificate, web) \ - values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)', ( - id, info.get('author', ''), + cr.execute('INSERT INTO ir_module_module \ + (author, website, name, shortdesc, description, \ + category_id, state, certificate, web, license) \ + VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING id', ( + info.get('author', ''), info.get('website', ''), i, info.get('name', False), info.get('description', ''), p_id, state, info.get('certificate') or None, - info.get('web') or False)) - cr.execute('insert into ir_model_data \ - (name,model,module, res_id, noupdate) values (%s,%s,%s,%s,%s)', ( + info.get('web') or False, + info.get('license') or 'AGPL-3')) + id = cr.fetchone()[0] + cr.execute('INSERT INTO ir_model_data \ + (name,model,module, res_id, noupdate) VALUES (%s,%s,%s,%s,%s)', ( 'module_meta_information', 'ir.module.module', i, id, True)) dependencies = info.get('depends', []) for d in dependencies: - cr.execute('insert into ir_module_module_dependency \ - (module_id,name) values (%s, %s)', (id, d)) + cr.execute('INSERT INTO ir_module_module_dependency \ + (module_id,name) VALUES (%s, %s)', (id, d)) cr.commit() def find_in_path(name): @@ -142,15 +141,15 @@ def exec_pg_command(name, *args): prog = find_pg_tool(name) if not prog: raise Exception('Couldn\'t find %s' % name) - args2 = (os.path.basename(prog),) + args + args2 = (prog,) + args - return subprocess.call(args2, executable=prog) + return subprocess.call(args2) def exec_pg_command_pipe(name, *args): prog = find_pg_tool(name) if not prog: raise Exception('Couldn\'t find %s' % name) - pop = subprocess.Popen(args, executable=prog, shell=True, bufsize= -1, + pop = subprocess.Popen((prog,) + args, bufsize= -1, stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True) return (pop.stdin, pop.stdout) @@ -158,7 +157,7 @@ def exec_command_pipe(name, *args): prog = find_in_path(name) if not prog: raise Exception('Couldn\'t find %s' % name) - pop = subprocess.Popen(args, executable=prog, shell=True, bufsize= -1, + pop = subprocess.Popen((prog,) + args, bufsize= -1, stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True) return (pop.stdin, pop.stdout) @@ -913,6 +912,8 @@ def get_iso_codes(lang): return lang def get_languages(): + # The codes below are those from Launchpad's Rosetta, with the exception + # of some trivial codes where the Launchpad code is xx and we have xx_XX. languages={ 'ab_RU': u'Abkhazian / аҧсуа', 'ar_AR': u'Arabic / الْعَرَبيّة', @@ -979,7 +980,8 @@ def get_languages(): 'sl_SI': u'Slovenian / slovenščina', 'sk_SK': u'Slovak / Slovenský jazyk', 'sq_AL': u'Albanian / Shqip', - 'sr_RS': u'Serbian / српски језик', + 'sr_RS': u'Serbian (Cyrillic) / српски', + 'sr@latin': u'Serbian (Latin) / srpski', 'sv_SE': u'Swedish / svenska', 'te_IN': u'Telugu / తెలుగు', 'tr_TR': u'Turkish / Türkçe', diff --git a/bin/tools/translate.py b/bin/tools/translate.py index e0379a71eef..11ce59e1019 100644 --- a/bin/tools/translate.py +++ b/bin/tools/translate.py @@ -167,7 +167,7 @@ class GettextAlias(object): cr = pooler.get_db(dbs[0]).cursor() is_new_cr = True return cr, is_new_cr - + def _get_lang(self, frame): lang = frame.f_locals.get('context', {}).get('lang', False) if not lang: @@ -179,7 +179,7 @@ class GettextAlias(object): c = getattr(s, 'localcontext', {}) lang = c.get('lang', False) return lang - + def __call__(self, source): is_new_cr = False res = source @@ -469,6 +469,8 @@ def trans_parse_view(de): res.append(de.get('string').encode("utf8")) if de.get("sum"): res.append(de.get('sum').encode("utf8")) + if de.get("confirm"): + res.append(de.get('confirm').encode("utf8")) for n in de: res.extend(trans_parse_view(n)) return res diff --git a/bin/tools/yaml_import.py b/bin/tools/yaml_import.py index 0098e4e2117..6e5a581be73 100644 --- a/bin/tools/yaml_import.py +++ b/bin/tools/yaml_import.py @@ -34,7 +34,8 @@ def is_comment(node): return isinstance(node, types.StringTypes) def is_assert(node): - return _is_yaml_mapping(node, yaml_tag.Assert) + return isinstance(node, yaml_tag.Assert) \ + or _is_yaml_mapping(node, yaml_tag.Assert) def is_record(node): return _is_yaml_mapping(node, yaml_tag.Record) @@ -218,19 +219,22 @@ class YamlInterpreter(object): elif assertion.search: q = eval(assertion.search, self.eval_context) ids = self.pool.get(assertion.model).search(self.cr, self.uid, q, context=assertion.context) - if not ids: + else: raise YamlImportException('Nothing to assert: you must give either an id or a search criteria.') return ids def process_assert(self, node): - assertion, expressions = node.items()[0] + if isinstance(node, dict): + assertion, expressions = node.items()[0] + else: + assertion, expressions = node, [] if self.isnoupdate(assertion) and self.mode != 'init': self.logger.warn('This assertion was not evaluated ("%s").' % assertion.string) return model = self.get_model(assertion.model) ids = self._get_assertion_id(assertion) - if assertion.count and len(ids) != assertion.count: + if assertion.count is not None and len(ids) != assertion.count: msg = 'assertion "%s" failed!\n' \ ' Incorrect search count:\n' \ ' expected count: %d\n' \ diff --git a/bin/tools/yaml_tag.py b/bin/tools/yaml_tag.py index e12aecdcd96..20aabf1c54c 100644 --- a/bin/tools/yaml_tag.py +++ b/bin/tools/yaml_tag.py @@ -16,7 +16,7 @@ class YamlTag(object): return "<%s %s>" % (self.__class__.__name__, sorted(self.__dict__.items())) class Assert(YamlTag): - def __init__(self, model, id, severity=logging.WARNING, string="NONAME", **kwargs): + def __init__(self, model, id=None, severity=logging.WARNING, string="NONAME", **kwargs): self.model = model self.id = id self.severity = severity |
