- Implement `presence` access model for PEP nodes.
- Add PEP auto-subscription (`+notify` handling)
- New `get_pep_last_items` storage method to retrieve in a single query items to send to
auto-subscribers.
- Online resource tracking.
This completes the PEP support.
rel 476
New implementations of XEP-0355 and XEP-0356 are integrated to handle PEP. The
implementation is not complete yet, as auto-subscribe and presence permissions are not
implemented yet.
rel 476
A new `max_items` field has been added to `PubsubNode`. `0` means `max`. If any >0 value
is used, items will be automatically deleted by `cache_pubsub_items`. Items are currently
discarded (i.e. no notification is sent), this is the same behaviour as in legacy Libervia
Pubsub (formerly "SàT Pubsub").
rel 476
- Added `on_extended_disco()` handler.
- Added `with_parent=True` to all `get_pubsub_node()` calls to prevent lazy load errors in
access checks.
rel 476
Registered XEP-0499 handler in `profile_connecting()` and added it to
plugin dependencies.
Added `with_parent` and `with_link` parameters for eager loading of parent and linked_node
relationships.
Fixed CTE to include all children (not just base nodes) and use `selectinload` for parent
to avoid cartesian products.
rel 476
- Added `full_metadata` handling to return only relationship fields when requested.
- Implemented `filter_node_hierarchy_by_access` for access control filtering
rel 476
Pubsub relationships from XEP-0496 are now handled. They can be set in config as explained
in the specification, and access are checked with parents when they are set.
Deletion cascade as specified in the XEP.
rel 476
Add methods to handles the relationships which were already present in storage.
This plugins add methods to handle validation and rules from the specs.
`get_pubsub_node_children` helper method has been added to storage.
XEP-0420 bounds starts at 0 but 0-length rpad defeats its purpose (the XEP actually says
"TODO: sane boundaries?"). Furthermore, some tests where failing randomly due to 0-lenght
rpad sometimes happening. This patch makes rpad minimum size at 50.
Test were raising exceptions when optional modules were missing (GStreamer related modules
for `webrtc`). Those are now catched so the tests are simply skipped in this case.
`MissingModule` is now inheriting from `ImportError`, as it's a natural subclass, and it
makes import error catching easier.
Storage can be modified by tests, and it is kept for the whole session, this may have side
effect resulting in other tests failing. This fixture avoid this problem by reseting
`storage` between each test.
- `retract`, `purge` and `delete` are now implemented
- `features` list has been added
- `publish` now returns the Item ID when it is generated
- `subscribers` publish model is handled.
rel 476
- update queries to handle correctly the `before=""` case and RSM order (older to newer)
while having correct order when `max_items` without RSM is used (then order it newer to
older).
- put RSM code path in a separated method for better readability.
- check values of `max_items` and `from_index` and raise exception is they are not
positive
- when using `before` or `after`, check that the item ID used as reference exists, and
raise an exception otherwise.
- updated docstring to reflect the new behaviour.
- update pubsub cache use of `get_items` with RSM, to adapt to new behaviour.
rel 476
Missing import messages now only display when verbosity is >= 2, this is to avoid
polluting the output. Dependency may be missing because user has not installed all
optional packages, the display should not show that every time.
- correct the case of `dynamicSettingsRegister` and `dynamicSettings` which are `dict`, not
classes.
- Use new `DynamicSettingsCollection` as base class for classes dynamically built during
parsing, to avoid name conflict.
- Use `DynamicSettingsCollection` instead of `dict` in dynamic field (`plugin` and
`component`). This correct inconsistency, and make linters happy.
- Catch `TOMLDecodeError` when parsing config, to show a more readable error message
instead of full backtrace.
- There is not need to use stream management with component, so we set mode to `client`
only.
- `_disconnecting_trigger` was causing an exception when disconnecting a component, it is
now disabled in this case.
New `jid`, `secret` and `autoconnect` field are used for component settings. When used,
backend will automatically create the profile and set its relevant parameters, or check
that existing profile is in sync (and update it if necessary).
This make component installation easier to Libervia, as it is not
necessary anymore to use the CLI frontend to install a component.
rel 476