summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/reference/orm.rst21
-rw-r--r--odoo/fields.py67
2 files changed, 69 insertions, 19 deletions
diff --git a/doc/reference/orm.rst b/doc/reference/orm.rst
index 75e073d2b80..ddc5918553b 100644
--- a/doc/reference/orm.rst
+++ b/doc/reference/orm.rst
@@ -144,22 +144,27 @@ Advanced Fields
Date(time) Fields
'''''''''''''''''
-Dates and Datetimes are very important fields in any kind of business
-application, they are heavily used in many popular Odoo applications such as
-logistics or accounting and their misuse can create invisible yet painful
-bugs, this excerpt aims to provide Odoo developers with the knowledge required
+:class:`Dates <odoo.fields.Date>` and :class:`Datetimes <odoo.fields.Datetime>`
+are very important fields in any kind of business application.
+Their misuse can create invisible yet painful bugs, this section
+aims to provide Odoo developers with the knowledge required
to avoid misusing these fields.
When assigning a value to a Date/Datetime field, the following options are valid:
* A `date` or `datetime` object.
-* A string in the proper server format *(YYYY-MM-DD)* for Date fields,
- *(YYYY-MM-DD HH:MM:SS)* for Datetime fields.
+* A string in the proper server format:
+
+ * ``YYYY-MM-DD`` for :class:`~odoo.fields.Date` fields,
+ * ``YYYY-MM-DD HH:MM:SS`` for :class:`~odoo.fields.Datetime` fields.
+
* `False` or `None`.
The Date and Datetime fields class have helper methods to attempt conversion
-into a compatible type: :func:`~odoo.fields.Date.to_date` will convert to a `datetime.date`
-object while :func:`~odoo.fields.Datetime.to_datetime` will convert to a `datetime.datetime`.
+into a compatible type:
+
+* :func:`~odoo.fields.Date.to_date` will convert to a :class:`datetime.date`
+* :func:`~odoo.fields.Datetime.to_datetime` will convert to a :class:`datetime.datetime`.
.. admonition:: Example
diff --git a/odoo/fields.py b/odoo/fields.py
index fc1a225ef34..9919bbc0f48 100644
--- a/odoo/fields.py
+++ b/odoo/fields.py
@@ -1098,6 +1098,7 @@ class Field(MetaField('DummyField', (object,), {})):
class Boolean(Field):
+ """ Encapsulates a :class:`bool`. """
type = 'boolean'
column_type = ('bool', 'bool')
@@ -1112,6 +1113,7 @@ class Boolean(Field):
class Integer(Field):
+ """ Encapsulates an :class:`int`. """
type = 'integer'
column_type = ('int4', 'int4')
@@ -1149,7 +1151,9 @@ class Integer(Field):
class Float(Field):
- """The precision digits are given by the (optional) digits attribute.
+ """ Encapsulates a :class:`float`.
+
+ The precision digits are given by the (optional) ``digits`` attribute.
:param digits: a pair (total, decimal) or a string referencing a
:class:`~odoo.addons.base.models.decimal_precision.DecimalPrecision` record name.
@@ -1247,9 +1251,13 @@ class Float(Field):
class Monetary(Field):
- """ The decimal precision and currency symbol are taken from the attribute
+ """ Encapsulates a :class:`float` expressed in a given
+ :class:`res_currency<odoo.addons.base.models.res_currency.Currency>`.
+
+ The decimal precision and currency symbol are taken from the ``currency_field`` attribute.
- :param str currency_field: name of the field holding the currency
+ :param str currency_field: name of the :class:`Many2one` field
+ holding the :class:`res_currency <odoo.addons.base.models.res_currency.Currency>`
this monetary field is expressed in (default: `\'currency_id\'`)
"""
type = 'monetary'
@@ -1528,7 +1536,7 @@ class Char(_String):
class Text(_String):
- """ Very similar to :class:`~.Char` but used for longer contents, does not
+ """ Very similar to :class:`Char` but used for longer contents, does not
have a size and usually displayed as a multiline text box.
:param translate: enable the translation of the field's values; use
@@ -1549,6 +1557,18 @@ class Text(_String):
class Html(_String):
+ """ Encapsulates an html code content.
+
+ :param bool sanitize: whether value must be sanitized (default: ``True``)
+ :param bool sanitize_tags: whether to sanitize tags
+ (only a white list of attributes is accepted, default: ``True``)
+ :param bool sanitize_attributes: whether to sanitize attributes
+ (only a white list of attributes is accepted, default: ``True``)
+ :param bool sanitize_style: whether to sanitize style attributes (default: ``True``)
+ :param bool strip_style: whether to strip style attributes
+ (removed and therefore not sanitized, default: ``False``)
+ :param bool strip_classes: whether to strip classes attributes (default: ``False``)
+ """
type = 'html'
column_type = ('text', 'text')
@@ -1612,9 +1632,7 @@ class Html(_String):
class Date(Field):
- """ This field type encapsulates a python date object.
- :type date:
- """
+ """ Encapsulates a python :class:`date <datetime.date>` object. """
type = 'date'
column_type = ('date', 'date')
column_cast_from = ('timestamp',)
@@ -1713,9 +1731,7 @@ class Date(Field):
class Datetime(Field):
- """ This field type encapsulates a python datetime object.
- :type datetime:
- """
+ """ Encapsulates a python :class:`datetime <datetime.datetime>` object. """
type = 'datetime'
column_type = ('timestamp', 'timestamp')
column_cast_from = ('date',)
@@ -1824,6 +1840,11 @@ _BINARY = memoryview
class Binary(Field):
+ """Encapsulates a binary content (e.g. a file).
+
+ :param bool attachment: whether the field should be stored as `ir_attachment`
+ or in a column of the model's table (default: ``True``).
+ """
type = 'binary'
prefetch = False # not prefetched by default
@@ -2007,6 +2028,14 @@ class Binary(Field):
class Image(Binary):
+ """Encapsulates an image, extending :class:`Binary`.
+
+ :param int max_width: the maximum width of the image
+ :param int max_height: the maximum height of the image
+ :param bool verify_resolution: whether the image resolution should be verified
+ to ensure it doesn't go over the maximum image resolution (default: ``True``).
+ See :class:`odoo.tools.image.ImageProcess` for maximum image resolution (default: ``45e6``).
+ """
max_width = 0
max_height = 0
verify_resolution = True
@@ -2045,7 +2074,8 @@ class Image(Binary):
class Selection(Field):
- """
+ """ Encapsulates an exclusive choice between different values.
+
:param selection: specifies the possible values for this field.
It is given as either a list of pairs ``(value, label)``, or a model
method, or a method name.
@@ -2249,6 +2279,11 @@ class Selection(Field):
class Reference(Selection):
+ """ Pseudo-relational field (no FK in database).
+
+ The field value is stored as a :class:`string <str>` following the pattern
+ ``"res_model.res_id"`` in database.
+ """
type = 'reference'
@property
@@ -2591,6 +2626,16 @@ class Many2one(_Relational):
class Many2oneReference(Integer):
+ """ Pseudo-relational field (no FK in database).
+
+ The field value is stored as an :class:`integer <int>` id in database.
+
+ Contrary to :class:`Reference` fields, the model has to be specified
+ in a :class:`Char` field, whose name has to be specified in the
+ `model_field` attribute for the current :class:`Many2oneReference` field.
+
+ :param str model_field: name of the :class:`Char` where the model name is stored.
+ """
type = 'many2one_reference'
model_field = None