Hi Jelmer, On Thu, May 19, 2016 at 07:43:41PM +0100, Jelmer Vernooij wrote: > This is required for DavDroid, never versions of which discover the available > collection URLs and show them to the user. > > I agree that tests would be really nice, but that's a big investment > at the moment as the code doesn't lend itself to testing well and > there are no existing tests to build on. At the moment I'm merely > trying to keep my own setup working :/
That's a great effort after all! Just to be sure: LGTM ! -- Guido > > On 16 May 2016 11:03:51 CEST, "Guido Günther" <[email protected]> wrote: > >On Sun, May 15, 2016 at 10:35:31PM +0000, Jelmer Vernooij wrote: > >> From: Jelmer Vernooij <[email protected]> > >> > >> --- > >> 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 > > -- > Sent from my Android device with K-9 Mail. Please excuse my brevity. > _______________________________________________ Calypso mailing list [email protected] http://keithp.com/mailman/listinfo/calypso
