[Calypso] [PATCH 3/4] When scanning for children, allow directories (as subcollections).
Guido Günther
agx at sigxcpu.org
Mon May 16 02:03:51 PDT 2016
On Sun, May 15, 2016 at 10:35:31PM +0000, Jelmer Vernooij wrote:
> From: Jelmer Vernooij <jelmer at jelmer.uk>
>
> ---
> calypso/webdav.py | 29 +++++++++++++++++++++--------
> 1 file changed, 21 insertions(+), 8 deletions(-)
>
> diff --git a/calypso/webdav.py b/calypso/webdav.py
> index e198a14..4b52d67 100644
> --- a/calypso/webdav.py
> +++ b/calypso/webdav.py
> @@ -265,6 +265,14 @@ class Collection(object):
> self.log.exception("Insert %s failed", path)
> return
>
> + def insert_directory(self, path):
> + try:
> + item = Collection(path)
> + self.my_items.append(item)
> + except Exception, ex:
> + self.log.exception("Insert %s failed", path)
> + return
> +
> def remove_file(self, path):
> old_items=[]
> for old_item in self.my_items:
> @@ -311,6 +319,8 @@ class Collection(object):
> for filename in filenames:
> if filename == METADATA_FILENAME:
> continue
> + if filename == '.git':
> + continue
> filepath = os.path.join(self.path, filename)
> for file in self.files:
> if filepath == file.path:
> @@ -320,25 +330,28 @@ class Collection(object):
> self.scan_file(filepath)
> break
> else:
> - if os.path.isdir(filepath):
> - self.log.debug("Ignoring directory %s in scan_dir", filepath)
> - else:
> - self.log.debug("New %s", filepath)
> - newfiles.append(Pathtime(filepath))
> + self.log.debug("New %s", filepath)
> + newfiles.append(Pathtime(filepath))
> + if not os.path.isdir(filepath):
> self.insert_file(filepath)
> + else:
> + self.insert_directory("/".join([self.urlpath, filename]))
> for file in self.files:
> if not file.path in filenames:
> self.log.debug("Removed %s", file.path)
> self.remove_file(file.path)
> h = hashlib.sha1()
> for item in self.my_items:
> - h.update(item.etag)
> + if getattr(item, 'etag', None):
> + h.update(item.etag)
> + else:
> + h.update(item.ctag)
> self._ctag = '%d-' % self.mtime + h.hexdigest()
> self.files = newfiles
> -
> +
> def __init__(self, path):
> """Initialize the collection with ``cal`` and ``user`` parameters."""
> -
> +
> self.log = logging.getLogger(__name__)
> self.encoding = "utf-8"
> self.urlpath = path
> --
> 2.8.1
A testcase would help to review this. The target is to allow
subcollections as subfolders? If so LGTM but it would be great to have a
testcase for these kind of tings so we don't break it in the future (and
it gets simpler to review).
Cheers,
-- Guido
More information about the Calypso
mailing list