Purpose of this commit is to give description more "business oriented" because those descriptions appears in Odoo Studio which is supposed to be used by end users, not only by developers. Related Task ID : 37311
70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
# -*- encoding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models, tools
|
|
|
|
class DecimalPrecision(models.Model):
|
|
_name = 'decimal.precision'
|
|
_description = 'Decimal Precision'
|
|
|
|
name = fields.Char('Usage', index=True, required=True)
|
|
digits = fields.Integer('Digits', required=True, default=2)
|
|
|
|
_sql_constraints = [
|
|
('name_uniq', 'unique (name)', """Only one value can be defined for each given usage!"""),
|
|
]
|
|
|
|
@api.model
|
|
@tools.ormcache('application')
|
|
def precision_get(self, application):
|
|
self.env.cr.execute('select digits from decimal_precision where name=%s', (application,))
|
|
res = self.env.cr.fetchone()
|
|
return res[0] if res else 2
|
|
|
|
@api.model_cr
|
|
def clear_cache(self):
|
|
""" Deprecated, use `clear_caches` instead. """
|
|
self.clear_caches()
|
|
|
|
@api.model_create_multi
|
|
def create(self, vals_list):
|
|
res = super(DecimalPrecision, self).create(vals_list)
|
|
self.clear_caches()
|
|
return res
|
|
|
|
@api.multi
|
|
def write(self, data):
|
|
res = super(DecimalPrecision, self).write(data)
|
|
self.clear_caches()
|
|
return res
|
|
|
|
@api.multi
|
|
def unlink(self):
|
|
res = super(DecimalPrecision, self).unlink()
|
|
self.clear_caches()
|
|
return res
|
|
|
|
|
|
class DecimalPrecisionFloat(models.AbstractModel):
|
|
""" Override qweb.field.float to add a `decimal_precision` domain option
|
|
and use that instead of the column's own value if it is specified
|
|
"""
|
|
_inherit = 'ir.qweb.field.float'
|
|
|
|
|
|
@api.model
|
|
def precision(self, field, options=None):
|
|
dp = options and options.get('decimal_precision')
|
|
if dp:
|
|
return self.env['decimal.precision'].precision_get(dp)
|
|
|
|
return super(DecimalPrecisionFloat, self).precision(field, options=options)
|
|
|
|
class DecimalPrecisionTestModel(models.Model):
|
|
_name = 'decimal.precision.test'
|
|
_description = 'Decimal Precision Test'
|
|
|
|
float = fields.Float()
|
|
float_2 = fields.Float(digits=(16, 2))
|
|
float_4 = fields.Float(digits=(16, 4))
|