From e2e065ce5b84c238ae01db1c4486f255d02f4a68 Mon Sep 17 00:00:00 2001 From: ced <> Date: Wed, 28 Feb 2007 21:50:24 +0000 Subject: [PATCH] KERNEL,CLIENT: add right-click for translate label bzr revid: ced-394d547d53fe085331431661ae7568dc792665e6 --- bin/netsvc.py | 8 +++++--- bin/osv/orm.py | 38 ++++++++++++++++++++++++++++++++++++++ bin/tinyerp-server.py | 6 ++++-- 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/bin/netsvc.py b/bin/netsvc.py index ba4e2983c90..833154628e0 100644 --- a/bin/netsvc.py +++ b/bin/netsvc.py @@ -359,10 +359,12 @@ class TinySocketServerThread(threading.Thread): def stop(self): self.running=False for t in self.threads: - print "thread" t.stop() - self.socket.shutdown(socket.SHUT_RDWR) - self.socket.close() + try: + self.socket.shutdown(socket.SHUT_RDWR) + self.socket.close() + except: + return False # vim:noexpandtab: diff --git a/bin/osv/orm.py b/bin/osv/orm.py index 480adabfdba..92c533e3ca0 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -1528,4 +1528,42 @@ class orm(object): del data[self._inherits[v]] return self.create(cr, uid, data) + def read_string(self, cr, uid, id, langs, fields=None, context={}): + res = {} + res2 = {} + self.pool.get('ir.model.access').check(cr, uid, self._name, 'read') + if not fields: + fields = self._columns.keys() + self._inherit_fields.keys() + for lang in langs: + res[lang] = {'code': lang} + for f in fields: + if f in self._columns: + res_trans = self.pool.get('ir.translation')._get_source(cr, uid, self._name+','+f, 'field', lang) + if res_trans: + res[lang][f]=res_trans + else: + print "columns:", self._columns[f].string + res[lang][f]=self._columns[f].string + for table in self._inherits: + cols = intersect(self._inherit_fields.keys(), fields) + res2 = self.pool.get(table).read_string(cr, uid, id, langs, cols, context) + for lang in res2: + if lang in res: + res[lang]={'code': lang} + for f in res2[lang]: + res[lang][f]=res2[lang][f] + return res + + def write_string(self, cr, uid, id, langs, vals, context={}): + self.pool.get('ir.model.access').check(cr, uid, self._name, 'write') + for lang in langs: + for field in vals: + if field in self._columns: + self.pool.get('ir.translation')._set_ids(cr, uid, self._name+','+field, 'field', lang, [0], vals[field]) + for table in self._inherits: + cols = intersect(self._inherit_fields.keys(), vals) + if cols: + self.pool.get(table).write_string(cr, uid, id, langs, vals, context) + return True + # vim:noexpandtab:ts=4 diff --git a/bin/tinyerp-server.py b/bin/tinyerp-server.py index da0397b1657..76553e53067 100755 --- a/bin/tinyerp-server.py +++ b/bin/tinyerp-server.py @@ -241,8 +241,10 @@ if tools.config['netrpc']: def handler(signum, frame): from tools import config - tinySocket.stop() - httpd.stop() + if tools.config['netrpc']: + tinySocket.stop() + if tools.config['xmlrpc']: + httpd.stop() netsvc.Agent.quit() if config['pidfile']: os.unlink(config['pidfile'])