Loading rpc/methods.py +42 −1 Original line number Diff line number Diff line Loading @@ -1169,7 +1169,6 @@ def set_metas_to_resource(user: User, resource_id: int, metas: List[dict]) -> bo All metas must share the same metadata set. """ # prevent mixing metas from different sets # id, value metadatasets_ids = [] for meta_dict in metas: meta = Metadata.objects.get(pk=meta_dict["id"]) Loading Loading @@ -1202,6 +1201,48 @@ def set_metas_to_resource(user: User, resource_id: int, metas: List[dict]) -> bo return True @_rpc_groups(["Metadatas", "Collections"]) def set_metas_to_collection(user: User, collection_id: int, metas: List[dict]) -> bool: """ Sets all metas for a unique metadata set. Metas is metadata id => metadata value dictionary. All metas must share the same metadata set. """ # prevent mixing metas from different sets metadatasets_ids = [] for meta_dict in metas: meta = Metadata.objects.get(pk=meta_dict["id"]) metadatasets_ids.append(meta.set.pk) metadatasets_ids = list(set(metadatasets_ids)) if len(metadatasets_ids) > 1: raise ServiceException( "can't mix metadata sets when setting multiple meta values at once" ) # check that objects exist collection_instance = Collection.objects.filter( pk=collection_id, deleted_at__isnull=True ).first() if not collection_instance: raise ServiceException("no such collection") metadataset_instance = MetadataSet.objects.filter(pk=metadatasets_ids[0]).first() if not metadataset_instance: raise ServiceException("no such metadatas set") # remove all metas from the set for meta_value in collection_instance.metadatacollectionvalue_set.filter( metadata__set=metadataset_instance ): remove_meta_from_collection(user, collection_id, meta_value.metadata.pk) # add metas for meta_dict in metas: add_meta_to_collection(user, collection_id, meta_dict["id"], meta_dict["value"]) return True @_rpc_groups(["Metadatas", "Resources"]) def add_meta_to_resource( user: User, resource_id: int, meta_id: int, meta_value: str Loading Loading
rpc/methods.py +42 −1 Original line number Diff line number Diff line Loading @@ -1169,7 +1169,6 @@ def set_metas_to_resource(user: User, resource_id: int, metas: List[dict]) -> bo All metas must share the same metadata set. """ # prevent mixing metas from different sets # id, value metadatasets_ids = [] for meta_dict in metas: meta = Metadata.objects.get(pk=meta_dict["id"]) Loading Loading @@ -1202,6 +1201,48 @@ def set_metas_to_resource(user: User, resource_id: int, metas: List[dict]) -> bo return True @_rpc_groups(["Metadatas", "Collections"]) def set_metas_to_collection(user: User, collection_id: int, metas: List[dict]) -> bool: """ Sets all metas for a unique metadata set. Metas is metadata id => metadata value dictionary. All metas must share the same metadata set. """ # prevent mixing metas from different sets metadatasets_ids = [] for meta_dict in metas: meta = Metadata.objects.get(pk=meta_dict["id"]) metadatasets_ids.append(meta.set.pk) metadatasets_ids = list(set(metadatasets_ids)) if len(metadatasets_ids) > 1: raise ServiceException( "can't mix metadata sets when setting multiple meta values at once" ) # check that objects exist collection_instance = Collection.objects.filter( pk=collection_id, deleted_at__isnull=True ).first() if not collection_instance: raise ServiceException("no such collection") metadataset_instance = MetadataSet.objects.filter(pk=metadatasets_ids[0]).first() if not metadataset_instance: raise ServiceException("no such metadatas set") # remove all metas from the set for meta_value in collection_instance.metadatacollectionvalue_set.filter( metadata__set=metadataset_instance ): remove_meta_from_collection(user, collection_id, meta_value.metadata.pk) # add metas for meta_dict in metas: add_meta_to_collection(user, collection_id, meta_dict["id"], meta_dict["value"]) return True @_rpc_groups(["Metadatas", "Resources"]) def add_meta_to_resource( user: User, resource_id: int, meta_id: int, meta_value: str Loading