[Calypso] [PATCH 3/4] When scanning for children, allow directories (as subcollections).

Guido Günther agx at sigxcpu.org
Thu May 19 12:28:54 PDT 2016


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" <agx at sigxcpu.org> wrote:
> >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
> 
> -- 
> Sent from my Android device with K-9 Mail. Please excuse my brevity.
> 


More information about the Calypso mailing list