[FIX] ir.sequence: add a proper default value for number_next_actual (0 is disallowed by default) + avoid error when trying to alter a sequence during creation

lp bug: https://launchpad.net/bugs/960201 fixed

bzr revid: odo@openerp.com-20130517181514-xcy83yakpuqa3oik
This commit is contained in:
Olivier Dony
2013-05-17 20:15:14 +02:00
parent b50a964eb8
commit 0e8ca44530
+7 -1
View File
@@ -106,6 +106,7 @@ class ir_sequence(openerp.osv.osv.osv):
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'ir.sequence', context=c),
'number_increment': 1,
'number_next': 1,
'number_next_actual': 1,
'padding' : 0,
}
@@ -158,7 +159,12 @@ class ir_sequence(openerp.osv.osv.osv):
if number_increment == 0:
raise osv.except_osv(_('Warning!'),_("Increment number must not be zero."))
assert isinstance(id, (int, long))
statement = ("ALTER SEQUENCE ir_sequence_%03d INCREMENT BY %d" % (id, number_increment))
seq_name = 'ir_sequence_%03d' % (id,)
cr.execute("SELECT relname FROM pg_class WHERE relkind = %s AND relname=%s", ('S', seq_name))
if not cr.fetchone():
# sequence is not created yet, we're inside create() so ignore it, will be set later
return
statement = "ALTER SEQUENCE %s INCREMENT BY %d" % (seq_name, number_increment)
if number_next is not None:
statement += " RESTART WITH %d" % (number_next, )
cr.execute(statement)