diff --git a/bin/addons/base/base_data.xml b/bin/addons/base/base_data.xml
index 9284f4eefeb..c35382b028f 100644
--- a/bin/addons/base/base_data.xml
+++ b/bin/addons/base/base_data.xml
@@ -1067,7 +1067,7 @@
-
+
@@ -1167,7 +1167,7 @@
- 2332.91
+ 2933.8378
@@ -1181,7 +1181,7 @@
- 24.6682
+ 26.5634
@@ -1210,10 +1210,24 @@
- 284.1004
+ 271.5621
+
+
+ Rs
+ IDR
+ Rs
+ 0.01
+ 4
+
+
+
+ 13495.2056
+
+
+
Ls
@@ -1268,12 +1282,11 @@
- 3.9416
+ 4.1005
-
kr
SEK
@@ -1283,7 +1296,7 @@
- 9.2981
+ 10.3004
diff --git a/bin/addons/base/ir/ir_cron.py b/bin/addons/base/ir/ir_cron.py
index 905b2dc1778..33962c557c4 100644
--- a/bin/addons/base/ir/ir_cron.py
+++ b/bin/addons/base/ir/ir_cron.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
##############################################################################
#
-# OpenERP, Open Source Management Solution
+# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved
# $Id$
#
@@ -50,7 +50,7 @@ class ir_cron(osv.osv, netsvc.Agent):
'interval_number': fields.integer('Interval Number'),
'interval_type': fields.selection( [('minutes', 'Minutes'),
('hours', 'Hours'), ('work_days','Work Days'), ('days', 'Days'),('weeks', 'Weeks'), ('months', 'Months')], 'Interval Unit'),
- 'numbercall': fields.integer('Number of Calls', help='Number of time the function is called,\na negative number indicates that the function will always be called'),
+ 'numbercall': fields.integer('Number of Calls', help='Number of time the function is called,\na negative number indicates that the function will always be called'),
'doall' : fields.boolean('Repeat Missed'),
'nextcall' : fields.datetime('Next Call Date', required=True),
'model': fields.char('Object', size=64),
@@ -77,7 +77,7 @@ class ir_cron(osv.osv, netsvc.Agent):
except:
return False
return True
-
+
_constraints = [
(_check_args, 'Invalid arguments', ['args']),
]
@@ -98,7 +98,7 @@ class ir_cron(osv.osv, netsvc.Agent):
try:
db, pool = pooler.get_db_and_pool(db_name)
except:
- return False
+ return False
cr = db.cursor()
try:
if not pool._init:
@@ -107,7 +107,7 @@ class ir_cron(osv.osv, netsvc.Agent):
for job in cr.dictfetchall():
nextcall = datetime.strptime(job['nextcall'], '%Y-%m-%d %H:%M:%S')
numbercall = job['numbercall']
-
+
ok = False
while nextcall < now and numbercall:
if numbercall > 0:
@@ -125,12 +125,12 @@ class ir_cron(osv.osv, netsvc.Agent):
cr.execute('select min(nextcall) as min_next_call from ir_cron where numbercall<>0 and active and nextcall>=now()')
- next_call = cr.dictfetchone()['min_next_call']
+ next_call = cr.dictfetchone()['min_next_call']
if next_call:
next_call = time.mktime(time.strptime(next_call, '%Y-%m-%d %H:%M:%S'))
else:
next_call = int(time.time()) + 3600 # if do not find active cron job from database, it will run again after 1 day
-
+
if not check:
self.setAlarm(self._poolJobs, next_call, db_name, db_name)
@@ -138,29 +138,31 @@ class ir_cron(osv.osv, netsvc.Agent):
logger = netsvc.Logger()
logger.notifyChannel('cron', netsvc.LOG_WARNING,
'Exception in cron:'+str(ex))
-
+
finally:
cr.commit()
cr.close()
-
+ def restart(self, dbname):
+ self.cancel(dbname)
+ self._poolJobs(dbname)
+
def create(self, cr, uid, vals, context=None):
- res = super(ir_cron, self).create(cr, uid, vals, context=context)
+ res = super(ir_cron, self).create(cr, uid, vals, context=context)
cr.commit()
- self.cancel(cr.dbname)
- self._poolJobs(cr.dbname)
+ self.restart(cr.dbname)
return res
+
def write(self, cr, user, ids, vals, context=None):
res = super(ir_cron, self).write(cr, user, ids, vals, context=context)
cr.commit()
- self.cancel(cr.dbname)
- self._poolJobs(cr.dbname)
+ self.restart(cr.dbname)
return res
+
def unlink(self, cr, uid, ids, context=None):
res = super(ir_cron, self).unlink(cr, uid, ids, context=context)
cr.commit()
- self.cancel(cr.dbname)
- self._poolJobs(cr.dbname)
+ self.restart(cr.dbname)
return res
ir_cron()
diff --git a/bin/netsvc.py b/bin/netsvc.py
index 11f7ca5b695..52825c48f82 100644
--- a/bin/netsvc.py
+++ b/bin/netsvc.py
@@ -167,7 +167,7 @@ LEVEL_COLOR_MAPPING = {
class DBFormatter(logging.Formatter):
def format(self, record):
- record.dbname = getattr(threading.current_thread(), 'dbname', '?')
+ record.dbname = getattr(threading.currentThread(), 'dbname', '?')
return logging.Formatter.format(self, record)
class ColoredFormatter(DBFormatter):
diff --git a/bin/osv/orm.py b/bin/osv/orm.py
index 6f73f821f8e..3421190fc5f 100644
--- a/bin/osv/orm.py
+++ b/bin/osv/orm.py
@@ -443,7 +443,7 @@ class orm_template(object):
if context.get('field_name', '') == k:
vals['select_level'] = context.get('select', '0')
#setting value to let the problem NOT occur next time
- else:
+ elif k in cols:
vals['select_level'] = cols[k]['select_level']
if k not in cols:
diff --git a/bin/pooler.py b/bin/pooler.py
index d0f38836504..7a572e71e0d 100644
--- a/bin/pooler.py
+++ b/bin/pooler.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
+# along with this program. If not, see .
#
##############################################################################
@@ -34,10 +34,10 @@ def get_db_and_pool(db_name, force_demo=False, status=None, update_module=False,
import osv.osv
pool = osv.osv.osv_pool()
pool_dic[db_name] = pool
-
+
try:
addons.load_modules(db, force_demo, status, update_module)
- except Exception, e:
+ except Exception:
del pool_dic[db_name]
raise
@@ -51,13 +51,12 @@ def get_db_and_pool(db_name, force_demo=False, status=None, update_module=False,
import report
report.interface.register_all(db)
if pooljobs:
- pool.get('ir.cron')._poolJobs(db.dbname)
+ pool.get('ir.cron').restart(db.dbname)
return db, pool
def restart_pool(db_name, force_demo=False, status=None, update_module=False):
if db_name in pool_dic:
- pool_dic[db_name].get('ir.cron').cancel(db_name)
del pool_dic[db_name]
return get_db_and_pool(db_name, force_demo, status, update_module=update_module)
diff --git a/bin/sql_db.py b/bin/sql_db.py
index 438d513b0e4..193a709dd8d 100644
--- a/bin/sql_db.py
+++ b/bin/sql_db.py
@@ -21,7 +21,7 @@
__all__ = ['db_connect', 'close_db']
-from threading import current_thread
+from threading import currentThread
import logging
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT, ISOLATION_LEVEL_READ_COMMITTED, ISOLATION_LEVEL_SERIALIZABLE
from psycopg2.psycopg1 import cursor as psycopg1cursor
@@ -365,13 +365,13 @@ def dsn_are_equals(first, second):
_Pool = ConnectionPool(int(tools.config['db_maxconn']))
def db_connect(db_name):
- current_thread().dbname = db_name
+ currentThread().dbname = db_name
return Connection(_Pool, db_name)
def close_db(db_name):
_Pool.close_all(dsn(db_name))
tools.cache.clean_caches_for_db(db_name)
- ct = current_thread()
+ ct = currentThread()
if hasattr(ct, 'dbname'):
delattr(ct, 'dbname')