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'

Reply via email to