details: https://code.tryton.org/tryton/commit/378a156b6625
branch: default
user: Cédric Krier <[email protected]>
date: Wed Feb 25 09:08:24 2026 +0100
description:
Define Function field with column_ as searchable and sortable
diffstat:
trytond/trytond/model/fields/function.py | 8 ++++++--
trytond/trytond/tests/test_field_function.py | 2 ++
2 files changed, 8 insertions(+), 2 deletions(-)
diffs (39 lines):
diff -r 80db193bd3ac -r 378a156b6625 trytond/trytond/model/fields/function.py
--- a/trytond/trytond/model/fields/function.py Tue Feb 24 11:35:00 2026 +0100
+++ b/trytond/trytond/model/fields/function.py Wed Feb 25 09:08:24 2026 +0100
@@ -240,10 +240,14 @@
def searchable(self, model):
return super().searchable(model) and (
- bool(self.searcher) or hasattr(model, f'domain_{self.name}'))
+ bool(self.searcher)
+ or hasattr(model, f'domain_{self.name}')
+ or hasattr(model, f'column_{self.name}'))
def sortable(self, model):
- return super().sortable(model) and hasattr(model, f'order_{self.name}')
+ return super().sortable(model) and (
+ hasattr(model, f'order_{self.name}')
+ or hasattr(model, f'column_{self.name}'))
def getter_multiple(self, method):
"Returns True if getter function accepts multiple fields"
diff -r 80db193bd3ac -r 378a156b6625
trytond/trytond/tests/test_field_function.py
--- a/trytond/trytond/tests/test_field_function.py Tue Feb 24 11:35:00
2026 +0100
+++ b/trytond/trytond/tests/test_field_function.py Wed Feb 25 09:08:24
2026 +0100
@@ -158,6 +158,7 @@
result = Model.search([('value_inc', '=', 43)])
self.assertEqual(result, [record])
+ self.assertTrue(Model.value_inc.searchable(Model))
@with_transaction()
def test_no_getter_order(self):
@@ -174,6 +175,7 @@
self.assertEqual(asc, sorted(asc))
self.assertEqual(desc, sorted(asc, reverse=True))
+ self.assertTrue(Model.value_inc.sortable(Model))
@with_transaction()
def test_no_getter_relation(self):