summaryrefslogtreecommitdiff
path: root/addons/document_webdav
diff options
context:
space:
mode:
authorTejas Tank <tta@openerp.com>2012-08-17 16:16:10 +0530
committerTejas Tank <tta@openerp.com>2012-08-17 16:16:10 +0530
commitf4f0d42a70d62320b0d0b0d3aab16336b696a485 (patch)
treeac01c07c02a5284eb67d044e92e3255506e70a08 /addons/document_webdav
parentae1ed5900caf1d0429ef731343af4ae364d989ae (diff)
parent6666d5993f9753c6ec3aec721b41ebd3fbc6c18c (diff)
Merged with latest.
bzr revid: tta@openerp.com-20120817104610-h7pova57capzm1by
Diffstat (limited to 'addons/document_webdav')
-rw-r--r--addons/document_webdav/__openerp__.py5
-rw-r--r--addons/document_webdav/dav_fs.py104
-rw-r--r--addons/document_webdav/document_webdav.py26
-rw-r--r--addons/document_webdav/i18n/ar.po4
-rw-r--r--addons/document_webdav/i18n/bg.po4
-rw-r--r--addons/document_webdav/i18n/ca.po4
-rw-r--r--addons/document_webdav/i18n/cs.po4
-rw-r--r--addons/document_webdav/i18n/da.po4
-rw-r--r--addons/document_webdav/i18n/de.po4
-rw-r--r--addons/document_webdav/i18n/el.po4
-rw-r--r--addons/document_webdav/i18n/en_GB.po4
-rw-r--r--addons/document_webdav/i18n/es.po4
-rw-r--r--addons/document_webdav/i18n/es_CR.po4
-rw-r--r--addons/document_webdav/i18n/es_EC.po4
-rw-r--r--addons/document_webdav/i18n/es_PY.po4
-rw-r--r--addons/document_webdav/i18n/et.po4
-rw-r--r--addons/document_webdav/i18n/eu.po4
-rw-r--r--addons/document_webdav/i18n/fi.po4
-rw-r--r--addons/document_webdav/i18n/fr.po4
-rw-r--r--addons/document_webdav/i18n/gl.po4
-rw-r--r--addons/document_webdav/i18n/gu.po4
-rw-r--r--addons/document_webdav/i18n/hr.po4
-rw-r--r--addons/document_webdav/i18n/hu.po4
-rw-r--r--addons/document_webdav/i18n/id.po4
-rw-r--r--addons/document_webdav/i18n/it.po4
-rw-r--r--addons/document_webdav/i18n/ja.po4
-rw-r--r--addons/document_webdav/i18n/mn.po4
-rw-r--r--addons/document_webdav/i18n/nl.po4
-rw-r--r--addons/document_webdav/i18n/pl.po4
-rw-r--r--addons/document_webdav/i18n/pt.po4
-rw-r--r--addons/document_webdav/i18n/pt_BR.po37
-rw-r--r--addons/document_webdav/i18n/ro.po4
-rw-r--r--addons/document_webdav/i18n/ru.po4
-rw-r--r--addons/document_webdav/i18n/sl.po4
-rw-r--r--addons/document_webdav/i18n/sr.po4
-rw-r--r--addons/document_webdav/i18n/sr@latin.po4
-rw-r--r--addons/document_webdav/i18n/sv.po4
-rw-r--r--addons/document_webdav/i18n/tr.po4
-rw-r--r--addons/document_webdav/i18n/zh_CN.po4
-rwxr-xr-xaddons/document_webdav/test_davclient.py84
-rw-r--r--addons/document_webdav/webdav.py2
-rw-r--r--addons/document_webdav/webdav_server.py28
-rw-r--r--addons/document_webdav/webdav_view.xml17
43 files changed, 217 insertions, 226 deletions
diff --git a/addons/document_webdav/__openerp__.py b/addons/document_webdav/__openerp__.py
index ec50d9301dc..4d39a4e8015 100644
--- a/addons/document_webdav/__openerp__.py
+++ b/addons/document_webdav/__openerp__.py
@@ -40,7 +40,8 @@ With this module, the WebDAV server for documents is activated.
You can then use any compatible browser to remotely see the attachments of OpenObject.
-After installation, the WebDAV server can be controlled by a [webdav] section in the server's config.
+After installation, the WebDAV server can be controlled by a [webdav] section in
+the server's config.
Server Configuration Parameter:
[webdav]
@@ -55,7 +56,7 @@ Server Configuration Parameter:
; these options on
Also implements IETF RFC 5785 for services discovery on a http server,
-which needs explicit configuration in openerp-server.conf, too.
+which needs explicit configuration in openerp-server.conf too.
""",
"depends" : ["base", "document"],
"init_xml" : [],
diff --git a/addons/document_webdav/dav_fs.py b/addons/document_webdav/dav_fs.py
index 772b7600f20..1b826434f74 100644
--- a/addons/document_webdav/dav_fs.py
+++ b/addons/document_webdav/dav_fs.py
@@ -78,13 +78,13 @@ def _str2time(cre):
class BoundStream2(object):
"""Wraps around a seekable buffer, reads a determined range of data
-
+
Note that the supplied stream object MUST support a size() which
should return its data length (in bytes).
-
+
A variation of the class in websrv_lib.py
"""
-
+
def __init__(self, stream, offset=None, length=None, chunk_size=None):
self._stream = stream
self._offset = offset or 0
@@ -98,8 +98,8 @@ class BoundStream2(object):
def read(self, size=-1):
if not self._stream:
- raise IOError(errno.EBADF, "read() without stream")
-
+ raise IOError(errno.EBADF, "read() without stream.")
+
if self._rem_length == 0:
return ''
elif self._rem_length < 0:
@@ -110,7 +110,7 @@ class BoundStream2(object):
rsize = size
if self._chunk_size and self._chunk_size < rsize:
rsize = self._chunk_size
-
+
data = self._stream.read(rsize)
self._rem_length -= len(data)
@@ -136,25 +136,25 @@ class BoundStream2(object):
"""
if whence == os.SEEK_SET:
if pos < 0 or pos > self._length:
- raise IOError(errno.EINVAL,"Cannot seek")
+ raise IOError(errno.EINVAL,"Cannot seek.")
self._stream.seek(pos - self._offset)
self._rem_length = self._length - pos
elif whence == os.SEEK_CUR:
if pos > 0:
if pos > self._rem_length:
- raise IOError(errno.EINVAL,"Cannot seek past end")
+ raise IOError(errno.EINVAL,"Cannot seek past end.")
elif pos < 0:
oldpos = self.tell()
if oldpos + pos < 0:
- raise IOError(errno.EINVAL,"Cannot seek before start")
+ raise IOError(errno.EINVAL,"Cannot seek before start.")
self._stream.seek(pos, os.SEEK_CUR)
self._rem_length -= pos
elif whence == os.SEEK_END:
if pos > 0:
- raise IOError(errno.EINVAL,"Cannot seek past end")
+ raise IOError(errno.EINVAL,"Cannot seek past end.")
else:
if self._length + pos < 0:
- raise IOError(errno.EINVAL,"Cannot seek before start")
+ raise IOError(errno.EINVAL,"Cannot seek before start.")
newpos = self._offset + self._length + pos
self._stream.seek(newpos, os.SEEK_SET)
self._rem_length = 0 - pos
@@ -206,7 +206,7 @@ class openerp_dav_handler(dav_interface):
self.parent.log_error("Cannot %s: %s", opname, str(e))
self.parent.log_message("Exc: %s",traceback.format_exc())
# see par 9.3.1 of rfc
- raise DAV_Error(403, str(e) or 'Not supported at this path')
+ raise DAV_Error(403, str(e) or 'Not supported at this path.')
except EnvironmentError, err:
if cr: cr.close()
import traceback
@@ -218,7 +218,7 @@ class openerp_dav_handler(dav_interface):
if cr: cr.close()
self.parent.log_error("Cannot %s: %s", opname, str(e))
self.parent.log_message("Exc: %s",traceback.format_exc())
- raise default_exc("Operation failed")
+ raise default_exc("Operation failed.")
def _get_dav_lockdiscovery(self, uri):
""" We raise that so that the node API is used """
@@ -400,7 +400,7 @@ class openerp_dav_handler(dav_interface):
domain = None
if filters:
domain = node.get_domain(cr, filters)
-
+
if hasattr(filters, 'getElementsByTagNameNS'):
hrefs = filters.getElementsByTagNameNS('DAV:', 'href')
if hrefs:
@@ -434,7 +434,7 @@ class openerp_dav_handler(dav_interface):
except DAV_Error:
raise
except Exception, e:
- self.parent.log_error("cannot get_children: "+ str(e))
+ self.parent.log_error("Cannot get_children: "+str(e)+".")
raise
finally:
if cr: cr.close()
@@ -488,7 +488,7 @@ class openerp_dav_handler(dav_interface):
if not node:
raise DAV_NotFound2(uri2)
# TODO: if node is a collection, for some specific set of
- # clients ( web browsers; available in node context),
+ # clients ( web browsers; available in node context),
# we may return a pseydo-html page with the directory listing.
try:
res = node.open_data(cr,'r')
@@ -500,15 +500,15 @@ class openerp_dav_handler(dav_interface):
assert start >= 0
if end and end < start:
self.parent.log_error("Invalid range for data: %s-%s" %(start, end))
- raise DAV_Error(416, "Invalid range for data")
+ raise DAV_Error(416, "Invalid range for data.")
if end:
if end >= res.size():
- raise DAV_Error(416, "Requested data exceeds available size")
+ raise DAV_Error(416, "Requested data exceeds available size.")
length = (end + 1) - start
else:
length = res.size() - start
res = BoundStream2(res, offset=start, length=length)
-
+
except TypeError,e:
# for the collections that return this error, the DAV standard
# says we'd better just return 200 OK with empty data
@@ -564,10 +564,10 @@ class openerp_dav_handler(dav_interface):
@memoize(CACHE_SIZE)
def _get_dav_getcontentlength(self, uri):
- """ return the content length of an object """
+ """ return the content length of an object """
self.parent.log_message('get length: %s' % uri)
result = 0
- cr, uid, pool, dbname, uri2 = self.get_cr(uri)
+ cr, uid, pool, dbname, uri2 = self.get_cr(uri)
if not dbname:
if cr: cr.close()
return str(result)
@@ -602,7 +602,7 @@ class openerp_dav_handler(dav_interface):
cr, uid, pool, dbname, uri2 = self.get_cr(uri)
if not dbname:
return time.time()
- try:
+ try:
node = self.uri2object(cr, uid, pool, uri2)
if not node:
raise DAV_NotFound2(uri2)
@@ -623,11 +623,11 @@ class openerp_dav_handler(dav_interface):
@memoize(CACHE_SIZE)
def get_creationdate(self, uri):
- """ return the last modified date of the object """
+ """ return the last modified date of the object """
cr, uid, pool, dbname, uri2 = self.get_cr(uri)
if not dbname:
raise DAV_Error, 409
- try:
+ try:
node = self.uri2object(cr, uid, pool, uri2)
if not node:
raise DAV_NotFound2(uri2)
@@ -643,7 +643,7 @@ class openerp_dav_handler(dav_interface):
if not dbname:
if cr: cr.close()
return 'httpd/unix-directory'
- try:
+ try:
node = self.uri2object(cr, uid, pool, uri2)
if not node:
raise DAV_NotFound2(uri2)
@@ -651,8 +651,8 @@ class openerp_dav_handler(dav_interface):
return result
#raise DAV_NotFound, 'Could not find %s' % path
finally:
- if cr: cr.close()
-
+ if cr: cr.close()
+
def mkcol(self,uri):
""" create a new collection
see par. 9.3 of rfc4918
@@ -661,7 +661,7 @@ class openerp_dav_handler(dav_interface):
cr, uid, pool, dbname, uri2 = self.get_cr(uri)
if not uri2[-1]:
if cr: cr.close()
- raise DAV_Error(409, "Cannot create nameless collection")
+ raise DAV_Error(409, "Cannot create nameless collection.")
if not dbname:
if cr: cr.close()
raise DAV_Error, 409
@@ -672,7 +672,7 @@ class openerp_dav_handler(dav_interface):
nc = node.child(cr, uri2[-1])
if nc:
cr.close()
- raise DAV_Error(405, "Path already exists")
+ raise DAV_Error(405, "Path already exists.")
self._try_function(node.create_child_collection, (cr, uri2[-1]),
"create col %s" % uri2[-1], cr=cr)
cr.commit()
@@ -690,30 +690,30 @@ class openerp_dav_handler(dav_interface):
node = self.uri2object(cr, uid, pool, uri2[:])
except Exception:
node = False
-
+
objname = misc.ustr(uri2[-1])
-
+
ret = None
if not node:
dir_node = self.uri2object(cr, uid, pool, uri2[:-1])
if not dir_node:
cr.close()
- raise DAV_NotFound('Parent folder not found')
+ raise DAV_NotFound('Parent folder not found.')
newchild = self._try_function(dir_node.create_child, (cr, objname, data),
"create %s" % objname, cr=cr)
if not newchild:
cr.commit()
cr.close()
- raise DAV_Error(400, "Failed to create resource")
-
+ raise DAV_Error(400, "Failed to create resource.")
+
uparts=urlparse.urlparse(uri)
fileloc = '/'.join(newchild.full_path())
if isinstance(fileloc, unicode):
fileloc = fileloc.encode('utf-8')
# the uri we get is a mangled one, where the davpath has been removed
davpath = self.parent.get_davpath()
-
+
surl = '%s://%s' % (uparts[0], uparts[1])
uloc = urllib.quote(fileloc)
hurl = False
@@ -727,19 +727,19 @@ class openerp_dav_handler(dav_interface):
ret = (str(hurl), etag)
else:
self._try_function(node.set_data, (cr, data), "save %s" % objname, cr=cr)
-
+
cr.commit()
cr.close()
return ret
def rmcol(self,uri):
""" delete a collection """
- cr, uid, pool, dbname, uri2 = self.get_cr(uri)
+ cr, uid, pool, dbname, uri2 = self.get_cr(uri)
if not dbname:
if cr: cr.close()
raise DAV_Error, 409
- node = self.uri2object(cr, uid, pool, uri2)
+ node = self.uri2object(cr, uid, pool, uri2)
self._try_function(node.rmcol, (cr,), "rmcol %s" % uri, cr=cr)
cr.commit()
@@ -748,14 +748,14 @@ class openerp_dav_handler(dav_interface):
def rm(self,uri):
cr, uid, pool,dbname, uri2 = self.get_cr(uri)
- if not dbname:
+ if not dbname:
if cr: cr.close()
raise DAV_Error, 409
node = self.uri2object(cr, uid, pool, uri2)
res = self._try_function(node.rm, (cr,), "rm %s" % uri, cr=cr)
if not res:
if cr: cr.close()
- raise OSError(1, 'Operation not permited.')
+ raise OSError(1, 'Invalid Action!')
cr.commit()
cr.close()
return 204
@@ -922,8 +922,8 @@ class openerp_dav_handler(dav_interface):
return result
def unlock(self, uri, token):
- """ Unlock a resource from that token
-
+ """ Unlock a resource from that token
+
@return True if unlocked, False if no lock existed, Exceptions
"""
cr, uid, pool, dbname, uri2 = self.get_cr(uri)
@@ -937,7 +937,7 @@ class openerp_dav_handler(dav_interface):
except AttributeError:
# perhaps the node doesn't support locks
cr.close()
- raise DAV_Error(400, 'No locks for this resource')
+ raise DAV_Error(400, 'No locks for this resource.')
res = self._try_function(node_fn, (cr, token), "unlock %s" % uri, cr=cr)
cr.commit()
@@ -959,14 +959,14 @@ class openerp_dav_handler(dav_interface):
node = self.uri2object(cr, uid, pool, uri2[:])
except Exception:
node = False
-
+
objname = misc.ustr(uri2[-1])
-
+
if not node:
dir_node = self.uri2object(cr, uid, pool, uri2[:-1])
if not dir_node:
cr.close()
- raise DAV_NotFound('Parent folder not found')
+ raise DAV_NotFound('Parent folder not found.')
# We create a new node (file) but with empty data=None,
# as in RFC4918 p. 9.10.4
@@ -975,8 +975,8 @@ class openerp_dav_handler(dav_interface):
if not node:
cr.commit()
cr.close()
- raise DAV_Error(400, "Failed to create resource")
-
+ raise DAV_Error(400, "Failed to create resource.")
+
created = True
try:
@@ -984,7 +984,7 @@ class openerp_dav_handler(dav_interface):
except AttributeError:
# perhaps the node doesn't support locks
cr.close()
- raise DAV_Error(400, 'No locks for this resource')
+ raise DAV_Error(400, 'No locks for this resource.')
# Obtain the lock on the node
lres, pid, token = self._try_function(node_fn, (cr, lock_data), "lock %s" % objname, cr=cr)
@@ -992,10 +992,10 @@ class openerp_dav_handler(dav_interface):
if not lres:
cr.commit()
cr.close()
- raise DAV_Error(423, "Resource already locked")
-
+ raise DAV_Error(423, "Resource already locked.")
+
assert isinstance(lres, list), 'lres: %s' % repr(lres)
-
+
try:
data = mk_lock_response(self, uri, lres)
cr.commit()
diff --git a/addons/document_webdav/document_webdav.py b/addons/document_webdav/document_webdav.py
index da463c9eb1b..f53353dd43c 100644
--- a/addons/document_webdav/document_webdav.py
+++ b/addons/document_webdav/document_webdav.py
@@ -43,7 +43,7 @@ class document_davdir(osv.osv):
elif dbro.type == 'ressource':
return nodes.node_res_dir
else:
- raise ValueError("dir node for %s type", dbro.type)
+ raise ValueError("Directory node for %s type.", dbro.type)
def _prepare_context(self, cr, uid, nctx, context=None):
nctx.node_file_class = nodes.node_file
@@ -67,18 +67,18 @@ document_davdir()
class dav_dir_property(osv.osv):
""" Arbitrary WebDAV properties, attached to document.directories.
-
+
Some DAV properties have to be settable at directories, depending
on the database directory structure.
-
+
Example would be the principal-URL.
-
+
There _can_ be properties without a directory, which means that they
globally apply to all the directories (aka. collections) of the
present database.
"""
_name = 'document.webdav.dir.property'
-
+
_columns = {
'create_date': fields.datetime('Date Created', readonly=True),
'create_uid': fields.many2one('res.users', 'Creator', readonly=True),
@@ -90,25 +90,25 @@ class dav_dir_property(osv.osv):
'value': fields.text('Value'),
'do_subst': fields.boolean('Substitute', required=True),
}
-
+
_defaults = {
'do_subst': False,
}
-
+
dav_dir_property()
class dav_file_property(osv.osv):
""" Arbitrary WebDAV properties, attached to ir.attachments.
-
+
A special case is the locks that can be applied on file nodes.
-
+
There _can_ be properties without a file (RFC?), which means that they
globally apply to all the attachments of the present database.
-
+
TODO access permissions, per property.
"""
_name = 'document.webdav.file.property'
-
+
_columns = {
'create_date': fields.datetime('Date Created', readonly=True),
'create_uid': fields.many2one('res.users', 'Creator', readonly=True),
@@ -120,11 +120,11 @@ class dav_file_property(osv.osv):
'value': fields.text('Value'),
'do_subst': fields.boolean('Substitute', required=True),
}
-
+
_defaults = {
'do_subst': False,
}
-
+
dav_file_property()
#eof
diff --git a/addons/document_webdav/i18n/ar.po b/addons/document_webdav/i18n/ar.po
index 5cccadf73fe..be15d1886f1 100644
--- a/addons/document_webdav/i18n/ar.po
+++ b/addons/document_webdav/i18n/ar.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:13+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/bg.po b/addons/document_webdav/i18n/bg.po
index 1715e422103..fde05f6faab 100644
--- a/addons/document_webdav/i18n/bg.po
+++ b/addons/document_webdav/i18n/bg.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:13+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/ca.po b/addons/document_webdav/i18n/ca.po
index 517c9844197..0d1409a37c7 100644
--- a/addons/document_webdav/i18n/ca.po
+++ b/addons/document_webdav/i18n/ca.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:13+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/cs.po b/addons/document_webdav/i18n/cs.po
index 8cc548c26ca..d98c27df5b2 100644
--- a/addons/document_webdav/i18n/cs.po
+++ b/addons/document_webdav/i18n/cs.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:13+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/da.po b/addons/document_webdav/i18n/da.po
index 173990f7427..79316ecf4ed 100644
--- a/addons/document_webdav/i18n/da.po
+++ b/addons/document_webdav/i18n/da.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:13+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/de.po b/addons/document_webdav/i18n/de.po
index ab78683e27a..be4b5dbd216 100644
--- a/addons/document_webdav/i18n/de.po
+++ b/addons/document_webdav/i18n/de.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:13+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/el.po b/addons/document_webdav/i18n/el.po
index 23497def081..cf4e4358a59 100644
--- a/addons/document_webdav/i18n/el.po
+++ b/addons/document_webdav/i18n/el.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/en_GB.po b/addons/document_webdav/i18n/en_GB.po
index 9197218fd2b..130cd04e8e9 100644
--- a/addons/document_webdav/i18n/en_GB.po
+++ b/addons/document_webdav/i18n/en_GB.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/es.po b/addons/document_webdav/i18n/es.po
index d13f2ed4d2e..0fddb6b85cc 100644
--- a/addons/document_webdav/i18n/es.po
+++ b/addons/document_webdav/i18n/es.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/es_CR.po b/addons/document_webdav/i18n/es_CR.po
index 437587a00e8..8405f5b3e09 100644
--- a/addons/document_webdav/i18n/es_CR.po
+++ b/addons/document_webdav/i18n/es_CR.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
"Language: es\n"
#. module: document_webdav
diff --git a/addons/document_webdav/i18n/es_EC.po b/addons/document_webdav/i18n/es_EC.po
index 008e9067bec..69731b31a33 100644
--- a/addons/document_webdav/i18n/es_EC.po
+++ b/addons/document_webdav/i18n/es_EC.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/es_PY.po b/addons/document_webdav/i18n/es_PY.po
index d03fb657631..53990abd187 100644
--- a/addons/document_webdav/i18n/es_PY.po
+++ b/addons/document_webdav/i18n/es_PY.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/et.po b/addons/document_webdav/i18n/et.po
index e7b20737680..36ff37eab87 100644
--- a/addons/document_webdav/i18n/et.po
+++ b/addons/document_webdav/i18n/et.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:13+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/eu.po b/addons/document_webdav/i18n/eu.po
index 74492ab4747..0abc054c139 100644
--- a/addons/document_webdav/i18n/eu.po
+++ b/addons/document_webdav/i18n/eu.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:13+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/fi.po b/addons/document_webdav/i18n/fi.po
index 8385e9da222..053f8bed734 100644
--- a/addons/document_webdav/i18n/fi.po
+++ b/addons/document_webdav/i18n/fi.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:13+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/fr.po b/addons/document_webdav/i18n/fr.po
index 030bd678e50..7b15e2a15c6 100644
--- a/addons/document_webdav/i18n/fr.po
+++ b/addons/document_webdav/i18n/fr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:13+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/gl.po b/addons/document_webdav/i18n/gl.po
index 953287090e4..d048adf1b40 100644
--- a/addons/document_webdav/i18n/gl.po
+++ b/addons/document_webdav/i18n/gl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/gu.po b/addons/document_webdav/i18n/gu.po
index 6a02ffc6226..b5768300597 100644
--- a/addons/document_webdav/i18n/gu.po
+++ b/addons/document_webdav/i18n/gu.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/hr.po b/addons/document_webdav/i18n/hr.po
index 31713bc4981..ac51f82627e 100644
--- a/addons/document_webdav/i18n/hr.po
+++ b/addons/document_webdav/i18n/hr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/hu.po b/addons/document_webdav/i18n/hu.po
index dd15a00d2e2..21d0c9974af 100644
--- a/addons/document_webdav/i18n/hu.po
+++ b/addons/document_webdav/i18n/hu.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/id.po b/addons/document_webdav/i18n/id.po
index b62de6a1076..5ef97a916fe 100644
--- a/addons/document_webdav/i18n/id.po
+++ b/addons/document_webdav/i18n/id.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/it.po b/addons/document_webdav/i18n/it.po
index a72787ccdaf..b6ca5326a8d 100644
--- a/addons/document_webdav/i18n/it.po
+++ b/addons/document_webdav/i18n/it.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/ja.po b/addons/document_webdav/i18n/ja.po
index b04a7a9b6c3..179a2772de7 100644
--- a/addons/document_webdav/i18n/ja.po
+++ b/addons/document_webdav/i18n/ja.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/mn.po b/addons/document_webdav/i18n/mn.po
index c3434b51c18..5734661e2ec 100644
--- a/addons/document_webdav/i18n/mn.po
+++ b/addons/document_webdav/i18n/mn.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/nl.po b/addons/document_webdav/i18n/nl.po
index c5cb3b186e3..1b48cc29f65 100644
--- a/addons/document_webdav/i18n/nl.po
+++ b/addons/document_webdav/i18n/nl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:13+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/pl.po b/addons/document_webdav/i18n/pl.po
index 3e44ddb1d53..7805c315607 100644
--- a/addons/document_webdav/i18n/pl.po
+++ b/addons/document_webdav/i18n/pl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/pt.po b/addons/document_webdav/i18n/pt.po
index 5325b09e526..fe61c9618ea 100644
--- a/addons/document_webdav/i18n/pt.po
+++ b/addons/document_webdav/i18n/pt.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/pt_BR.po b/addons/document_webdav/i18n/pt_BR.po
index d6d8cc74915..466d4a2a85d 100644
--- a/addons/document_webdav/i18n/pt_BR.po
+++ b/addons/document_webdav/i18n/pt_BR.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
-"PO-Revision-Date: 2011-01-29 15:36+0000\n"
-"Last-Translator: Adriano Prado <adrianojprado@hotmail.com>\n"
+"PO-Revision-Date: 2012-07-28 18:55+0000\n"
+"Last-Translator: Fábio Martinelli <webmaster@guaru.net>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
@@ -26,7 +26,7 @@ msgstr "Dada de Criação"
#. module: document_webdav
#: model:ir.ui.menu,name:document_webdav.menu_document_props
msgid "Documents"
-msgstr ""
+msgstr "Documentos"
#. module: document_webdav
#: constraint:document.directory:0
@@ -45,17 +45,17 @@ msgstr "Procurar Propriedades dos Documentos"
#: view:document.webdav.file.property:0
#: field:document.webdav.file.property,namespace:0
msgid "Namespace"
-msgstr ""
+msgstr "Namespace"
#. module: document_webdav
#: field:document.directory,dav_prop_ids:0
msgid "DAV properties"
-msgstr ""
+msgstr "Propriedades DAV"
#. module: document_webdav
#: model:ir.model,name:document_webdav.model_document_webdav_file_property
msgid "document.webdav.file.property"
-msgstr ""
+msgstr "document.webdav.file.property"
#. module: document_webdav
#: view:document.webdav.dir.property:0
@@ -66,18 +66,18 @@ msgstr "Agrupar Por..."
#. module: document_webdav
#: view:document.directory:0
msgid "These properties will be added to WebDAV requests"
-msgstr ""
+msgstr "Estas propriedades serão adicionadas para requisições WebDAV"
#. module: document_webdav
#: model:ir.actions.act_window,name:document_webdav.action_file_props_form
msgid "DAV Properties for Documents"
-msgstr ""
+msgstr "Propriedades DAV para Documentos"
#. module: document_webdav
#: code:addons/document_webdav/webdav.py:37
#, python-format
msgid "PyWebDAV Import Error!"
-msgstr ""
+msgstr "Erro de Iimportação PyWEbDAV!"
#. module: document_webdav
#: view:document.webdav.file.property:0
@@ -88,7 +88,7 @@ msgstr "Documento"
#. module: document_webdav
#: model:ir.ui.menu,name:document_webdav.menu_folder_props
msgid "Folders"
-msgstr ""
+msgstr "Pastas"
#. module: document_webdav
#: sql_constraint:document.directory:0
@@ -103,7 +103,7 @@ msgstr "Contexo dinâmico"
#. module: document_webdav
#: view:document.directory:0
msgid "WebDAV properties"
-msgstr ""
+msgstr "Propriedades WebDAV"
#. module: document_webdav
#: sql_constraint:document.directory:0
@@ -118,11 +118,14 @@ msgid ""
"http://code.google.com/p/pywebdav/downloads/detail?name=PyWebDAV-"
"0.9.4.tar.gz&can=2&q=/"
msgstr ""
+"Por favor instale o PyWebDAV de "
+"http://code.google.com/p/pywebdav/downloads/detail?name=PyWebDAV-"
+"0.9.4.tar.gz&can=2&q=/"
#. module: document_webdav
#: model:ir.actions.act_window,name:document_webdav.action_dir_props_form
msgid "DAV Properties for Folders"
-msgstr ""
+msgstr "Propriedades DAV para as pastas"
#. module: document_webdav
#: view:document.directory:0
@@ -140,7 +143,7 @@ msgstr "Nome"
#. module: document_webdav
#: model:ir.model,name:document_webdav.model_document_webdav_dir_property
msgid "document.webdav.dir.property"
-msgstr ""
+msgstr "document.webdav.dir.property"
#. module: document_webdav
#: field:document.webdav.dir.property,value:0
@@ -180,12 +183,12 @@ msgstr "Criador"
#. module: document_webdav
#: model:ir.ui.menu,name:document_webdav.menu_properties
msgid "DAV Properties"
-msgstr ""
+msgstr "Propriedades DAV"
#. module: document_webdav
#: sql_constraint:document.directory:0
msgid "Directory must have a parent or a storage"
-msgstr ""
+msgstr "O diretório precisa ter um pai ou um armazenamento"
#. module: document_webdav
#: field:document.webdav.dir.property,do_subst:0
diff --git a/addons/document_webdav/i18n/ro.po b/addons/document_webdav/i18n/ro.po
index 3a8e813e999..9345eaa57d8 100644
--- a/addons/document_webdav/i18n/ro.po
+++ b/addons/document_webdav/i18n/ro.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/ru.po b/addons/document_webdav/i18n/ru.po
index 1378090be02..deef40433db 100644
--- a/addons/document_webdav/i18n/ru.po
+++ b/addons/document_webdav/i18n/ru.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/sl.po b/addons/document_webdav/i18n/sl.po
index 72f0f56d359..d43c0e4ede7 100644
--- a/addons/document_webdav/i18n/sl.po
+++ b/addons/document_webdav/i18n/sl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/sr.po b/addons/document_webdav/i18n/sr.po
index 975f83d2bbb..1667ac3f0c8 100644
--- a/addons/document_webdav/i18n/sr.po
+++ b/addons/document_webdav/i18n/sr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/sr@latin.po b/addons/document_webdav/i18n/sr@latin.po
index b71777016d8..5d4236ffd0f 100644
--- a/addons/document_webdav/i18n/sr@latin.po
+++ b/addons/document_webdav/i18n/sr@latin.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/sv.po b/addons/document_webdav/i18n/sv.po
index 9484ee33386..1281ccaf622 100644
--- a/addons/document_webdav/i18n/sv.po
+++ b/addons/document_webdav/i18n/sv.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/tr.po b/addons/document_webdav/i18n/tr.po
index a111fe11d3a..f15d2c54680 100644
--- a/addons/document_webdav/i18n/tr.po
+++ b/addons/document_webdav/i18n/tr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/i18n/zh_CN.po b/addons/document_webdav/i18n/zh_CN.po
index cf7af2836b5..edfff77e05a 100644
--- a/addons/document_webdav/i18n/zh_CN.po
+++ b/addons/document_webdav/i18n/zh_CN.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-14 06:14+0000\n"
-"X-Generator: Launchpad (build 15614)\n"
+"X-Launchpad-Export-Date: 2012-08-07 05:25+0000\n"
+"X-Generator: Launchpad (build 15745)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
diff --git a/addons/document_webdav/test_davclient.py b/addons/document_webdav/test_davclient.py
index a4dda231bd8..f1f2e58c835 100755
--- a/addons/document_webdav/test_davclient.py
+++ b/addons/document_webdav/test_davclient.py
@@ -69,9 +69,9 @@ class PersistentTransport(Transport):
host, extra_headers, x509 = Transport.get_host_info(self,host)
if extra_headers == None:
extra_headers = []
-
+
extra_headers.append( ( 'Connection', 'keep-alive' ))
-
+
return host, extra_headers, x509
def _parse_response(self, file, sock, response):
@@ -122,9 +122,9 @@ class PersistentTransport(Transport):
resp = h._conn.getresponse()
# TODO: except BadStatusLine, e:
-
+
errcode, errmsg, headers = resp.status, resp.reason, resp.msg
-
+
if errcode != 200:
raise ProtocolError(
@@ -145,7 +145,7 @@ class PersistentTransport(Transport):
class CompressedTransport(PersistentTransport):
def send_content(self, connection, request_body):
connection.putheader("Content-Type", "text/xml")
-
+
if len(request_body) > 512 or True:
buffer = StringIO.StringIO()
output = gzip.GzipFile(mode='wb', fileobj=buffer)
@@ -176,7 +176,7 @@ class SafePersistentTransport(PersistentTransport):
class AuthClient(object):
def getAuth(self, atype, realm):
raise NotImplementedError("Cannot authenticate for %s" % atype)
-
+
def resolveFailedRealm(self, realm):
""" Called when, using a known auth type, the realm is not in cache
"""
@@ -195,7 +195,7 @@ class BasicAuthClient(AuthClient):
_logger.debug("missing key: \"%s\"" % realm)
self.resolveFailedRealm(realm)
return 'Basic '+ self._realm_dict[realm]
-
+
def addLogin(self, realm, username, passwd):
""" Add some known username/password for a specific login.
This function should be called once, for each realm
@@ -210,7 +210,7 @@ class BasicAuthClient(AuthClient):
class addAuthTransport:
""" Intermediate class that authentication algorithm to http transport
"""
-
+
def setAuthClient(self, authobj):
""" Set the authentication client object.
This method must be called before any request is issued, that
@@ -218,7 +218,7 @@ class addAuthTransport:
"""
assert isinstance(authobj, AuthClient)
self._auth_client = authobj
-
+
def request(self, host, handler, request_body, verbose=0):
# issue XML-RPC request
@@ -226,7 +226,7 @@ class addAuthTransport:
h = self.make_connection(host)
if verbose:
h.set_debuglevel(1)
-
+
tries = 0
atype = None
realm = None
@@ -246,7 +246,7 @@ class addAuthTransport:
resp = h._conn.getresponse()
# except BadStatusLine, e:
tries += 1
-
+
if resp.status == 401:
if 'www-authenticate' in resp.msg:
(atype,realm) = resp.msg.getheader('www-authenticate').split(' ',1)
@@ -258,7 +258,7 @@ class addAuthTransport:
_logger.debug("Resp: %r %r", resp.version,resp.isclosed(), resp.will_close)
_logger.debug("Want to do auth %s for realm %s", atype, realm)
if atype != 'Basic':
- raise ProtocolError(host+handler, 403,
+ raise ProtocolError(host+handler, 403,
"Unknown authentication method: %s" % atype, resp.msg)
continue # with the outer while loop
else:
@@ -268,17 +268,17 @@ class addAuthTransport:
if resp.status != 200:
raise ProtocolError( host + handler,
resp.status, resp.reason, resp.msg )
-
+
self.verbose = verbose
-
+
try:
sock = h._conn.sock
except AttributeError:
sock = None
-
+
return self._parse_response(h.getfile(), sock, resp)
- raise ProtocolError(host+handler, 403, "No authentication",'')
+ raise ProtocolError(host+handler, 403, "No authentication.",'')
class PersistentAuthTransport(addAuthTransport,PersistentTransport):
pass
@@ -302,7 +302,7 @@ class HTTPSConnection(httplib.HTTPSConnection):
self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file,
ca_certs=ca_certs,
cert_reqs=cert_reqs)
-
+
def getpeercert(self):
import ssl
@@ -316,14 +316,14 @@ class HTTPSConnection(httplib.HTTPSConnection):
if cert[0-lf] != '\n':
cert = cert[:0-lf]+'\n'+cert[0-lf:]
_logger.debug("len-footer: %s cert: %r", lf, cert[0-lf])
-
+
return cert
class DAVClient(object):
"""An instance of a WebDAV client, connected to the OpenERP server
"""
-
+
def __init__(self, user=None, passwd=None, dbg=0, use_ssl=False, useragent=False, timeout=None):
if use_ssl:
self.host = config.get_misc('httpsd', 'interface', False)
@@ -353,10 +353,10 @@ class DAVClient(object):
def get_creds(self, obj, cr, uid):
"""Read back the user credentials from cr, uid
-
+
@param obj is any orm object, in order to use its pool
@param uid is the numeric id, which we will try to reverse resolve
-
+
note: this is a hackish way to get the credentials. It is expected
to break if "base_crypt" is used.
"""
@@ -366,7 +366,7 @@ class DAVClient(object):
self.user = res[0]['login']
self.passwd = res[0]['password']
if self.passwd.startswith('$1$'):
- # md5 by base crypt. We cannot decode, wild guess
+ # md5 by base crypt. We cannot decode, wild guess
# that passwd = login
self.passwd = self.user
return True
@@ -402,7 +402,7 @@ class DAVClient(object):
r1 = conn.getresponse()
except httplib.BadStatusLine, bsl:
log.warning("Bad status line: %s", bsl.line)
- raise Exception('Bad status line')
+ raise Exception('Bad status line.')
if r1.status == 401: # and r1.headers:
if 'www-authenticate' in r1.msg:
(atype,realm) = r1.msg.getheader('www-authenticate').split(' ',1)
@@ -415,7 +415,7 @@ class DAVClient(object):
auths = base64.encodestring(self.user + ':' + self.passwd)
if auths[-1] == "\n":
auths = auths[:-1]
- hdrs['Authorization']= 'Basic '+ auths
+ hdrs['Authorization']= 'Basic '+ auths
#sleep(1)
conn.request(method, path, body, hdrs )
r1 = conn.getresponse()
@@ -437,7 +437,7 @@ class DAVClient(object):
doc = xml.dom.minidom.parseString(data1)
_logger.debug("XML Body:\n %s", doc.toprettyxml(indent="\t"))
except Exception:
- _logger.warning("could not print xml", exc_info=True)
+ _logger.warning("Cannot print XML.", exc_info=True)
pass
conn.close()
return r1.status, r1.msg, data1
@@ -475,10 +475,10 @@ class DAVClient(object):
assert s == 200, "Status: %r" % s
assert 'OPTIONS' in m.getheader('Allow')
_logger.debug('Options: %r', m.getheader('Allow'))
-
+
if expect:
self._assert_headers(expect, m)
-
+
def _parse_prop_response(self, data):
""" Parse a propfind/propname response
"""
@@ -488,7 +488,7 @@ class DAVClient(object):
if node.nodeType == node.TEXT_NODE:
rc.append(node.data)
return ''.join(rc)
-
+
def getElements(node, namespaces=None, strict=False):
for cnod in node.childNodes:
if cnod.nodeType != node.ELEMENT_NODE:
@@ -534,10 +534,10 @@ class DAVClient(object):
rstatus = int(sta)
else:
_logger.debug("What is <%s> inside a <propstat>?", pno.tagName)
-
+
else:
_logger.debug("Unknown node: %s", cno.tagName)
-
+
res.setdefault(href,[]).append((status, res_nss))
return res
@@ -558,7 +558,7 @@ class DAVClient(object):
propstr += '<ns%d:%s xmlns:ns%d="%s" />' %(nscount, p, nscount, ns)
nscount += 1
propstr += '</prop>'
-
+
body="""<?xml version="1.0" encoding="utf-8"?>
<propfind xmlns="DAV:">%s</propfind>""" % propstr
hdrs = { 'Content-Type': 'text/xml; charset=utf-8',
@@ -566,7 +566,7 @@ class DAVClient(object):
'Depth': depth,
}
- s, m, d = self._http_request(self.davpath + path, method='PROPFIND',
+ s, m, d = self._http_request(self.davpath + path, method='PROPFIND',
hdrs=hdrs, body=body)
assert s == 207, "Bad status: %s" % s
ctype = m.getheader('Content-Type').split(';',1)[0]
@@ -578,7 +578,7 @@ class DAVClient(object):
else:
assert len(res) >= 1
return res
-
+
def gd_propname(self, path, depth=0):
body="""<?xml version="1.0" encoding="utf-8"?>
@@ -587,7 +587,7 @@ class DAVClient(object):
'Accept': 'text/xml',
'Depth': depth
}
- s, m, d = self._http_request(self.davpath + path, method='PROPFIND',
+ s, m, d = self._http_request(self.davpath + path, method='PROPFIND',
hdrs=hdrs, body=body)
assert s == 207, "Bad status: %s" % s
ctype = m.getheader('Content-Type').split(';',1)[0]
@@ -605,7 +605,7 @@ class DAVClient(object):
def gd_lsl(self, path):
""" Return a list of 'ls -l' kind of data for a folder
-
+
This is based on propfind.
"""
@@ -616,7 +616,7 @@ class DAVClient(object):
propnames = [ l[1] for l in lspairs]
propres = self.gd_propfind(path, props=propnames, depth=1)
-
+
res = []
for href, pr in propres.items():
lsline = {}
@@ -638,9 +638,9 @@ class DAVClient(object):
lsline[lsp[0]] = lsp[2]
else:
_logger.debug("Strange status: %s", st)
-
+
res.append(lsline)
-
+
return res
def gd_get(self, path, crange=None, mime=None, compare=None):
@@ -651,7 +651,7 @@ class DAVClient(object):
if isinstance(crange, tuple):
crange = [crange,]
if not isinstance(crange, list):
- raise TypeError("Range must be a tuple or list of tuples")
+ raise TypeError("Range must be a tuple or list of tuples.")
rs = []
for r in crange:
rs.append('%d-%d' % r)
@@ -683,13 +683,13 @@ class DAVClient(object):
return ctype, rrange, d
def gd_put(self, path, body=None, srcpath=None, mime=None, noclobber=False, ):
- """ HTTP PUT
+ """ HTTP PUT
@param noclobber will prevent overwritting a resource (If-None-Match)
@param mime will set the content-type
"""
hdrs = { }
if not (body or srcpath):
- raise ValueError("PUT must have something to send")
+ raise ValueError("PUT must have something to send.")
if (not body) and srcpath:
fd = open(srcpath, 'rb')
body = fd.read()
@@ -698,7 +698,7 @@ class DAVClient(object):
hdrs['Content-Type'] = mime
if noclobber:
hdrs['If-None-Match'] = '*'
- s, m, d = self._http_request(self.davpath + path, method='PUT',
+ s, m, d = self._http_request(self.davpath + path, method='PUT',
hdrs=hdrs, body=body)
assert s == (201), "Bad status: %s" % s
etag = m.getheader('ETag')
diff --git a/addons/document_webdav/webdav.py b/addons/document_webdav/webdav.py
index baa394e94a1..903dd6a16ba 100644
--- a/addons/document_webdav/webdav.py
+++ b/addons/document_webdav/webdav.py
@@ -65,7 +65,7 @@ class Prop2xml(object):
def createText2Node(self, data):
if not isinstance(data, StringTypes):
- raise TypeError, "node contents must be a string"
+ raise TypeError, "Node contents must be a string."
t = Text2()
t.data = data
t.ownerDocument = self.doc
diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py
index 65ebb49ff5f..28909e61167 100644
--- a/addons/document_webdav/webdav_server.py
+++ b/addons/document_webdav/webdav_server.py
@@ -73,7 +73,7 @@ def OpenDAVConfig(**kw):
class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler):
verbose = False
-
+
protocol_version = 'HTTP/1.1'
_HTTP_OPTIONS= { 'DAV' : ['1', '2'],
'Allow' : [ 'GET', 'HEAD', 'COPY', 'MOVE', 'POST', 'PUT',
@@ -119,7 +119,7 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler):
if up.path.startswith(self.davpath):
self.headers['Destination'] = up.path[len(self.davpath):]
else:
- raise DAV_Forbidden("Not allowed to copy/move outside webdav path")
+ raise DAV_Forbidden("Not allowed to copy/move outside webdav path.")
# TODO: locks
DAVRequestHandler.copymove(self, CLASS)
@@ -304,7 +304,7 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler):
res = dc.unlock(uri, token)
except DAV_Error, (ec, dd):
return self.send_status(ec, dd)
-
+
if res == True:
self.send_body(None, '204', 'OK', 'Resource unlocked.')
else:
@@ -338,7 +338,7 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler):
if isinstance(ldif, list):
if len(ldif) !=1 or (not isinstance(ldif[0], TagList)) \
or len(ldif[0].list) != 1:
- raise DAV_Error(400, "Cannot accept multiple tokens")
+ raise DAV_Error(400, "Cannot accept multiple tokens.")
ldif = ldif[0].list[0]
if ldif[0] == '<' and ldif[-1] == '>':
ldif = ldif[1:-1]
@@ -352,7 +352,7 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler):
lock_data.update(self._lock_unlock_parse(body))
if lock_data['refresh'] and not lock_data.get('token', False):
- raise DAV_Error(400, 'Lock refresh must specify token')
+ raise DAV_Error(400, 'Lock refresh must specify token.')
lock_data['depth'] = depth
@@ -487,7 +487,7 @@ class dummy_dav_interface(object):
class DAVStaticHandler(http_server.StaticHTTPHandler):
""" A variant of the Static handler, which will serve dummy DAV requests
"""
-
+
verbose = False
protocol_version = 'HTTP/1.1'
_HTTP_OPTIONS= { 'DAV' : ['1', '2'],
@@ -503,13 +503,13 @@ class DAVStaticHandler(http_server.StaticHTTPHandler):
self.end_headers()
if hasattr(self, '_flush'):
self._flush()
-
+
if self.command != 'HEAD':
self.wfile.write(content)
def do_PROPFIND(self):
"""Answer to PROPFIND with generic data.
-
+
A rough copy of python-webdav's do_PROPFIND, but hacked to work
statically.
"""
@@ -575,7 +575,7 @@ try:
handler._config = conf
reg_http_service(directory, DAVHandler, DAVAuthProvider)
_logger.info("WebDAV service registered at path: %s/ "% directory)
-
+
if not (config.get_misc('webdav', 'no_root_hack', False)):
# Now, replace the static http handler with the dav-enabled one.
# If a static-http service has been specified for our server, then
@@ -592,7 +592,7 @@ try:
# an _ugly_ hack: we put that dir back in tools.config.misc, so that
# the StaticHttpHandler can find its dir_path.
config.misc.setdefault('static-http',{})['dir_path'] = dir_path
-
+
reg_http_service('/', DAVStaticHandler)
except Exception, e:
@@ -617,10 +617,10 @@ def init_well_known():
init_well_known()
class PrincipalsRedirect(RedirectHTTPHandler):
-
-
+
+
redirect_paths = {}
-
+
def _find_redirect(self):
for b, r in self.redirect_paths.items():
if self.path.startswith(b):
@@ -628,7 +628,7 @@ class PrincipalsRedirect(RedirectHTTPHandler):
return False
def init_principals_redirect():
- """ Some devices like the iPhone will look under /principals/users/xxx for
+ """ Some devices like the iPhone will look under /principals/users/xxx for
the user's properties. In OpenERP we _cannot_ have a stray /principals/...
working path, since we have a database path and the /webdav/ component. So,
the best solution is to redirect the url with 301. Luckily, it does work in
diff --git a/addons/document_webdav/webdav_view.xml b/addons/document_webdav/webdav_view.xml
index 44af9f2af3a..5a0cb75274e 100644
--- a/addons/document_webdav/webdav_view.xml
+++ b/addons/document_webdav/webdav_view.xml
@@ -5,7 +5,6 @@
<record model="ir.ui.view" id="view_dir_props_form">
<field name="name">document.webdav.dir.property.form</field>
<field name="model">document.webdav.dir.property</field>
- <field name="type">form</field>
<field name="arch" type="xml">
<form string="Properties">
<group col="4">
@@ -22,7 +21,6 @@
<record model="ir.ui.view" id="view_dir_props_tree">
<field name="name">document.webdav.dir.property.tree</field>
<field name="model">document.webdav.dir.property</field>
- <field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Properties" toolbar="1">
<field name="dir_id" />
@@ -35,13 +33,9 @@
<record id="view_dir_props_filter" model="ir.ui.view">
<field name="name">Search View: Directory DAV properties</field>
<field name="model">document.webdav.dir.property</field>
- <field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Document properties">
- <field name="name"
- filter_domain="['|', ('name','ilike',self), ('namespace','ilike',self)]"
- string="Document property"/>
- <newline/>
+ <field name="name" filter_domain="['|', ('name','ilike',self), ('namespace','ilike',self)]" string="Document property"/>
<group expand="0" string="Group By..." groups="base.group_no_one">
<filter string="Dir" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'dir_id'}"/>
<filter string="Namespace" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'namespace'}"/>
@@ -76,7 +70,6 @@
<field name="name">document.directory.webdav.inherit</field>
<field name="model">document.directory</field>
<field name="inherit_id" ref="document.view_document_directory_form" />
- <field name="type">form</field>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page[@string='Dynamic context']" position="after" version="7.0">
<page string="WebDAV properties">
@@ -106,7 +99,6 @@
<record model="ir.ui.view" id="view_file_props_form">
<field name="name">document.webdav.file.property.form</field>
<field name="model">document.webdav.file.property</field>
- <field name="type">form</field>
<field name="arch" type="xml">
<form string="Properties">
<group col="4">
@@ -124,7 +116,6 @@
<record model="ir.ui.view" id="view_file_props_tree">
<field name="name">document.webdav.file.property.tree</field>
<field name="model">document.webdav.file.property</field>
- <field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Properties" toolbar="1">
<field name="file_id" />
@@ -137,13 +128,9 @@
<record id="view_file_props_filter" model="ir.ui.view">
<field name="name">Search View: File DAV properties</field>
<field name="model">document.webdav.file.property</field>
- <field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Document properties">
- <field name="name"
- filter_domain="['|', ('name','ilike',self), ('namespace','ilike',self)]"
- string="Document Property"/>
- <newline/>
+ <field name="name" filter_domain="['|', ('name','ilike',self), ('namespace','ilike',self)]" string="Document Property"/>
<group expand="0" string="Group By..." groups="base.group_no_one">
<filter string="Document" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'file_id'}"/>
<filter string="Namespace" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'namespace'}"/>