Your message dated Mon, 10 Mar 2014 15:40:35 +0000
with message-id <[email protected]>
and subject line Bug#710690: fixed in pywebdav 0.9.8-8
has caused the Debian Bug report #710690,
regarding python-webdav: recursive <allprops> only yields a subset of properties
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
710690: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=710690
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: python-webdav
Version: 0.9.8-3
Severity: normal

Dear Maintainer,

when all properties for a resource and its children are requested,
pywebdav only returns the value of those properties that are also set
on requested collection itself. It does not return the properties that
are only on one of the children (or grandchildren for that
matter). Also, 404 is returned for any property that is on the
requested collection, but not on the current child.

The reason for this is that the list of property names is created once
in pywebdav.lib.propfind.PROPFIND.create_allprop() and applied to each
resource.


Here's a quick hack to fix it:

=== Begin ===
--- propfind.py.old     2013-06-01 17:03:19.031822359 +0200
+++ /usr/lib/python2.7/dist-packages/pywebdav/lib/propfind.py   2013-06-01 
17:08:50.000000000 +0200
@@ -66,7 +66,7 @@
 
         df = None
         if self.request_type == RT_ALLPROP:
-            df = self.create_allprop()
+            df = self.create_prop(allprop=True)
 
         if self.request_type == RT_PROPNAME:
             df = self.create_propname()
@@ -78,7 +78,7 @@
             return df
 
         # no body means ALLPROP!
-        df = self.create_allprop()
+        df = self.create_prop(allprop=True)
         return df
 
     def create_propname(self):
@@ -118,17 +118,7 @@
 
         return doc.toxml(encoding="utf-8")
 
-    def create_allprop(self):
-        """ return a list of all properties """
-        self.proplist = {}
-        self.namespaces = []
-        for ns, plist in self._dataclass.get_propnames(self._uri).items():
-            self.proplist[ns] = plist
-            self.namespaces.append(ns)
-
-        return self.create_prop()
-
-    def create_prop(self):
+    def create_prop(self, allprop=False):
         """ handle a <prop> request
 
         This will
@@ -156,16 +146,25 @@
         ms.tagName = 'D:multistatus'
 
         if self._depth == "0":
+            if allprop:
+                self.proplist = self._dataclass.get_propnames(self._uri)
+                self.namespaces = self.proplist.keys()
             gp, bp = self.get_propvalues(self._uri)
             res = self.mk_prop_response(self._uri, gp, bp, doc)
             ms.appendChild(res)
 
         elif self._depth == "1":
+            if allprop:
+                self.proplist = self._dataclass.get_propnames(self._uri)
+                self.namespaces = self.proplist.keys()
             gp, bp = self.get_propvalues(self._uri)
             res = self.mk_prop_response(self._uri, gp, bp, doc)
             ms.appendChild(res)
 
             for newuri in self._dataclass.get_childs(self._uri):
+                if allprop:
+                    self.proplist = self._dataclass.get_propnames(newuri)
+                    self.namespaces = self.proplist.keys()
                 gp, bp = self.get_propvalues(newuri)
                 res = self.mk_prop_response(newuri, gp, bp, doc)
                 ms.appendChild(res)
@@ -173,6 +172,9 @@
             uri_list = [self._uri]
             while uri_list:
                 uri = uri_list.pop()
+                if allprop:
+                    self.proplist = self._dataclass.get_propnames(uri)
+                    self.namespaces = self.proplist.keys()
                 gp, bp = self.get_propvalues(uri)
                 res = self.mk_prop_response(uri, gp, bp, doc)
                 ms.appendChild(res)
=== End ===


Not sure why proplist and namespaces are instance variables rather
than getting passed as a parameter to get_propvalues() and why we
namespaces is a separate variable instead of just using
proplist.keys() in mk_propname_response(), so I haven't changed that.


-- System Information:
Debian Release: 7.0
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'testing'), (500, 'stable'), (100, 
'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.8-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-webdav depends on:
ii  python                2.7.3-4
ii  python-pkg-resources  0.6.24-1

python-webdav recommends no packages.

python-webdav suggests no packages.

-- no debconf information

--- End Message ---
--- Begin Message ---
Source: pywebdav
Source-Version: 0.9.8-8

We believe that the bug you reported is fixed in the latest version of
pywebdav, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Mathias Behrle <[email protected]> (supplier of updated pywebdav package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Mon, 10 Mar 2014 15:17:30 +0100
Source: pywebdav
Binary: python-webdav
Architecture: source all
Version: 0.9.8-8
Distribution: unstable
Urgency: medium
Maintainer: Debian Tryton Maintainers <[email protected]>
Changed-By: Mathias Behrle <[email protected]>
Description: 
 python-webdav - WebDAV server implementation in Python
Closes: 710672 710690
Changes: 
 pywebdav (0.9.8-8) unstable; urgency=medium
 .
   * Removing debian/source/options, we are building with dpkg defaults.
   * Updating year in debian copyright.
   * Removing PYBUILD_DESTDIR_python2 from rules, it is no more needed.
   * Adding pgp verification for uscan.
   * Adding gbp.conf for usage with git-buildpackage.
   * Adding 01-recursive-properties.patch (Closes: #710690).
     Thanks to Sascha Silbe for providing the patch, no feedback from
     maintainers so far.
   * Adding 02-RFC2616-keep-alive.patch (Closes: #710672).
     Thanks to Sascha Silbe for providing the patch, no feedback from
     maintainers so far.
Checksums-Sha1: 
 1072c5af9acd4f9ea134ad5b3e0cae19bf6fe031 1943 pywebdav_0.9.8-8.dsc
 36f7dcb0ea70bead2d327ac92a972939d44f47e2 13800 pywebdav_0.9.8-8.debian.tar.xz
 bb77df99c001379459a806de7691a4beb99f5481 44858 python-webdav_0.9.8-8_all.deb
Checksums-Sha256: 
 8ced6a4f3e536f5c020b5ecd2cf6b60d1bfafcefc05f9672d4edf1cf22f26394 1943 
pywebdav_0.9.8-8.dsc
 6709cfe8525b37eb8cffbb9af1d9d3733ba3f40b9630dcbc4bea3b183c90885b 13800 
pywebdav_0.9.8-8.debian.tar.xz
 ca823b80d11868f4493d692118e862f584bb054d91a5d3e61ef0e552479e2903 44858 
python-webdav_0.9.8-8_all.deb
Files: 
 6e53e67fdd9734261209209331705dc3 1943 python optional pywebdav_0.9.8-8.dsc
 a6179ca6f77c22e088dd5c91a99a0cca 13800 python optional 
pywebdav_0.9.8-8.debian.tar.xz
 e867daa7d98e9951e6991972aff29df3 44858 python optional 
python-webdav_0.9.8-8_all.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBCAAGBQJTHcpiAAoJENbQm+SEBbv2r1oP/RDergyjSLIear9LdCchSGsQ
TsyMMDwN/UZ624SFtfOrW0+dXNhsJFl6j53cSk8ytp87vKYgEzeLq1xjQcIa3Rhp
j1sKsA6TRiucjwOEzow//4nBkgIYiq5aru9RJx4a0sQ35lHrZWq7CUzsWN1haDCr
uAlG5W6Z39hOK/Se+vWFEZwFvoSw8uhTseTS39/w9H84NycHFX1e1W5LaOT5erEH
TgnZQUm2TXf8LWWYlsK4netT8clx8mnrR6IAByOh9HGIT1gjMI20qLj5NDje1HYU
xvhZWzW10WZVBjVbfbvXIM7hCrEBJqIiEtzoqQ6Taba9obYPjitISL7qb7e1n2ot
h7x+dqX3qBy7Oz6r6mk6IYf1bEvS9DHBfdeQT/fPoGVzXoqHo4RLlvvSFmkdQGpl
biuGAGWc92qLLJ8oKKfn0N4YQcix9JNRxIVhoAapwjUl7+YiS1dMwYlS4g8ge++K
c0EgFeLXh++niFUs99HWV9Wcqej6jQZLo2+niabt2cnKAtuZFyGM364zkZ+jdr5P
rBCZ/u1UaXh9PzDaXzjAJ2iJmNTL/OWUYfKU5/yZnYR312pDY/hbQZ5wqLBbixpI
K1ozVNVbnKWGtUqHn3NQzjv1bEH2mxg87dyxuMpsigsmA1eTHDPybailI/JEN1Wa
aQTWJTBy9gkMJJVwdAgK
=9vIO
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to