diff --git a/bin/addons/__init__.py b/bin/addons/__init__.py
index a198ef27942..41114488c13 100644
--- a/bin/addons/__init__.py
+++ b/bin/addons/__init__.py
@@ -179,7 +179,7 @@ def init_module_objects(cr, module_name, obj_list):
for obj in obj_list:
if hasattr(obj, 'init'):
obj.init(cr)
- obj._auto_init(cr)
+ obj._auto_init(cr, {'module': module_name})
cr.commit()
def load_module_graph(cr, graph, status=None, **kwargs):
diff --git a/bin/addons/base/base.sql b/bin/addons/base/base.sql
index 911b90fe5da..21d667e3947 100644
--- a/bin/addons/base/base.sql
+++ b/bin/addons/base/base.sql
@@ -113,22 +113,22 @@ INHERITS (ir_actions);
CREATE TABLE ir_ui_view (
- id serial NOT NULL,
- name varchar(64) DEFAULT ''::varchar NOT NULL,
- model varchar(64) DEFAULT ''::varchar NOT NULL,
- "type" varchar(64) DEFAULT 'form'::varchar NOT NULL,
- arch text NOT NULL,
- field_parent varchar(64),
- priority integer DEFAULT 5 NOT NULL,
- primary key(id)
+ id serial NOT NULL,
+ name varchar(64) DEFAULT ''::varchar NOT NULL,
+ model varchar(64) DEFAULT ''::varchar NOT NULL,
+ "type" varchar(64) DEFAULT 'form'::varchar NOT NULL,
+ arch text NOT NULL,
+ field_parent varchar(64),
+ priority integer DEFAULT 5 NOT NULL,
+ primary key(id)
);
CREATE TABLE ir_ui_menu (
- id serial NOT NULL,
- parent_id int references ir_ui_menu on delete set null,
- name varchar(64) DEFAULT ''::varchar NOT NULL,
- icon varchar(64) DEFAULT ''::varchar,
- primary key (id)
+ id serial NOT NULL,
+ parent_id int references ir_ui_menu on delete set null,
+ name varchar(64) DEFAULT ''::varchar NOT NULL,
+ icon varchar(64) DEFAULT ''::varchar,
+ primary key (id)
);
select setval('ir_ui_menu_id_seq', 2);
@@ -171,13 +171,13 @@ create table res_roles (
);
CREATE TABLE res_roles_users_rel (
- uid integer NOT NULL references res_users on delete cascade,
- rid integer NOT NULL references res_roles on delete cascade
+ uid integer NOT NULL references res_users on delete cascade,
+ rid integer NOT NULL references res_roles on delete cascade
);
CREATE TABLE res_groups_users_rel (
- uid integer NOT NULL references res_users on delete cascade,
- gid integer NOT NULL references res_groups on delete cascade
+ uid integer NOT NULL references res_users on delete cascade,
+ gid integer NOT NULL references res_groups on delete cascade
);
---------------------------------
@@ -318,3 +318,19 @@ CREATE TABLE res_company (
parent_id integer references res_company on delete set null,
primary key(id)
);
+
+CREATE TABLE ir_model_data (
+ id serial NOT NULL,
+ create_uid integer,
+ create_date timestamp without time zone,
+ write_date timestamp without time zone,
+ write_uid integer,
+ noupdate boolean,
+ name character varying(64) NOT NULL,
+ date_init timestamp without time zone,
+ date_update timestamp without time zone,
+ module character varying(64) NOT NULL,
+ model character varying(64) NOT NULL,
+ res_id integer, primary key(id)
+);
+
diff --git a/bin/addons/base/base_menu.xml b/bin/addons/base/base_menu.xml
index 5ec22f891ae..d0bf03679d1 100644
--- a/bin/addons/base/base_menu.xml
+++ b/bin/addons/base/base_menu.xml
@@ -1,27 +1,13 @@
-
-
+
-
-
-
-
-
- Your Companies
- res.company
- form
- tree,form
-
-
diff --git a/bin/addons/base/base_update.xml b/bin/addons/base/base_update.xml
index 33bc475e2a1..52be640220f 100644
--- a/bin/addons/base/base_update.xml
+++ b/bin/addons/base/base_update.xml
@@ -169,30 +169,5 @@
- # Admin config
-
-
-
-
- Users
- res.users
- form
- tree,form
-
-
-
- tree
-
-
-
-
-
- form
-
-
-
-
-
-
diff --git a/bin/addons/base/ir/ir_model.py b/bin/addons/base/ir/ir_model.py
index 1efb8773a05..a2b237b46a9 100644
--- a/bin/addons/base/ir/ir_model.py
+++ b/bin/addons/base/ir/ir_model.py
@@ -140,7 +140,7 @@ class ir_model_fields(osv.osv):
if not vals['name'].startswith('x_'):
raise except_orm('Error', "Custom fields must have a name that starts with 'x_' !")
self.pool.get(vals['model']).__init__(self.pool, cr)
- self.pool.get(vals['model'])._auto_init(cr)
+ self.pool.get(vals['model'])._auto_init(cr,{})
return res
ir_model_fields()
diff --git a/bin/addons/base/ir/ir_ui_menu.py b/bin/addons/base/ir/ir_ui_menu.py
index a63f2f0a062..4d993bcc0ff 100644
--- a/bin/addons/base/ir/ir_ui_menu.py
+++ b/bin/addons/base/ir/ir_ui_menu.py
@@ -89,6 +89,8 @@ class ir_ui_menu(osv.osv):
context = {}
ids = osv.orm.orm.search(self, cr, uid, args, offset, limit, order,
context=context)
+ if uid==1:
+ return ids
user_groups = self.pool.get('res.users').read(cr, uid, [uid])[0]['groups_id']
result = []
for menu in self.browse(cr, uid, ids):
diff --git a/bin/addons/base/ir/ir_values.py b/bin/addons/base/ir/ir_values.py
index 9e0e33a3187..8940cc8521b 100644
--- a/bin/addons/base/ir/ir_values.py
+++ b/bin/addons/base/ir/ir_values.py
@@ -77,8 +77,8 @@ class ir_values(osv.osv):
'company_id': lambda *a: False
}
- def _auto_init(self, cr):
- super(ir_values, self)._auto_init(cr)
+ def _auto_init(self, cr, context={}):
+ super(ir_values, self)._auto_init(cr, context)
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'ir_values_key_model_key2_index\'')
if not cr.fetchone():
cr.execute('CREATE INDEX ir_values_key_model_key2_index ON ir_values (key, model, key2)')
diff --git a/bin/addons/base/ir/workflow/workflow.py b/bin/addons/base/ir/workflow/workflow.py
index 95db4c8c9e4..8da77f7d24a 100644
--- a/bin/addons/base/ir/workflow/workflow.py
+++ b/bin/addons/base/ir/workflow/workflow.py
@@ -147,8 +147,8 @@ class wkf_instance(osv.osv):
'res_type': fields.char('Resource Model', size=64),
'state': fields.char('State', size=32),
}
- def _auto_init(self, cr):
- super(wkf_instance, self)._auto_init(cr)
+ def _auto_init(self, cr, context={}):
+ super(wkf_instance, self)._auto_init(cr, context)
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'wkf_instance_res_id_res_type_state_index\'')
if not cr.fetchone():
cr.execute('CREATE INDEX wkf_instance_res_id_res_type_state_index ON wkf_instance (res_id, res_type, state)')
@@ -178,8 +178,8 @@ class wkf_triggers(osv.osv):
'instance_id': fields.many2one('workflow.instance', 'Destination Instance', ondelete="cascade"),
'workitem_id': fields.many2one('workflow.workitem', 'Workitem', required=True, ondelete="cascade"),
}
- def _auto_init(self, cr):
- super(wkf_triggers, self)._auto_init(cr)
+ def _auto_init(self, cr, context={}):
+ super(wkf_triggers, self)._auto_init(cr, context)
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'wkf_triggers_res_id_model_index\'')
if not cr.fetchone():
cr.execute('CREATE INDEX wkf_triggers_res_id_model_index ON wkf_triggers (res_id, model)')
diff --git a/bin/addons/base/res/partner/partner_view.xml b/bin/addons/base/res/partner/partner_view.xml
index 6558070267d..dfdc529f343 100644
--- a/bin/addons/base/res/partner/partner_view.xml
+++ b/bin/addons/base/res/partner/partner_view.xml
@@ -503,28 +503,6 @@
-
-
-
-
-
- Partner Categories
- res.partner.category
- form
- tree,form
-
-
-
-
-
- Partner
- res.partner
- form
- tree,form
-
-
diff --git a/bin/osv/orm.py b/bin/osv/orm.py
index cab07834f60..ea7228fe97d 100644
--- a/bin/osv/orm.py
+++ b/bin/osv/orm.py
@@ -76,21 +76,6 @@ class except_orm(Exception):
self.value = value
self.args = (name, value)
-#class find_fields(object):
-# def _start_el(self,name, attrs):
-# if name == 'field' and attrs.get('name', False):
-# self.datas[str(attrs['name'])] = attrs.get('preload','')
-# def __init__(self):
-# self.datas = {}
-# def parse(self, datas):
-# p = expat.ParserCreate()
-# p.StartElementHandler = self._start_el
-# p.Parse(datas, 1)
-# return self.datas
-
-#
-# TODO: trigger pour chaque action
-#
# Readonly python database object browser
class browse_null(object):
@@ -295,27 +280,79 @@ class orm_template(object):
_description = None
_inherits = {}
- def _field_create(self, cr):
+ def _field_create(self, cr, context={}):
cr.execute("SELECT id FROM ir_model WHERE model='%s'" % self._name)
if not cr.rowcount:
# reference model in order to have a description of its fonctionnality in custom_report
- cr.execute("INSERT INTO ir_model (model, name, info) VALUES (%s, %s, %s)", (self._name, self._description, self.__doc__))
- cr.commit()
- for k in self._columns:
- f = self._columns[k]
- cr.execute("select id, relate from ir_model_fields where model=%s and name=%s", (self._name,k))
- if not cr.rowcount:
- cr.execute("select id from ir_model where model='%s'" % self._name)
- model_id = cr.fetchone()[0]
- cr.execute("INSERT INTO ir_model_fields (model_id, model, name, field_description, ttype, relate,relation,group_name,view_load,state,select_level) VALUES (%d,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", (model_id, self._name, k, f.string.replace("'", " "), f._type, (f.relate and 'True') or 'False', f._obj or 'NULL', f.group_name or '', (f.view_load and 'True') or 'False', 'base', str(f.select or 0)))
- else:
- id, relate = cr.fetchone()
- if relate != f.relate:
- cr.execute("UPDATE ir_model_fields SET relate=%s WHERE id=%d", ((f.relate and 'True') or 'False', id))
+ cr.execute('select nextval(%s)', ('ir_model_id_seq',))
+ id = cr.fetchone()[0]
+ cr.execute("INSERT INTO ir_model (id,model, name, info) VALUES (%s, %s, %s, %s)", (id,self._name, self._description, self.__doc__))
+ if 'module' in context:
+ cr.execute("INSERT INTO ir_model_data (name,date_init,date_update,module,model,res_id) VALUES (%s, now(), now(), %s, %s, %s)", \
+ ( 'model_'+self._table, context['module'], 'ir.model', id)
+ )
cr.commit()
- def _auto_init(self, cr):
- self._field_create(cr)
+ cr.execute("select * from ir_model_fields where model=%s", (self._name,))
+ cols = {}
+ for rec in cr.dictfetchall():
+ cols[rec['name']] = rec
+
+ cr.execute("select id from ir_model where model='%s'" % self._name)
+ model_id = cr.fetchone()[0]
+
+ for (k,f) in self._columns.items():
+ vals = {
+ 'model_id':model_id,
+ 'model':self._name,
+ 'name':k,
+ 'field_description':f.string.replace("'", " "),
+ 'ttype':f._type,
+ 'relate':(f.relate and 1) or 0,
+ 'relation':f._obj or 'NULL',
+ 'group_name':f.group_name or '',
+ 'view_load':(f.view_load and 1) or 0,
+ 'state':'base',
+ 'select_level':str(f.select or 0)
+ }
+ if k not in cols:
+ cr.execute('select nextval(%s)', ('ir_model_fields_id_seq',))
+ id = cr.fetchone()[0]
+ vals['id'] = id
+ cr.execute("""INSERT INTO ir_model_fields (
+ id, model_id, model, name, field_description, ttype,
+ relate,relation,group_name,view_load,state,select_level
+ ) VALUES (
+ %d,%s,%s,%s,%s,%s, %s,%s,%s,%s,%s, %s
+ )""", (
+ id, vals['model_id'], vals['model'], vals['name'], vals['field_description'], vals['ttype'],
+ bool(vals['relate']), vals['relation'], vals['group_name'], bool(vals['view_load']), vals['state'],
+ vals['select_level']
+ ))
+ if 'module' in context:
+ cr.execute("INSERT INTO ir_model_data (name,date_init,date_update,module,model,res_id) VALUES (%s, now(), now(), %s, %s, %s)", \
+ ( ('field_'+self._table+'_'+k)[:64], context['module'], 'ir.model.fields', id)
+ )
+ else:
+ for key,val in vals.items():
+ if cols[k][key]<>vals[key]:
+ print 'Different', cols[k][key], vals[key], k, key, self._name
+ cr.execute('update ir_model_fields set field_description=%s where model=%s and name=%s', (vals['field_description'],vals['model'],vals['name']))
+ cr.commit()
+ cr.execute("""UPDATE ir_model_fields SET
+ model_id=%s, field_description=%s, ttype=%s, relate=%s, relation=%s,
+ group_name=%s, view_load=%s, state=%s, select_level=%s
+ WHERE
+ model=%s AND name=%s""", (
+ vals['model_id'],vals['field_description'],vals['ttype'],bool(vals['relate']),
+ vals['relation'], vals['group_name'], bool(vals['view_load']), vals['state'],
+ vals['select_level'], vals['model'], vals['name']
+ ))
+ continue
+ cr.commit()
+
+ def _auto_init(self, cr, context={}):
+ self._field_create(cr, context)
def __init__(self, cr):
if not self._description:
@@ -1206,10 +1243,10 @@ class orm(orm_template):
_log_access = True
_table = None
_protected = ['read','write','create','default_get','perm_read','unlink','fields_get','fields_view_get','search','name_get','distinct_field_get','name_search','copy','import_data','search_count']
- def _auto_init(self, cr):
+ def _auto_init(self, cr, context={}):
logger = netsvc.Logger()
create = False
- self._field_create(cr)
+ self._field_create(cr, context=context)
if not hasattr(self, "_auto") or self._auto:
cr.execute("SELECT relname FROM pg_class WHERE relkind in ('r','v') AND relname='%s'" % self._table)
if not cr.rowcount:
diff --git a/bin/tools/convert.py b/bin/tools/convert.py
index 0db57b898d9..024275e983f 100644
--- a/bin/tools/convert.py
+++ b/bin/tools/convert.py
@@ -355,7 +355,7 @@ form: module.record_id""" % (xml_id,)
'auto_refresh': auto_refresh,
}
if rec.hasAttribute('target'):
- res['target'] = rex.getAttribute('target')
+ res['target'] = rec.getAttribute('target')
id = self.pool.get('ir.model.data')._update(cr, self.uid, 'ir.actions.act_window', self.module, res, xml_id, mode=self.mode)
self.idref[xml_id] = int(id)
diff --git a/bin/tools/translate.py b/bin/tools/translate.py
index cd989ee39dc..2ab3b5159f6 100644
--- a/bin/tools/translate.py
+++ b/bin/tools/translate.py
@@ -54,14 +54,13 @@ def translate(cr, uid, name, source_type, lang, source=None):
res_trans = cr.fetchone()
res = res_trans and res_trans[0] or False
return res
-
+
def translate_code(cr, uid, source, context):
lang = context.get('lang', False)
if lang:
return translate(cr, uid, None, 'code', lang, source)
else:
return source
-
_ = lambda source: translate_code(cr, uid, source, context)
# Methods to export the translation file
@@ -129,104 +128,28 @@ def trans_generate(lang, modules, dbname=None):
l.sort()
out = [["type","name","res_id","src","value"]]
-#TODO: do everything through to_translate, for that, we'll probably need to change its
-#format and have records = list of tuples (id, name, source) instead of just source
to_translate = []
- # object fields
- for obj_name, obj in l:
- if in_modules(obj_name, modules):
- for field_name, field_def in obj._columns.iteritems():
- name = obj_name + "," + field_name
- value = ""
- if lang:
- cr.execute("SELECT * FROM ir_translation WHERE type='field' AND name=%s AND lang=%s", (name,lang))
- res = cr.dictfetchall()
- if len(res):
- value = res[0]['value']
- out.append(["field", name, "0", field_def.string.encode('utf8'), value])
- if field_def.help:
- value = ''
- if lang:
- cr.execute('SELECT * FROM ir_translation ' \
- 'WHERE type=\'help\' ' \
- 'AND name = %s ' \
- 'AND lang = %s', (name, lang))
- res = cr.dictfetchall()
- if res:
- value = res[0]['value']
- out.append(['help', name, '0', field_def.help.encode('utf8'), value])
- if field_def.translate:
- ids = osv.orm.orm.search(obj, cr, uid, [])
- obj_values = obj.read(cr, uid, ids, [field_name])
- for obj_value in obj_values:
- trans = ""
- if lang:
- cr.execute("SELECT * " \
- "FROM ir_translation " \
- "WHERE type='model' " \
- "AND name=%s AND res_id=%d AND lang=%s",
- (name, obj_value['id'], lang))
- res = cr.dictfetchall()
- if len(res):
- trans = res[0]['value']
+ if 'all' in modules:
+ cr.execute('select name,model,res_id,module from ir_model_data')
+ else:
+ cr.execute('select name,model,res_id,module from ir_model_data where module in ('+','.join(['%s']*len(modules))+')', modules)
- res_id = obj_value['id']
- if obj_name in ('ir.model', 'ir.ui.menu'):
- res_id = 0
- model_data_ids = model_data_obj.search(cr, uid, [
- ('model', '=', obj_name),
- ('res_id', '=', obj_value['id']),
- ])
- if model_data_ids:
- model_data = model_data_obj.browse(cr, uid,
- model_data_ids[0])
- res_id = model_data.module + '.' + model_data.name
-
- out.append(["model", name, res_id,
- obj_value[field_name], trans])
- if hasattr(field_def, 'selection') and isinstance(field_def.selection, (list, tuple)):
- for key, val in field_def.selection:
- to_translate.append(["selection", name, [val.encode('utf8')]])
-
- # reports (xsl and rml)
- obj = pool.get("ir.actions.report.xml")
- for i in obj.read(cr, uid, osv.orm.orm.search(obj, cr, uid, [])):
- if in_modules(i["model"], modules):
- name = i["report_name"]
- fname = ""
- if i["report_rml"]:
- fname = i["report_rml"]
- parse_func = trans_parse_rml
- report_type = "rml"
- elif i["report_xsl"]:
- fname = i["report_xsl"]
- parse_func = trans_parse_xsl
- report_type = "xsl"
- try:
- xmlstr = tools.file_open(fname).read()
- d = xml.dom.minidom.parseString(xmlstr)
- to_translate.append([report_type, name, parse_func(d.documentElement)])
- except IOError:
- if fname:
- logger.notifyChannel("init", netsvc.LOG_WARNING, "couldn't export translation for report %s %s %s" % (name, report_type, fname))
-
- # views
- obj = pool.get("ir.ui.view")
- for i in obj.read(cr, uid, osv.orm.orm.search(obj, cr, uid, [])):
- if in_modules(i["model"], modules):
- d = xml.dom.minidom.parseString(i['arch'])
- to_translate.append(["view", i['model'], trans_parse_view(d.documentElement)])
-
- # wizards
- for service_name, obj in netsvc._service.iteritems():
- if service_name.startswith('wizard.'):
- for state_name, state_def in obj.states.iteritems():
+ for (xml_name,model,res_id,module) in cr.fetchall():
+ xml_name = module+'.'+xml_name
+ obj = pool.get(model).browse(cr, uid, res_id)
+ if model=='ir.ui.view':
+ d = xml.dom.minidom.parseString(obj.arch)
+ for t in trans_parse_view(d.documentElement):
+ to_translate.append(["view", obj.model, 0, t])
+ elif model=='ir.actions.wizard':
+ service_name = 'wizard.'+obj.wiz_name
+ obj2 = netsvc._service[service_name]
+ for state_name, state_def in obj2.states.iteritems():
if 'result' in state_def:
result = state_def['result']
if result['type'] != 'form':
continue
-
name = obj.wiz_name + ',' + state_name
# export fields
@@ -234,47 +157,95 @@ def trans_generate(lang, modules, dbname=None):
if 'string' in field_def:
source = field_def['string']
res_name = name + ',' + field_name
- to_translate.append(["wizard_field", res_name, [source]])
+ to_translate.append(["wizard_field", res_name,0,source])
# export arch
arch = result['arch']
if not isinstance(arch, UpdateableStr):
d = xml.dom.minidom.parseString(arch)
- to_translate.append(["wizard_view", name, trans_parse_view(d.documentElement)])
+ for t in trans_parse_view(d.documentElement):
+ to_translate.append(["wizard_view", name, 0, t])
# export button labels
for but_args in result['state']:
button_name = but_args[0]
button_label = but_args[1]
res_name = name + ',' + button_name
- to_translate.append(["wizard_button", res_name, [button_label]])
-
+ to_translate.append(["wizard_button", res_name, 0, button_label])
+
+ elif model=='ir.model.fields':
+ field_name = obj.name
+ field_def = pool.get(obj.model)._columns[field_name]
+
+ name = obj.model + "," + field_name
+ to_translate.append(["field", name, 0, field_def.string.encode('utf8')])
+
+ if field_def.help:
+ to_translate.append(["help", name, 0, field_def.help.encode('utf8')])
+
+ if field_def.translate:
+ ids = pool.get(obj.model).search(cr, uid, [])
+ obj_values = pool.get(obj.model).read(cr, uid, ids, [field_name])
+ for obj_value in obj_values:
+ res_id = obj_value['id']
+ if obj.name in ('ir.model', 'ir.ui.menu'):
+ res_id = 0
+ model_data_ids = model_data_obj.search(cr, uid, [
+ ('model', '=', model),
+ ('res_id', '=', res_id),
+ ])
+ if not model_data_ids:
+ to_translate.append(['model', name, 0, obj_value[field_name]])
+
+ if hasattr(field_def, 'selection') and isinstance(field_def.selection, (list, tuple)):
+ for key, val in field_def.selection:
+ to_translate.append(["selection", name, 0, val.encode('utf8')])
+
+ elif model=='ir.actions.report.xml':
+ name = obj.report_name
+ fname = ""
+ if obj.report_rml:
+ fname = obj.report_rml
+ parse_func = trans_parse_rml
+ report_type = "rml"
+ elif obj.report_xsl:
+ fname = obj.report_xsl
+ parse_func = trans_parse_xsl
+ report_type = "xsl"
+ try:
+ xmlstr = tools.file_open(fname).read()
+ d = xml.dom.minidom.parseString(xmlstr)
+ for t in parse_func(d.documentElement):
+ to_translate.append([report_type, name, 0, t])
+ except IOError:
+ if fname:
+ logger.notifyChannel("init", netsvc.LOG_WARNING, "couldn't export translation for report %s %s %s" % (name, report_type, fname))
+
+
+ for field_name,field_def in pool.get(model)._columns.items():
+ if field_def.translate:
+ name = model + "," + field_name
+ to_translate.append(['model', name, xml_name, getattr(obj,field_name)])
+
+ # TODO: By module
# code
for root, dirs, files in os.walk(tools.config['root_path']):
for fname in fnmatch.filter(files, '*.py'):
frelativepath = join(root, fname)
code_string = tools.file_open(frelativepath, subdir='').read()
-
-# TODO: add support for """ and '''... These should use the DOTALL flag
-# DOTALL
-# Make the "." special character match any character at all, including a
-# newline; without this flag, "." will match anything except a newline.
- # *? is the non-greedy version of the * qualifier
iter = re.finditer(
'[^a-zA-Z0-9_]_\([\s]*["\'](.*?)["\'][\s]*\)',
code_string)
+ sources = []
for i in iter:
- source = i.group(1).encode('utf8')
-# TODO: check whether the same string has already been exported
- res = trans_obj._get_source(cr, uid, frelativepath, 'code', lang, source) or ''
- out.append(["code", frelativepath, "0", source, res])
+ to_translate.append(['code', frelativepath, 0, i.group(1).encode('utf8')])
# translate strings marked as to be translated
- for type, name, sources in to_translate:
- for source in sources:
- trans = trans_obj._get_source(cr, uid, name, type, lang, source)
- out.append([type, name, "0", source, trans or ''])
-
+ for a in to_translate:
+ (type, name, id, source) = a
+ trans = trans_obj._get_source(cr, uid, name, type, lang, source)
+ out.append([type, name, id, source, trans or ''])
+
cr.close()
return out
diff --git a/bin/workflow/instance.py b/bin/workflow/instance.py
index 7b036ae2c97..d25bc367f4c 100644
--- a/bin/workflow/instance.py
+++ b/bin/workflow/instance.py
@@ -51,11 +51,9 @@ def delete(cr, ident):
def validate(cr, inst_id, ident, signal, force_running=False):
cr.execute("select * from wkf_workitem where inst_id=%d", (inst_id,))
for witem in cr.dictfetchall():
- print '-----'
stack = []
workitem.process(cr, witem, ident, signal, force_running, stack=stack)
# An action is returned
- print '----- Got', stack
_update_end(cr, inst_id, ident)
return stack and stack[0] or False
@@ -64,7 +62,6 @@ def update(cr, inst_id, ident):
for witem in cr.dictfetchall():
stack = []
workitem.process(cr, witem, ident, stack=stack)
- print 'End Update'
return _update_end(cr, inst_id, ident)
def _update_end(cr, inst_id, ident):
diff --git a/bin/workflow/wkf_expr.py b/bin/workflow/wkf_expr.py
index 434e091f4da..9a86b474f86 100644
--- a/bin/workflow/wkf_expr.py
+++ b/bin/workflow/wkf_expr.py
@@ -70,8 +70,6 @@ class Env(dict):
def _eval_expr(cr, ident, workitem, action):
ret=False
- print '***'
- print action
for line in action.split('\n'):
uid=ident[0]
model=ident[1]
@@ -83,17 +81,14 @@ def _eval_expr(cr, ident, workitem, action):
else:
wf_service = netsvc.LocalService("object_proxy")
env = Env(wf_service, cr, uid, model, ids)
- print line
ret = eval(line, env)
return ret
def execute_action(cr, ident, workitem, activity):
- print 'Execute Action'
wf_service = netsvc.LocalService("object_proxy")
obj = pooler.get_pool(cr.dbname).get('ir.actions.server')
ctx = {'active_id':ident[2], 'active_ids':[ident[2]]}
result = obj.run(cr, ident[0], [activity['action_id']], ctx)
- print 'Result', result
return result
def execute(cr, ident, workitem, activity):
diff --git a/bin/workflow/wkf_service.py b/bin/workflow/wkf_service.py
index 0dc9ccd978e..f1c103ccfe0 100644
--- a/bin/workflow/wkf_service.py
+++ b/bin/workflow/wkf_service.py
@@ -85,7 +85,6 @@ class workflow_service(netsvc.Service):
cr.execute('select id from wkf_instance where res_id=%d and res_type=%s and state=%s', (res_id, res_type, 'active'))
for (id,) in cr.fetchall():
res2 = instance.validate(cr, id, ident, signal)
- print 'Inst val,', res2
result = result or res2
return result