Check price_decimal configuration
The price_decimal stored in ir.configuration is checked against the current configuration value. We do not allow to start serving a database for which the values are different as it may be due to a misconfiguration which can lead to data corruption. issue9324 review317381002
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
* Check price_decimal configuration
|
||||
|
||||
Version 5.6.0 - 2020-05-04
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Add round_price
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.pool import Pool
|
||||
from . import ir
|
||||
from . import uom
|
||||
from . import category
|
||||
from . import product
|
||||
@@ -14,6 +15,7 @@ __all__ = [price_digits, round_price, uom_conversion_digits]
|
||||
|
||||
def register():
|
||||
Pool.register(
|
||||
ir.Configuration,
|
||||
uom.UomCategory,
|
||||
uom.Uom,
|
||||
category.Category,
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from trytond.config import config
|
||||
from trytond.model import fields
|
||||
from trytond.pool import PoolMeta
|
||||
|
||||
price_decimal = config.getint('product', 'price_decimal', default=4)
|
||||
|
||||
|
||||
class Configuration(metaclass=PoolMeta):
|
||||
__name__ = 'ir.configuration'
|
||||
product_price_decimal = fields.Integer("Product Price Decimal")
|
||||
|
||||
@classmethod
|
||||
def default_product_price_decimal(cls):
|
||||
return price_decimal
|
||||
|
||||
def check(self):
|
||||
super().check()
|
||||
if self.product_price_decimal != price_decimal:
|
||||
raise ValueError(
|
||||
"The price_decimal %s in [product] configuration section "
|
||||
"is different from the value %s in 'ir.configuration'." % (
|
||||
self.product_price_decimal, price_decimal))
|
||||
+2
-2
@@ -18,12 +18,12 @@ from trytond.pyson import Eval
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
from trytond import backend
|
||||
from trytond.config import config
|
||||
from trytond.tools import lstrip_wildcard
|
||||
from trytond.tools.multivalue import migrate_property
|
||||
from trytond.modules.company.model import (
|
||||
CompanyMultiValueMixin, CompanyValueMixin)
|
||||
from .exceptions import InvalidIdentifierCode
|
||||
from .ir import price_decimal
|
||||
|
||||
|
||||
__all__ = ['price_digits', 'round_price', 'TemplateFunction']
|
||||
@@ -39,7 +39,7 @@ COST_PRICE_METHODS = [
|
||||
('average', 'Average'),
|
||||
]
|
||||
|
||||
price_digits = (16, config.getint('product', 'price_decimal', default=4))
|
||||
price_digits = (16, price_decimal)
|
||||
|
||||
|
||||
def round_price(value, rounding=None):
|
||||
|
||||
Reference in New Issue
Block a user