CenterForOpenScience/waterbutler

View on GitHub
waterbutler/providers/filesystem/metadata.py

Summary

Maintainability
C
1 day
Test Coverage
import os

from waterbutler.core import metadata


class BaseFileSystemMetadata(metadata.BaseMetadata):

    def __init__(self, raw, folder):
        super().__init__(raw)
        self._folder = folder

    @property
    def provider(self):
        return 'filesystem'

    def build_path(self, path):
        # TODO write a test for this
        if path.lower().startswith(self._folder.lower()):
            path = path[len(self._folder):]
        return super().build_path(path)


class FileSystemFolderMetadata(BaseFileSystemMetadata, metadata.BaseFolderMetadata):

    @property
    def name(self):
        return os.path.split(self.raw['path'].rstrip('/'))[1]

    @property
    def path(self):
        return self.build_path(self.raw['path'])


class FileSystemFileMetadata(BaseFileSystemMetadata, metadata.BaseFileMetadata):

    @property
    def name(self):
        return os.path.split(self.raw['path'])[1]

    @property
    def path(self):
        return self.build_path(self.raw['path'])

    @property
    def size(self):
        return self.raw['size']

    @property
    def modified(self):
        return self.raw['modified']

    @property
    def modified_utc(self):
        return self.raw['modified_utc']

    @property
    def created_utc(self):
        return None

    @property
    def content_type(self):
        return self.raw['mime_type']

    @property
    def etag(self):
        return '{}::{}'.format(self.raw['modified'], self.raw['path'])