Commit 1dfd3c29 authored by Mickaël Desfrênes's avatar Mickaël Desfrênes
Browse files

cleanup

parent ece10067
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -12,7 +12,10 @@ NO_SUCH_METADATA = "no such metadata"
NO_SUCH_METADATATYPE = "no such metadatatype"
NO_SUCH_PROJECT = "no such project"
NO_SUCH_RESOURCE = "no such resource"
NO_SUCH_TAG = "no such tag"
NO_SUCH_USER = "no such user"
NO_PROJECT_ROOT = "project has no root"
NOT_A_FILE = "not a file"
PERM_COLLECTION_CREATE = "collection.create"
PERM_COLLECTION_DELETE = "collection.delete"
PERM_COLLECTION_PUBLIC_ONLY = "collection.public_only"
+61 −56
Original line number Diff line number Diff line
@@ -567,7 +567,7 @@ def delete_metadata(user: User, metadata_id: int) -> bool:
        metadata_instance.delete()
        return True
    except Metadata.DoesNotExist:
        return False
        raise ServiceException(NO_SUCH_METADATA)


@_log_call
@@ -666,7 +666,7 @@ def rename_collection(user: User, collection_id: int, title: str) -> bool:
    )
    collection_instance = query_set.first()
    if not collection_instance:
        return False
        raise ServiceException(NO_SUCH_COLLECTION)
    _check_project_permission(user, collection_instance.project, PERM_COLLECTION_UPDATE)
    collection_instance.title = title
    collection_instance.save()
@@ -684,7 +684,7 @@ def rename_resource(user: User, resource_id: int, title: str) -> bool:
    )
    resource_instance = query_set.first()
    if not resource_instance:
        return False
        raise ServiceException(NO_SUCH_RESOURCE)
    _check_project_permission(user, resource_instance.ptr_project, PERM_RESOURCE_UPDATE)
    resource_instance.title = title
    resource_instance.save()
@@ -700,7 +700,7 @@ def rename_meta(user: User, meta_id: int, title: str) -> bool:
    query_set: Union[Iterator[Metadata], QuerySet] = Metadata.objects.filter(pk=meta_id)
    meta_instance = query_set.first()
    if not meta_instance:
        return False
        raise ServiceException(NO_SUCH_METADATA)
    _check_project_permission(user, meta_instance.project, PERM_METADATA_UPDATE)
    meta_instance.title = title
    meta_instance.save()
@@ -889,13 +889,10 @@ def remove_resource_from_collection(
        )
        collection_instance.resources.remove(resource_instance)
        return True
    except (
        Collection.DoesNotExist,
        Resource.DoesNotExist,
        Collection.MultipleObjectsReturned,
        Resource.MultipleObjectsReturned,
    ):
        return False
    except Collection.DoesNotExist:
        raise ServiceException(NO_SUCH_COLLECTION)
    except Resource.DoesNotExist:
        raise ServiceException(NO_SUCH_RESOURCE)


@_log_call
@@ -1389,7 +1386,7 @@ def remove_meta_from_resource(user: User, resource_id: int, meta_value_id: int)
    )
    resource_instance = query_set.first()
    if not resource_instance:
        return False
        raise ServiceException(NO_SUCH_RESOURCE)
    # this is a resource.update permission, not a metadata.update
    _check_project_permission(user, resource_instance.ptr_project, PERM_RESOURCE_UPDATE)
    for meta_value in resource_instance.metadataresourcevalue_set.all():
@@ -1550,7 +1547,7 @@ def remove_meta_from_collection(
    )
    collection_instance = query_set.first()
    if not collection_instance:
        return False
        raise ServiceException(NO_SUCH_COLLECTION)
    _check_project_permission(user, collection_instance.project, PERM_COLLECTION_UPDATE)
    for meta_value in collection_instance.metadatacollectionvalue_set.all():
        if meta_value.id == meta_value_id:
@@ -1858,7 +1855,7 @@ def publish_collection(user: User, collection_id: int) -> bool:
    )
    collection_instance: Collection = query_set.first()
    if not collection_instance:
        return False
        raise ServiceException(NO_SUCH_COLLECTION)
    _check_project_permission(user, collection_instance.project, PERM_COLLECTION_UPDATE)
    collection_instance.public_access = True
    collection_instance.save()
@@ -1876,7 +1873,7 @@ def unpublish_collection(user: User, collection_id: int) -> bool:
    )
    collection_instance: Collection = query_set.first()
    if not collection_instance:
        return False
        raise ServiceException(NO_SUCH_COLLECTION)
    _check_project_permission(user, collection_instance.project, PERM_COLLECTION_UPDATE)
    collection_instance.public_access = False
    collection_instance.save()
@@ -1914,7 +1911,8 @@ def move_collection(
        raise ServiceException(NO_SUCH_COLLECTION)
    if parent_collection_instance in child_collection_instance.descendants():
        raise ServiceException(NO_FOOTGUNS)

    if parent_collection_instance.project_id != child_collection_instance.project_id:
        raise ServiceException(PROJECT_MISMATCH)
    _check_project_permission(
        user, parent_collection_instance.project, PERM_COLLECTION_READ
    )
@@ -1967,8 +1965,8 @@ def delete_tag(user: User, uid: str) -> bool:
        _check_project_permission(user, tag_instance.project, PERM_TAG_DELETE)
        tag_instance.delete()
        return True
    except (Tag.DoesNotExist, Tag.MultipleObjectsReturned):
        return False
    except Tag.DoesNotExist:
        raise ServiceException(NO_SUCH_TAG)


@_log_call
@@ -2020,13 +2018,10 @@ def add_tag_to_collection(user: User, tag_uid: str, collection_id: int) -> bool:
        tag_instance = Tag.objects.get(project=project, uid=tag_uid)
        collection_instance.tags.add(tag_instance)
        return True
    except (
        Collection.DoesNotExist,
        Tag.DoesNotExist,
        Collection.MultipleObjectsReturned,
        Tag.MultipleObjectsReturned,
    ):
        return False
    except Collection.DoesNotExist:
        raise ServiceException(NO_SUCH_COLLECTION)
    except Tag.DoesNotExist:
        raise ServiceException(NO_SUCH_TAG)


@_log_call
@@ -2044,13 +2039,10 @@ def remove_tag_from_collection(user: User, tag_uid: str, collection_id: int) ->
        tag_instance = Tag.objects.get(project=project, uid=tag_uid)
        collection_instance.tags.remove(tag_instance)
        return True
    except (
        Collection.DoesNotExist,
        Tag.DoesNotExist,
        Collection.MultipleObjectsReturned,
        Tag.MultipleObjectsReturned,
    ):
        return False
    except Collection.DoesNotExist:
        raise ServiceException(NO_SUCH_COLLECTION)
    except Tag.DoesNotExist:
        raise ServiceException(NO_SUCH_TAG)


@_log_call
@@ -2068,13 +2060,10 @@ def add_tag_to_resource(user: User, tag_uid: str, resource_id: int) -> bool:
        tag_instance = Tag.objects.get(project=project, uid=tag_uid)
        resource_instance.tags.add(tag_instance)
        return True
    except (
        Resource.DoesNotExist,
        Tag.DoesNotExist,
        Resource.MultipleObjectsReturned,
        Tag.MultipleObjectsReturned,
    ):
        return False
    except Resource.DoesNotExist:
        raise ServiceException(NO_SUCH_RESOURCE)
    except Tag.DoesNotExist:
        raise ServiceException(NO_SUCH_TAG)


@_log_call
@@ -2092,13 +2081,10 @@ def remove_tag_from_resource(user: User, tag_uid: str, resource_id: int) -> bool
        tag_instance = Tag.objects.get(project=project, uid=tag_uid)
        resource_instance.tags.remove(tag_instance)
        return True
    except (
        Resource.DoesNotExist,
        Tag.DoesNotExist,
        Resource.MultipleObjectsReturned,
        Tag.MultipleObjectsReturned,
    ):
        return False
    except Resource.DoesNotExist:
        raise ServiceException(NO_SUCH_RESOURCE)
    except Tag.DoesNotExist:
        raise ServiceException(NO_SUCH_TAG)


@_log_call
@@ -2135,9 +2121,12 @@ def set_representative_resource(
            collection_instance.representative = resource_instance
            collection_instance.save()
            return True
        return False
    except (Collection.DoesNotExist, Resource.DoesNotExist):
        return False
        else:
            raise ServiceException(PROJECT_MISMATCH)
    except Collection.DoesNotExist:
        raise ServiceException(NO_SUCH_COLLECTION)
    except Resource.DoesNotExist:
        raise ServiceException(NO_SUCH_RESOURCE)


@_log_call
@@ -2163,12 +2152,12 @@ def replace_file(user: User, from_resource_id: int, to_resource_id: int) -> bool
            pk=from_resource_id, deleted_at__isnull=True
        )
        if not from_resource_instance.file:
            return False
            raise ServiceException(NOT_A_FILE)
        to_resource_instance = Resource.objects.get(
            pk=to_resource_id, deleted_at__isnull=True
        )
        if not to_resource_instance.file:
            return False
            raise ServiceException(NOT_A_FILE)
        _check_project_permission(
            user, from_resource_instance.ptr_project, PERM_RESOURCE_READ
        )
@@ -2205,7 +2194,7 @@ def replace_file(user: User, from_resource_id: int, to_resource_id: int) -> bool
        to_resource_instance.save()
        return True
    except Resource.DoesNotExist:
        return False
        raise ServiceException(NO_SUCH_RESOURCE)


@_log_call
@@ -2227,7 +2216,7 @@ def set_is_oai_record(
        collection_instance.save()
        return True
    except Collection.DoesNotExist:
        return False
        raise ServiceException(NO_SUCH_COLLECTION)


@_log_call
@@ -2263,8 +2252,10 @@ def deactivate_rpc_access(user: User, user_name: str, api_key: str) -> bool:
        key_instance.active = False
        key_instance.save()
        return True
    except (User.DoesNotExist, APIKey.DoesNotExist):
        return False
    except User.DoesNotExist:
        raise ServiceException(NO_SUCH_USER)
    except APIKey.DoesNotExist:
        raise ServiceException(NO_SUCH_USER)


@_log_call
@@ -2597,7 +2588,21 @@ def restore_collection(
    """
    Restore a deleted collection from the recycle bin
    """
    pass
    collection_instance = Collection.objects.filter(pk=collection_id).first()
    if not collection_instance:
        raise ServiceException(NO_SUCH_COLLECTION)
    destination_collection_instance = Collection.objects.filter(
        pk=destination_collection_id
    ).first()
    if not destination_collection_instance:
        raise ServiceException(NO_SUCH_COLLECTION)
    if destination_collection_instance.project_id != collection_instance.project_id:
        raise ServiceException(PROJECT_MISMATCH)
    _check_project_permission(user, collection_instance.project, PERM_COLLECTION_UPDATE)
    collection_instance.deleted_at = None
    collection_instance.save()
    move_collection(user, collection_instance, destination_collection_instance)
    return True


@_log_call