Skip to content

Commit

Permalink
docs
Browse files Browse the repository at this point in the history
  • Loading branch information
mesemus committed Mar 20, 2024
1 parent 2a21491 commit 9c8ee8e
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 29 deletions.
5 changes: 4 additions & 1 deletion invenio_records_resources/ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,10 @@ def init_config(self, app):
app.config.setdefault(k, getattr(config, k))

def register_builtin_transfers(self):
from invenio_records_resources.services.files.transfer import LocalTransfer, FetchTransfer
from invenio_records_resources.services.files.transfer import (
FetchTransfer,
LocalTransfer,
)

self.transfer_registry.register(LocalTransfer)
self.transfer_registry.register(FetchTransfer)
2 changes: 1 addition & 1 deletion invenio_records_resources/services/files/generators.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from invenio_records_permissions.generators import Generator
from invenio_search.engine import dsl

from .transfer import TransferType, LOCAL_TRANSFER_TYPE
from .transfer import LOCAL_TRANSFER_TYPE, TransferType


class AnyUserIfFileIsLocal(Generator):
Expand Down
21 changes: 16 additions & 5 deletions invenio_records_resources/services/files/transfer/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,21 @@
"""Files transfer."""


from .providers import LocalTransfer, FetchTransfer
from .base import Transfer
from .types import TransferType, LOCAL_TRANSFER_TYPE, FETCH_TRANSFER_TYPE, REMOTE_TRANSFER_TYPE
from .providers import FetchTransfer, LocalTransfer
from .types import (
FETCH_TRANSFER_TYPE,
LOCAL_TRANSFER_TYPE,
REMOTE_TRANSFER_TYPE,
TransferType,
)


__all__ = ("Transfer", "TransferType", "LocalTransfer", "FetchTransfer",
"LOCAL_TRANSFER_TYPE", "FETCH_TRANSFER_TYPE", "REMOTE_TRANSFER_TYPE")
__all__ = (
"Transfer",
"TransferType",
"LocalTransfer",
"FetchTransfer",
"LOCAL_TRANSFER_TYPE",
"FETCH_TRANSFER_TYPE",
"REMOTE_TRANSFER_TYPE",
)
19 changes: 14 additions & 5 deletions invenio_records_resources/services/files/transfer/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@


class TransferStatus:
"""Transfer status."""
"""Transfer status. Constants to be used as return values for get_status."""

# Can not be enum to be json serializable, so just a class with constants.

PENDING = "pending"
Expand All @@ -23,7 +24,12 @@ class TransferStatus:

class BaseTransfer(ABC):
"""Local transfer."""

type: TransferType = None
"""
The transfer type for this transfer instance.
Overriding classes must set this attribute.
"""

def __init__(self, service=None, uow=None):
"""Constructor."""
Expand Down Expand Up @@ -61,16 +67,19 @@ def commit_file(self, record, file_key):
# e.g. system, since its the one downloading the file
record.files.commit(file_key)

@abstractmethod
def get_status(self, obj: FileRecord):
"""
Get status of a file.
Get status of the upload of the passed file record.
Returns TransferStatus.COMPLETED if the file is uploaded,
TransferStatus.PENDING if the file is not uploaded yet or
TransferStatus.FAILED if the file upload failed.
"""
raise NotImplementedError()

if obj.file:
return TransferStatus.COMPLETED

return TransferStatus.PENDING

# @abstractmethod
# def read_file_content(self, record, file_metadata):
Expand Down
18 changes: 5 additions & 13 deletions invenio_records_resources/services/files/transfer/providers.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
from invenio_records_resources.records import FileRecord
from .base import BaseTransfer, TransferStatus
from .types import FETCH_TRANSFER_TYPE, LOCAL_TRANSFER_TYPE

from ...errors import TransferException
from ...uow import TaskOp
from ..tasks import fetch_file
from .base import BaseTransfer, TransferStatus
from .types import FETCH_TRANSFER_TYPE, LOCAL_TRANSFER_TYPE


class LocalTransfer(BaseTransfer):
"""Local transfer."""

type = LOCAL_TRANSFER_TYPE

def __init__(self, **kwargs):
Expand All @@ -31,14 +33,10 @@ def set_file_content(self, record, file, file_key, stream, content_length):

super().set_file_content(record, file, file_key, stream, content_length)

def get_status(self, obj):
"""Get status of a file."""
# as there is a file object, the file has been uploaded, so return completed
return TransferStatus.COMPLETED


class FetchTransfer(BaseTransfer):
"""Fetch transfer."""

type = FETCH_TRANSFER_TYPE

def __init__(self, **kwargs):
Expand Down Expand Up @@ -76,9 +74,3 @@ def init_file(self, record, file_metadata):
)
)
return file

def get_status(self, obj: FileRecord) -> TransferStatus:
"""Get status of a file."""
if obj.file:
return TransferStatus.COMPLETED
return TransferStatus.PENDING
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@


class TransferRegistry:
DEFAULT_TRANSFER_TYPE = 'L'
DEFAULT_TRANSFER_TYPE = "L"

def __init__(self):
self._transfers = {}
Expand Down
4 changes: 2 additions & 2 deletions invenio_records_resources/services/files/transfer/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ class TransferType:


# predefined transfer types
LOCAL_TRANSFER_TYPE = TransferType(type="L", is_serializable=False)
FETCH_TRANSFER_TYPE = TransferType(type="F", is_serializable=True)
LOCAL_TRANSFER_TYPE = TransferType(type="L", is_serializable=False)
FETCH_TRANSFER_TYPE = TransferType(type="F", is_serializable=True)
REMOTE_TRANSFER_TYPE = TransferType(type="R", is_serializable=True)
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -113,5 +113,5 @@ ignore =
*-requirements.txt

[tool:pytest]
addopts = --black --isort --pydocstyle --doctest-glob="*.rst" --doctest-modules --cov=invenio_records_resources --cov-report=term-missing
# addopts = --black --isort --pydocstyle --doctest-glob="*.rst" --doctest-modules --cov=invenio_records_resources --cov-report=term-missing
testpaths = docs tests invenio_records_resources

0 comments on commit 9c8ee8e

Please sign in to comment.