changeset ee6809e365d1 in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset&node=ee6809e365d1
description:
        Add format method to DictSchemaMixin

        issue10758
        review354001002
diffstat:

 CHANGELOG                   |   1 +
 doc/ref/models/models.rst   |   4 ++++
 trytond/ir/message.xml      |   6 ++++++
 trytond/model/dictschema.py |  26 ++++++++++++++++++++++++++
 4 files changed, 37 insertions(+), 0 deletions(-)

diffs (71 lines):

diff -r 0e8c33ac7eeb -r ee6809e365d1 CHANGELOG
--- a/CHANGELOG Fri Oct 08 19:26:46 2021 +0200
+++ b/CHANGELOG Sun Oct 10 22:08:39 2021 +0200
@@ -1,3 +1,4 @@
+* Add format method to DictSchemaMixin
 * Allow modify record name on the reports
 * Add methods to format number and symbol on Lang
 * Add format number with symbol on Report
diff -r 0e8c33ac7eeb -r ee6809e365d1 doc/ref/models/models.rst
--- a/doc/ref/models/models.rst Fri Oct 08 19:26:46 2021 +0200
+++ b/doc/ref/models/models.rst Sun Oct 10 22:08:39 2021 +0200
@@ -737,6 +737,10 @@
 
     Getter for the :attr:`selection_json`.
 
+.. method:: DictSchemaMixin.format(value[, lang])
+
+   Format the value using the key definition and the language.
+
 ==========
 MatchMixin
 ==========
diff -r 0e8c33ac7eeb -r ee6809e365d1 trytond/ir/message.xml
--- a/trytond/ir/message.xml    Fri Oct 08 19:26:46 2021 +0200
+++ b/trytond/ir/message.xml    Sun Oct 10 22:08:39 2021 +0200
@@ -124,6 +124,12 @@
         <record model="ir.message" id="msg_dict_schema_help_selection_json">
             <field name="text">Help Selection JSON</field>
         </record>
+        <record model="ir.message" id="msg_dict_yes">
+            <field name="text">Yes</field>
+        </record>
+        <record model="ir.message" id="msg_dict_no">
+            <field name="text">No</field>
+        </record>
         <record model="ir.message" id="msg_sequence">
             <field name="text">Sequence</field>
         </record>
diff -r 0e8c33ac7eeb -r ee6809e365d1 trytond/model/dictschema.py
--- a/trytond/model/dictschema.py       Fri Oct 08 19:26:46 2021 +0200
+++ b/trytond/model/dictschema.py       Sun Oct 10 22:08:39 2021 +0200
@@ -211,3 +211,29 @@
     def delete(cls, records):
         super().delete(records)
         cls._relation_fields_cache.clear()
+
+    def format(self, value, lang=None):
+        pool = Pool()
+        Lang = pool.get('ir.lang')
+        if lang is None:
+            lang = Lang.get()
+        if value is None:
+            return ''
+        if self.type_ == 'boolean':
+            if value:
+                return gettext('ir.msg_dict_yes')
+            else:
+                return gettext('ir.msg_dict_no')
+        elif self.type_ == 'integer':
+            return lang.format('%i', value)
+        elif self.type_ in {'float', 'numeric'}:
+            return lang.format('%.*f', (self.digits, value))
+        elif self.type_ in {'date', 'datetime'}:
+            return lang.strftime(value)
+        elif self.type_ in {'selection', 'multiselection'}:
+            values = dict(json.loads(self.selection_json))
+            if self.type_ == 'selection':
+                return values.get(value, '')
+            else:
+                return "; ".join(values.get(v, '') for v in value)
+        return value

Reply via email to