A function field summary is added which takes the first line of description
field. This is useful to identify line without product (only with description)
in the list.
issue9695
review292431002
There is no need to enforce access right on instances because only internal
code can use them and the design is to only check on the external calls.
issue7765
review322581002
They can not be displayed by all clients (nor OS).
But also they can be trimmed automatically by web input which breaks comparison
against changes.
issue9248
review312681002
Each value of the 'in' operators must be processed as a '=' clause.
The None values must be supported just in case it set in the 'in' values
because the mixin does not allow empty name.
issue9354
review304601002
The client may not send the values for the xxx2Many if they have not been
loaded. So in order to provide proper changes to apply once the values are
loaded we must base those changes on the current data stored.
issue9719
review308391002
The translations tests change the default language on setup and commit the
change. So we must restore the initial state of the database at the end of the
test case.
issue9702
review312521002
The values may contain None which is not orderable so we insert a third
argument before the value to prevent to compare None value against others.
issue9381
review303881005
We implement the same behavior as SQL with NULL which always returns NULL
except for IS operator. So the evaluation has the same result as the search.
issue8615
review290281002
In order to have store them efficiently in dictionary, we generate a different
hash for each unsaved record by using the instance id.
issue9240
review295421002
The test relies on the cache being cleared before setting a value from the old
transaction. So we must wait for the synchronisation to happen when channel is
used.
issue9413
review327461011
By using a class with slots instead of standard dict, we can reduce a lot the
memory usage to store the record data in the caches and values.
Also we can rely on the data in the cache to exist only for real field which
can be used to create a fast path in ModelStorage.__getattr__.
As now storing data in the cache has no extra cost, we can store data from the
transactional cache in the local. This allow also to have a shorter path in
ModelStorage.__getattr__.
For more memory efficiency, we remove the record from the cache instead of
clearing them. It was better to clear a dict but a record is less expensive to
re-instantiate than clearing.
issue9369
issue9225
review297861002
If the record is unsaved and the getter is based on on_change_with, we can call
the getter to compute the value.
This value must not be stored in the cache as it may change prior to saving.
issue4193
issue9263
review317291002