changeset 1d8b022f4010 in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset&node=1d8b022f4010
description:
Raise a UserError when SQL sequence operations fail
issue10235
review332771002
diffstat:
trytond/ir/message.xml | 3 +++
trytond/ir/sequence.py | 29 ++++++++++++++++++++++++-----
2 files changed, 27 insertions(+), 5 deletions(-)
diffs (66 lines):
diff -r de104ed0f6a8 -r 1d8b022f4010 trytond/ir/message.xml
--- a/trytond/ir/message.xml Sat May 15 17:53:23 2021 +0200
+++ b/trytond/ir/message.xml Sun May 16 15:33:53 2021 +0200
@@ -267,6 +267,9 @@
<record model="ir.message" id="msg_sequence_change_sequence_type">
<field name="text">You cannot change the sequence type of a
sequence instead create a new sequence.</field>
</record>
+ <record model="ir.message"
id="msg_sequence_invalid_number_increment_next">
+ <field name="text">Invalid "Increment Number" (%s) or "Next
Number" (%s) with exception "%(exception)s".</field>
+ </record>
<record model="ir.message" id="msg_language_invalid_grouping">
<field name="text">Invalid grouping "%(grouping)s" for language
"%(language)s".</field>
diff -r de104ed0f6a8 -r 1d8b022f4010 trytond/ir/sequence.py
--- a/trytond/ir/sequence.py Sat May 15 17:53:23 2021 +0200
+++ b/trytond/ir/sequence.py Sun May 16 15:33:53 2021 +0200
@@ -29,6 +29,10 @@
pass
+class SQLSequenceError(ValidationError):
+ pass
+
+
class SequenceType(ModelSQL, ModelView):
"Sequence type"
__name__ = 'ir.sequence.type'
@@ -265,9 +269,16 @@
return
if number_next is None:
number_next = self.number_next
- if sql_sequence:
- transaction.database.sequence_create(transaction.connection,
- self._sql_sequence_name, self.number_increment, number_next)
+ try:
+ transaction.database.sequence_create(
+ transaction.connection, self._sql_sequence_name,
+ self.number_increment, number_next)
+ except Exception as exception:
+ raise SQLSequenceError(
+ gettext('ir.msg_sequence_invalid_number_increment_next',
+ number_increment=self.number_increment,
+ number_next=number_next,
+ exception=exception)) from exception
def update_sql_sequence(self, number_next=None):
'Update the SQL sequence'
@@ -284,8 +295,16 @@
return
if number_next is None:
number_next = self.number_next
- transaction.database.sequence_update(transaction.connection,
- self._sql_sequence_name, self.number_increment, number_next)
+ try:
+ transaction.database.sequence_update(
+ transaction.connection, self._sql_sequence_name,
+ self.number_increment, number_next)
+ except Exception as exception:
+ raise SQLSequenceError(
+ gettext('ir.msg_sequence_invalid_number_increment_next',
+ number_increment=self.number_increment,
+ number_next=number_next,
+ exception=exception)) from exception
def delete_sql_sequence(self):
'Delete the SQL sequence'