The rule may depend on indirect field written latter so it must be checked
after the storage of those fields.
On write, the rule must be checked before the modification but also after to
ensure users do not generate records that they can not modify after.
issue7403
review53301002
Their values should be already validated by the underlying storage and also
the domain validation requires to have a searcher.
issue7507
review48471002
There is no need to create the graph step by step with only dependencies
already registered as far as the depth computation is propagated to all the
children.
Instead of searching level by level the nodes to iterate, it is faster to use
the sort of Python.
create_graph does not need to return its internal states but only the graph.
The ir.module activate and update method does not need to check for missing
dependencies because it is already checked at startup.
issue7466
review45211002
If the second argument is a PYSON expression, the Python 'in' test calls
__eq__ on it which return a PYSON Equal object between the expression and the
operator. If the PYSON expression does not have the string type, an
incompatibility exception is raised.
So this operation must be prevented if the argument is not a string.
issue7491
review45251003
We can not rely on the deepcopy of the field because the Mixin maybe added
after the class that define the field. In this case we modify the reference
field for the deepcopy.
issue7434
review47421002
This was a implicit behaviour before the changeset 6fefd00369c1.
As a lot of code rely on this behaviour, we make it explicit by adding a test
case.
issue7405
review36251002
The pattern can be passed from one field to another and so it may contains
extra keys that does not exist in the Value model as field.
issue6672
review47291003
As write and delete can be called with any ids for records and the super calls
are always on the real record, the cache is only cleared for the real record.
So ModelSingleton must ensure to clear the cache for any record ids.
issue7205
review44731002
The exception message could contain non-ASCII errors for which standard
__str__ may fail, but as the database should always be in UTF-8 we may except
that unicode will not fail.
issue6128
review43971002
This allows fast return when the checked model has no record in ir.model.data
which is the most common case. This allow to prevent to search for non
existing records.
issue7119
review37991002
The call to Translation.delete_ids has a cost as it does search queries. So it
is better to not call it if we already know that there is nothing to delete.
issue7118
review37981003
In order to support the 0 digits case rstrip was introduced in changeset
d3fec5da0dbdbut it breaks the case where the number of digits is high
as python uses manting representation when converting the float value
to string. This causes the last trailing zero is also removed which
breaks the validation.
issue7091
review37981002
Use a different strategy if we are close to one domain per record.
It will use combined multiple domain at once instead of doing one query for
almost each record validated.
issue6983
review39021002
The _save_values reset the target link of one2many because it will be set by
the setter. But when the one2many is a Function field, it may not have a
target.
issue6872
review42761002
The changeset b16a085824ce, which implements the filter, did not update the
search_domain of the fields to also apply the filter on the searched result.
issue6871
review36721003
The default value of copy is expected to be the same format as for the default
methods. So the value for xxx2Many fields must be converted.
issue6818
review37751002
The order on which the operations are applied can trigger constraints.
So it is safer to first delete then write and finally create.
issue6790
review43511002
An option is added on RPC definition to enforce uniqueness of records
instantiated. The key methods ModeView.button and Workflow.transition have an
assert to detect error in development code.
issue6184
review36411002