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