Refeds entity category handling improvements #897
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
The feature or problem addressed by this PR
Complete the changes needed to entity category handling in order to support refeds personalized, pseudononymous and anonymous.
What your changes do and why you chose this solution
A new format for entity category restrictions was needed to support
being able to express that certain categories should not be "mixed"
(refeds personalized, pseudonymous, anonymous).
In discussions, it was determined that Pydantic was a suitable tool to
load such configuration in a way that made it convenient, and safe, to
work with.
This code is backwards compatible with the old entity categories module
data format (RELEASE and ONLY_REQUIRED, two dictionaries) but also adds
support for a new format, RESTRICTIONS which is a list of dicts that
Pydantic will marshal into EntityCategoryRule objects when loaded.
As often is the case when typing, the scope of the change spread a
little to related functions and classes.
Checklist