Loading rpc/methods.py +60 −1 Original line number Diff line number Diff line Loading @@ -2832,7 +2832,7 @@ def picture_rotate_crop( @_log_call @_rpc_groups(["Resources", "Collections"]) def remove_items(user: User, parent_collection_id: int, selection: dict = None) -> bool: def remove_selection(user: User, parent_collection_id: int, selection: dict) -> bool: """ Will mass remove items based on parent collection Loading Loading @@ -2881,3 +2881,62 @@ def remove_items(user: User, parent_collection_id: int, selection: dict = None) user, resource_instance.id, parent_collection.id ) return True @_log_call @_rpc_groups(["Resources", "Collections"]) def move_selection( user: User, from_collection_id: int, selection: dict, to_collection_id: int ) -> Dict[str, Dict]: """ Will mass move items based on parent collection and destination collection Use such an object for exclusion: ``` { "exclude": { "resources_ids": [12, 10, 15] "collections_ids:" [4, 254, 17] } } ``` """ if not selection: selection = {} if not from_collection_id: raise ServiceException(NO_SUCH_COLLECTION) parent_collection = Collection.objects.filter(pk=from_collection_id).first() if not parent_collection: raise ServiceException(NO_SUCH_COLLECTION) if not to_collection_id: raise ServiceException(NO_SUCH_COLLECTION) recipient_collection = Collection.objects.filter(pk=to_collection_id).first() if not recipient_collection: raise ServiceException(NO_SUCH_COLLECTION) children_collections_set = parent_collection.children() if selection.get("exclude"): if selection["exclude"].get("collections_ids"): children_collections_set = children_collections_set.exclude( id__in=selection["exclude"].get("collections_ids") ) collections_ids = [] for collection_instance in children_collections_set.all(): collections_ids.append(collection_instance.id) res_set = parent_collection.resources.all() if selection.get("exclude"): if selection["exclude"].get("resources_ids"): res_set = res_set.exclude(id__in=selection["exclude"].get("resources_ids")) resources_ids = [] for resource_instance in res_set.all(): resources_ids.append(resource_instance.id) return move_items( user, parent_collection.id, recipient_collection.id, collections_ids, resources_ids, ) Loading
rpc/methods.py +60 −1 Original line number Diff line number Diff line Loading @@ -2832,7 +2832,7 @@ def picture_rotate_crop( @_log_call @_rpc_groups(["Resources", "Collections"]) def remove_items(user: User, parent_collection_id: int, selection: dict = None) -> bool: def remove_selection(user: User, parent_collection_id: int, selection: dict) -> bool: """ Will mass remove items based on parent collection Loading Loading @@ -2881,3 +2881,62 @@ def remove_items(user: User, parent_collection_id: int, selection: dict = None) user, resource_instance.id, parent_collection.id ) return True @_log_call @_rpc_groups(["Resources", "Collections"]) def move_selection( user: User, from_collection_id: int, selection: dict, to_collection_id: int ) -> Dict[str, Dict]: """ Will mass move items based on parent collection and destination collection Use such an object for exclusion: ``` { "exclude": { "resources_ids": [12, 10, 15] "collections_ids:" [4, 254, 17] } } ``` """ if not selection: selection = {} if not from_collection_id: raise ServiceException(NO_SUCH_COLLECTION) parent_collection = Collection.objects.filter(pk=from_collection_id).first() if not parent_collection: raise ServiceException(NO_SUCH_COLLECTION) if not to_collection_id: raise ServiceException(NO_SUCH_COLLECTION) recipient_collection = Collection.objects.filter(pk=to_collection_id).first() if not recipient_collection: raise ServiceException(NO_SUCH_COLLECTION) children_collections_set = parent_collection.children() if selection.get("exclude"): if selection["exclude"].get("collections_ids"): children_collections_set = children_collections_set.exclude( id__in=selection["exclude"].get("collections_ids") ) collections_ids = [] for collection_instance in children_collections_set.all(): collections_ids.append(collection_instance.id) res_set = parent_collection.resources.all() if selection.get("exclude"): if selection["exclude"].get("resources_ids"): res_set = res_set.exclude(id__in=selection["exclude"].get("resources_ids")) resources_ids = [] for resource_instance in res_set.all(): resources_ids.append(resource_instance.id) return move_items( user, parent_collection.id, recipient_collection.id, collections_ids, resources_ids, )