* Add support for 'group' and 'having' keys in
SmartFilterMixin
- fixes#1285
* Add `group` and `having` fields to `additionalFields` list in `FilteringType` class
- This should allow passing the parsed filters back into `search()`.
Co-Authored-By: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
---------
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* Fix minor typo
* Update algorithm for parsing #1274
* Match style guide of the module
* Fix Edge Cases
- `and` is now considered the default operation instead of raising error
- fix algorithm so that the reserved keys are parsed in the filters dictionary instead of filters group when located later in the feed.
- removed some code repetition
* Join multiple filters by default
If multiple filter groups are parsed they are joined by `and` instead of raising error.
* fix `==` operator parsing
transfers "=" from the value to key
* fix typehinting
* Add new test for smart Filters
this test would fail on old algorithm despite it being logically the exact same filter.
* add test for deeply nested filters
* combine filters test for playlist
* combine filters test for collections
* fix typo
* add test to check parsed fitlers as it is
* edited test to be independent of the server
* Apply suggestions from code review
adhere to style guide of the project
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
---------
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* Use generator for string join
* Group media type edit mixins
* Add UserRatingMixin
* Add LibrarySection methods to multi-edit items
* Remove deprecated banners
* Factor out resource lock/unlock mixins
* Update `fetchItems` to accept list of rating keys
* Add repr and helper methods to Common object
* Update tests
* Refactor base fetchItems for pagination
* Use base fetchItems for LibrarySection methods
* Use base fetchItems for MyPlexAccount watchlist
* Use base fetchItems for PlexServer history
* Fix imports
* Properly close file object in mixin uploads
* Also support a file-like object as the upload `filepath` parameter
* Update image upload tests for file-like object
Since themes may take a while to upload, it may be beneficial to have a separate `timeout` option for uploading themes, instead of using the default `config.TIMEOUT`.
* Add editionTitle to Movie attributes
* Add EditionTitleMixin to Movie
* Add tests for movie editionTitle
* Add `editions()` method to Movie
* Add test for movie editions method
* Add PlayedUnplayedMixin
* Deprecate Video isPlayed, markWatched, and markUnwatched
* Rename all deprecated methods
* Return self to enable method chaining
* Update tests for audio markPlayed / markUnplayed using history
* Remove duplicate video history tests
* Fix discover search results
* Plex API response changed to separate "Free on Demand" and "More Ways To Watch"
* Add test for searchDiscover
* Manually set watchlist and discover result to online metadata objects
* Replace all key format ratingKey with key
* Add libtype argument to searchDiscover
* Update tests for searchDiscover libtype
* Add includeUserState=1 parameter to Discover results details key
* Add method to return UserState object
* Remove Plex news
* Replace requests with query method for online hubs
* Add myPlexAccount watchlist methods
* Add mixin for objects that can be added to watchlist
* Add tests for watchlist
* Always split ratingKey from guid for watchlist
* Add method to retrieve streaming service availability
* Add test for streaming service availability
* Add filtering and sorting for watchlists
* Fix watchlist tests
* Add method to check if an item is on a user's watchlist
* Update watchlist tests
* Make account optional for WatchlistMixin
* Add Discover search
* Use manuallyLoadXML method for Discover search results
* Remove webshows and podcasts
* Fix WatchlistMixin account AttributeError
* Add BadRequest exception when adding to/removing from watchlist
* Update watchlist tests for BadRequest
* Update watchlist doc strings
* Refactor tag functions into EditTagsMixin
* Fix test mixins tag use of _tagSingular
* Add kwargs to editTags
* Fix _tagSingular and _tagPlural if tag is already singular or plural
* Make editing tags chainable
* Add chaining example to doc string
* Update editTags doc string for batch editing
* Update Collection.edit() method
* Add new EditFieldMixin and subclasses
* Add EditFieldMixin to Plex objects
* Update PlexPartialObject.edit() doc string
* Cast Track parentIndex to int
* Add base _searchTypes property
* Add kwargs to editField
* Editing album title also requires the artist ratingKey
* Add tests for editing fields
* Deprecate Collection.edit()
* Make editing fields chainable
* Add chaining example to doc string
* Add batch editing mode
* Add test for batchEdits
* Clean up mixins imports
* Reorder mixins
* Fix tests for batch edit
* Add private _edit method
* Add fields attribute to playlists
* Add lock and unlock methods to art, banner, and poster mixins
* Add tests for locking and unlocking art and posters