[FIX] account, account_sequence: psycopg2 errors class missing
Traceback when starting odoo server ImportError: cannot import name 'errors' from 'psycopg2' Exception management update in commit 4b430f8e30efb15f06982e4673cd73531a2119b3 would require psycopg2 version 2.8 minimum but version in requirements is 2.7.7 closes odoo/odoo#106369 X-original-commit: b21fdf115e855d2383603e67343012bfe346cfd9 Signed-off-by: William André (wan) <wan@odoo.com>
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
import time
|
||||
import logging
|
||||
|
||||
from psycopg2 import sql, errors as sql_errors
|
||||
from psycopg2 import sql, DatabaseError
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.osv import expression
|
||||
@@ -649,7 +649,11 @@ class ResPartner(models.Model):
|
||||
""").format(field=sql.Identifier(field))
|
||||
self.env.cr.execute(query, {'partner_ids': tuple(self.ids), 'n': n})
|
||||
self.invalidate_recordset([field])
|
||||
except (sql_errors.SerializationFailure, sql_errors.LockNotAvailable):
|
||||
except DatabaseError as e:
|
||||
# 55P03 LockNotAvailable
|
||||
# 40001 SerializationFailure
|
||||
if e.pgcode not in ('55P03', '40001'):
|
||||
raise e
|
||||
_logger.debug('Another transaction already locked partner rows. Cannot update partner ranks.')
|
||||
|
||||
@api.model
|
||||
|
||||
@@ -280,7 +280,7 @@ class TestSequenceMixin(TestSequenceMixinCommon):
|
||||
self.assertEqual(copies[5].name, 'XMISC/2019/00004')
|
||||
|
||||
# Can't have twice the same name
|
||||
with self.assertRaises(psycopg2.errors.IntegrityError), mute_logger('odoo.sql_db'), self.env.cr.savepoint():
|
||||
with self.assertRaises(psycopg2.DatabaseError), mute_logger('odoo.sql_db'), self.env.cr.savepoint():
|
||||
copies[0].name = 'XMISC/2019/00001'
|
||||
|
||||
# Lets remove the order by date
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from psycopg2 import errors
|
||||
from psycopg2 import DatabaseError
|
||||
|
||||
from odoo import models
|
||||
from odoo.tools import mute_logger
|
||||
@@ -36,7 +36,10 @@ class SequenceMixin(models.AbstractModel):
|
||||
self[self._sequence_field] = sequence
|
||||
self.flush_recordset([self._sequence_field])
|
||||
break
|
||||
except (errors.ExclusionViolation, errors.UniqueViolation):
|
||||
pass
|
||||
except DatabaseError as e:
|
||||
# 23P01 ExclusionViolation
|
||||
# 23505 UniqueViolation
|
||||
if e.pgcode not in ('23P01', '23505'):
|
||||
raise e
|
||||
self._compute_split_sequence()
|
||||
self.flush_recordset(['sequence_prefix', 'sequence_number'])
|
||||
|
||||
Reference in New Issue
Block a user