Commit Graph
806 Commits
Author SHA1 Message Date
Cédric Krier def268915a Add MultiSelection field
issue7851
review249911002
2019-09-20 11:32:56 +02:00
Sebastien Marie afd08618f0 Import zero value as non null value
issue8658
review282121004
2019-09-17 23:12:51 +02:00
Cédric Krier be8ffa6f0c Use new related API for _changed_values
The rev 596528aa0139 introduced a new API for related values. The rec_name set
by ModelView._changed_values must follow this new API to be used as cache by
the clients.

issue8637
review280081004
2019-09-11 23:49:34 +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 262f81979d Do not call _changed_values on non ModelView instance
When the target is not a ModelView, we can not compute the changed values.
2019-09-08 22:11:31 +02:00
Cédric Krier 4154b93a01 Prevent assign unknown attributes on Model
by adding __slots__ on PoolMeta

issue8567
review254091002
2019-09-07 23:45:08 +02:00
Cédric Krier d2bc591d18 Use stored value for One2Many changed without initial value
If the client does not send the value for the One2Many (it happens when it is
not modified), we must assume that it has the stored value unchanged. Otherwise
the current records are considered as to be added but with only their changed
values.

issue8605
review265901016
2019-09-07 23:34:20 +02:00
Cédric Krier 340cb2f630 Loop over all expression of the relation domain to valid
When the field is a relation, the field name can not be used to inverse the
domain because the record evaluated it the Relation. So we inverse the domain
with all the field in the domain until find one invalid. If we find any then we
raise a generic error.

issue8597
review270141002
2019-08-28 22:31:22 +02:00
Cédric Krier 54e2d31843 Ensure to convert to string LazyString of selection 2019-08-25 20:51:31 +02:00
Cédric Krier 589e27cc87 Add lazy_gettext
issue8560
review283901002
2019-08-25 13:00:28 +02:00
Cédric Krier 1f2256d545 Call change_with selection method with an instance
issue8293
2019-08-07 17:12:33 +02:00
Cédric Krier ca8e1a088d Use non grouped domain when grouped record > IN_MAX
The break when grouped records are greater than IN_MAX, should break all the
loops in order to prevent use of the grouped domain.

issue8474
review257701002
2019-07-13 00:08:30 +02:00
Cédric Krier 23dabd10b2 Always return 'id' key in the read result
The 'id' should not be removed from the result if a field use it as an extra
(e.g. for context).

issue8470
review263841002
2019-07-08 21:30:43 +02:00
Cédric Krier 51c99aaa12 Allow SQL expression as value of fields
issue6460
review279431002
2019-06-26 21:56:16 +02:00
Cédric Krier 604046d271 Allow customizing Dict keys order
We add a sequence attribute to the key definition and use it for sorting.
This attribute is filled by the field sequence if it exists (using
sequence_ordered) or by the key name.

issue8373
review275431002
2019-06-16 19:24:15 +02:00
Cédric Krier 2d4f6766b1 Improve domain validation error from server
We add to DomainValidationError the invalid domain and the field definition so
the client can format and append it to the description of the error.

issue8288
review255351002
2019-06-16 19:04:55 +02:00
Cédric Krier 2d0002d8e9 Allow to search on related field in search box
The server adds to the definition of the fields, the definition of relation
fields up to specific deep level.
The clients use this relation fields definition to extend the domain parser
with those fields using a dot notation. But those "dotted fields" are not
shown in the search filter to not bloat the popup as it is dedicated to
learning.
In addition, Dict fields are also filled with relation fields coming from the
keys defined in the schema model. As the size can very large, it is possible
to deactivate this feature from the configuration.

issue8293
review259391005
2019-06-16 15:44:14 +02:00
Cédric Krier 0490726b24 Use same definition format for dict key than field
This will allow to use the dict keys as relational fields and allow the client
to use them for domain parsing.

issue8295
review273311002
2019-06-03 15:37:49 +02:00
Cédric Krier 5e6638c072 Remove useless callables dictionary 2019-05-28 10:03:40 +02:00
Cédric Krier da5b0daf68 Fill ModelView.__change_buttons in __post_setup__
Since the refactoring from a57cd35eec06, we loop only on fields in __setup__
so button_change are not processed. And __change_buttons is not filled.
We fill it in the __post_setup__ when the _buttons dict is filled when values.

issue8329
2019-05-06 11:34:11 +02:00
Cédric Krier 5c2782626b Use freezed context in order function
The hash method can no hash tuple containing unhashable element like a list.

issue8265
review265341002
2019-04-25 15:24:01 +02:00
Cédric Krier 5b355f37d0 Check access on target only if related field has a target
The Dict field can use the relate syntax to access keys but it does not have
any target model to check.

issue8298
review251291002
2019-04-24 23:46:59 +02:00
Cédric Krier 12376f30e5 Order by target name and context hash
None can not be compared to a class so we always use strings to order before
grouping. Also dictionary can not be compared neither.

issue8265
review253351002
2019-04-24 23:40:46 +02:00
Cédric Krier e39129ee3d Add sort and translate options to Reference field
As Reference field uses the SelectionMixin, they could have the same options.

issue8278
review253331002
2019-04-15 16:11:00 +02:00
Cédric Krier eb3882e113 Verify keys of fields and buttons states
issue8262
review279221003
2019-04-12 13:08:01 +02:00
Cédric Krier 722db3252a Remove id to on_change calls that are cached
issue8234
review275131002
2019-04-08 10:14:39 +02:00
Cédric Krier 0fbf5cecd2 Add cache management on RPC
issue8233
review257231002
2019-04-08 10:10:40 +02:00
Cédric Krier e9ee50982b Allow to update records when importing data
issue652
review273131003
2019-04-04 20:00:25 +02:00
Cédric Krier 3e9784c8d7 Set context on record instantiated in Field.__set__ and read related
Field may have a context defined so when it instantiate a relational record,
the field should set this context like when the record is read from the
database in ModelStorage.__getattr__.
And when such field is read as related field, the context should also be set.

issue8225
review287171002
2019-04-04 19:06:09 +02:00
Cédric Krier 34316ae615 Check read access on field in search order
issue8189
review279061002
2019-04-02 19:01:33 +02:00
Cédric Krier 792ebac88b Use locale format for data export and import
issue8196
review255151002
2019-03-28 19:22:49 +01:00
Cédric Krier bb0242faf8 Raise NotImplementedError when setting Function field without setter
issue7985
review265101002
2019-03-27 00:28:58 +01:00
Cédric Krier 44011b1435 Take the field type from the right definition
The field type should be taken from the current fields definition and not from
the class.

issue8212
review273131002
2019-03-22 18:25:52 +01:00
Cédric Krier 9e10625111 Set the requested view_id in result of fields_view_get
The client uses the id of the view received by fields_view_get to construct
the URL so it must be the one requested to ensure to have the same view.

issue7988
review275081002
2019-03-22 18:18:36 +01:00
Cédric Krier 6d16b629f2 Add CSV exports to print toolbar
issue8130
review54571002
2019-03-22 17:21:21 +01:00
Cédric Krier 2752490423 Improve note button
* Add resources method to ModelStorage
* Support badge on icon
* Display unread and total of notes
* Add two extra colors for icon

issue8122
review70561002
2019-03-22 12:16:36 +01:00
Cédric Krier 07d79c7861 Validate selection format in Dict schema
issue7947
review257131002
2019-03-22 11:46:52 +01:00
Cédric Krier e2318257bb Allow to extend Field string and help
Those attributes are stored as StringPartitioned and each part creates its own
translation record. The translated strings are constructed by concatenation of
each translated part.

issue8040
review46731002
2019-03-15 13:01:11 +01: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 986da58a48 Use model name instead of class to translate field definition
The typo was introduced in changeset 1094d993d89c.
2019-03-09 15:23:11 +01:00
Cédric Krier c255cfe785 Display ids and rule names on access error
issue8093
review60551002
2019-03-03 23:11:17 +01:00
Cédric Krier f6c3fa2d68 Fill add_remove definition only if it is not None
issue8037
2019-02-18 17:03:13 +01:00
Cédric Krier 8a9d5297c6 Fill size definition only if it is not None
The clients expect to have an integer for the size or no key.

issue8037
2019-02-13 13:57:33 +01:00
Cédric Krier 9ea41ef4c8 Wrong class in super call
Introduced in changeset 5075df5e9872

issue8084
2019-02-13 12:30:05 +01:00
Cédric Krier 67cdf02720 Fill relation_field definition only with real field name
proteus expects the definition to have a field name for relation_field key or
no key at all. So parent_name is always a string.

issue8037
2019-02-13 11:38:16 +01:00
Cédric Krier 98bb26a386 Move field definition from Model to Field
issue8037
review74441002
2019-02-13 10:37:40 +01:00
Cédric Krier 951dbdfa82 Make DateTime field inherit from Timestamp field
The DateTime is a particular case of Timestamp.
This allows to share the sql_cast of DateTime with Timestamp.

issue8084
review64561002
2019-02-13 10:17:27 +01:00
Cédric Krier b315e9a6d9 Do not update db_id when deleting XML record without noupdate
If the record has been removed from the XML file, the db_id field will be
required. So we must not update it and let convert delete the data in
post_import.

issue8051
review70521002
2019-02-03 20:33:01 +01:00
Cédric Krier b34cac78d5 Allow to lock records for update
issue8012
review45901002
2019-01-30 09:45:59 +01:00
Cédric Krier 889b1cc9f8 Allow to search and order on Dict key value
issue7905
review62391002
2019-01-18 11:32:47 +01:00