diff --git a/CHANGELOG b/CHANGELOG index dc87321d25..ba282aacc1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Add support for domain_ method * Refactor configuration file and command line * Use the context of the relation field for instanciation * Use a configuration field for logging diff --git a/doc/ref/models/fields.rst b/doc/ref/models/fields.rst index a7af4894e0..82b4b1e292 100644 --- a/doc/ref/models/fields.rst +++ b/doc/ref/models/fields.rst @@ -188,6 +188,18 @@ Default value See :ref:`default value ` +Searching +========= + +A class method could be defined for each field which must return a SQL +expression for the given domain instead of the default one. +The method signature is:: + + domain_(domain, tables) + +Where ``domain`` is the simple :ref:`domain ` clause and +``tables`` is a nested dictionary, see :meth:`~Field.convert_domain`. + Ordering ======== diff --git a/trytond/model/fields/field.py b/trytond/model/fields/field.py index 8f295d667b..3eb95f22f0 100644 --- a/trytond/model/fields/field.py +++ b/trytond/model/fields/field.py @@ -251,6 +251,9 @@ class Field(object): table, _ = tables[None] name, operator, value = domain assert name == self.name + method = getattr(Model, 'domain_%s' % name, None) + if method: + return method(domain, tables) Operator = SQL_OPERATORS[operator] column = self.sql_column(table) expression = Operator(column, self._domain_value(operator, value))