Commit Graph
10 Commits
Author SHA1 Message Date
Cédric Krier 1618881692 Allow copying Python instances of Model
issue9869
review337071002
2020-12-05 11:58:41 +01:00
Cédric Krier 4a1f2c938b Use different hash for records without id
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
2020-06-17 00:30:53 +02:00
Cédric Krier b3f8d125f9 Use custom class to store record data
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
2020-06-13 09:48:03 +02:00
Cédric Krier 43dc061406 Test translation in fields_get
issue8744
review254491002
2019-10-25 23:06:19 +02:00
Cédric Krier df2092e6a0 Add test if field is readonly when no write access on it
issue8692
review276071002
2019-10-08 18:11:35 +02:00
Cédric Krier d9b4d71a11 Ensure context is correctly set when initializing Model
We make the assignation twice if any field has a context defined. This ensures
that the context will be evaluated with all initialized values when
the target records will be instantiated.

issue8586
review282041002
2019-09-09 22:41:54 +02:00
Cédric Krier 10e31bc311 Add Model.__names__ to retrieve model and field names
issue8159
review72431002
2019-03-15 12:27:44 +01:00
Cédric Krier f7c1de84c4 Support instantiate model with _parent_ of _parent_
This is a valid depends value for a field but the __init__ method lose the
second _parent_ once it has been instantiated a first time.
Setting _parent_ value must be done recursively.

issue6441
review40261002
2017-04-19 10:31:45 +02:00
Nicolas Évrard ccbb43cb1d Use activate instead of install for module activation
issue1456
review28931002
2016-10-20 12:51:56 +02:00
Nicolas Évrard 33224eeaa3 Check self.id against None before comparing to 0
issue5590
review25111002
2016-06-03 13:01:39 +02:00