The same record can be passed multiple times in the list. So we must update all
of the new records with the translated value of the fields.
issue9866
review353091002
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
We must convert in ModelSQL.read the rule domains like the ModelSQL.write and
ModelSQL.delete convert their rule without the active test to have the same
result.
issue9819
review300951006
The value of a field, added to the view because it is a depends, may not be
correctly computed if it is missing its own depends.
issue9828
review292751003
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
This avoid to fill an instance with None value which will prevent it to be
saved with the default value for fields not explicitly assigned.
issue9726
review314481004
The shared cache is designed for loop usage so we must ensure that we fill the
LRU dictionary in the same order as the loop will request attributes.
So we must order the result of the read because the API does not return data in
the same order as the list of ids.
issue9518
review318041002
Some read value may be needed to instantiate other records if it is used in the
context.
Also the test to fill fields dictionary was always false as it tested the field
instance instead of the name.
issue9380
review298171002
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
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
When a relation domain is not valid, the domain used to set on the exception
must be evaluated with the origin record and not the invalid target record.
We take the first origin record as any of the passed record will generate the
same domain per design.
issue9383
review317531002
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
This ensures that internal changes that are reverted later in the same
transaction does not trigger an action.
Also we ensure that a record is triggered by the same trigger only
once per transaction.
issue8342
review280971002