details:   https://code.tryton.org/tryton/commit/7e78fce7e93f
branch:    default
user:      Cédric Krier <[email protected]>
date:      Tue Oct 21 12:18:02 2025 +0200
description:
        Fallback to id as record name when _rec_name value is empty

        It happens that the _rec_name is not required so a fallback value is 
needed to
        ensure to always have a name for the record.

        Closes #14275
diffstat:

 modules/sale_gift_card/sale.py        |  7 -------
 modules/sale_point/sale.py            |  6 ------
 trytond/trytond/model/modelstorage.py |  9 +++++----
 3 files changed, 5 insertions(+), 17 deletions(-)

diffs (52 lines):

diff -r e0ec1da9b057 -r 7e78fce7e93f modules/sale_gift_card/sale.py
--- a/modules/sale_gift_card/sale.py    Tue Oct 21 13:13:23 2025 +0200
+++ b/modules/sale_gift_card/sale.py    Tue Oct 21 12:18:02 2025 +0200
@@ -154,13 +154,6 @@
         return [(None, '')] + [
             (m, Model.get_name(m)) for m in cls._get_spent_on()]
 
-    def get_rec_name(self, name):
-        if not self.number:
-            name = '(%d)' % self.id
-        else:
-            name = self.number
-        return name
-
     @property
     def _email(self):
         pool = Pool()
diff -r e0ec1da9b057 -r 7e78fce7e93f modules/sale_point/sale.py
--- a/modules/sale_point/sale.py        Tue Oct 21 13:13:23 2025 +0200
+++ b/modules/sale_point/sale.py        Tue Oct 21 12:18:02 2025 +0200
@@ -261,12 +261,6 @@
         return (self.on_change_with_total()
             - self.on_change_with_amount_paid())
 
-    def get_rec_name(self, name):
-        if self.number:
-            return self.number
-        else:
-            return '(%s)' % self.id
-
     @classmethod
     def copy(cls, sales, default=None):
         if default is None:
diff -r e0ec1da9b057 -r 7e78fce7e93f trytond/trytond/model/modelstorage.py
--- a/trytond/trytond/model/modelstorage.py     Tue Oct 21 13:13:23 2025 +0200
+++ b/trytond/trytond/model/modelstorage.py     Tue Oct 21 12:18:02 2025 +0200
@@ -807,10 +807,11 @@
         Return the rec_name of the instance.
         It is used by the Function field rec_name.
         '''
-        rec_name = self._rec_name
-        if rec_name not in self._fields:
-            rec_name = 'id'
-        return str(getattr(self, rec_name))
+        if self._rec_name in self._fields:
+            name = getattr(self, self._rec_name)
+        else:
+            name = None
+        return str(name or f'({self.id})')
 
     @classmethod
     def search_rec_name(cls, name, clause):

Reply via email to