46 lines
1.9 KiB
Python
46 lines
1.9 KiB
Python
import pytz
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class Base(models.AbstractModel):
|
|
"""The base model, which is implicitly inherited by all models."""
|
|
|
|
_inherit = "base"
|
|
|
|
carbone_default_currency_id = fields.Many2one(
|
|
"res.currency", string="Default currency used in Carbone Report", compute="_compute_carbone_default_currency_id"
|
|
)
|
|
|
|
def _compute_carbone_default_currency_id(self):
|
|
for rec in self:
|
|
currency = self.env.user.company_id.currency_id
|
|
if "currency_id" in rec._fields.keys():
|
|
currency = rec.currency_id
|
|
rec.carbone_default_currency_id = currency
|
|
|
|
@api.model
|
|
def _jsonify_value(self, field, value):
|
|
"""Overloading the OCA jsonifier library function :
|
|
- Datetime fields are displayed directly with the time zone set in context.
|
|
-The value of a Selection field's label is displayed, rather than the key stored in the database."""
|
|
if value is False and field.type != "boolean":
|
|
value = None
|
|
elif field.type == "date":
|
|
value = fields.Date.to_date(value).isoformat()
|
|
elif field.type == "datetime":
|
|
# Ensures value is a datetime
|
|
value = fields.Datetime.to_datetime(value)
|
|
expected_tz = self.env.context.get("tz") or self.env.user.tz
|
|
tz_pytz = pytz.timezone(expected_tz) if expected_tz else pytz.utc
|
|
value = pytz.utc.localize(value).astimezone(tz_pytz)
|
|
value = value.isoformat()
|
|
elif field.type in ("many2one", "reference"):
|
|
value = value.display_name if value else None
|
|
elif field.type in ("one2many", "many2many"):
|
|
value = [v.display_name for v in value]
|
|
elif field.type == "selection":
|
|
selection_list = field._description_selection(self.env)
|
|
value = dict(selection_list).get(value)
|
|
return value
|