summaryrefslogtreecommitdiff
path: root/addons/document_webdav
diff options
context:
space:
mode:
authorP. Christeas <p_christ@hol.gr>2010-07-29 16:39:38 +0300
committerP. Christeas <p_christ@hol.gr>2010-07-29 16:39:38 +0300
commit71ae841d452da8e081bf3a82404f271acb29d337 (patch)
tree78c1c355fefa27d0130abf46c63616a23fdc9a28 /addons/document_webdav
parent780258d5675bd01bfb12597753fe6dcd860be5bb (diff)
Doc Webdav: better exceptions, close cursors.
bzr revid: p_christ@hol.gr-20100729133938-fo37j2dftn7755gg
Diffstat (limited to 'addons/document_webdav')
-rw-r--r--addons/document_webdav/dav_fs.py34
-rw-r--r--addons/document_webdav/webdav_server.py3
2 files changed, 23 insertions, 14 deletions
diff --git a/addons/document_webdav/dav_fs.py b/addons/document_webdav/dav_fs.py
index 483a62f8b32..ea4214b25f8 100644
--- a/addons/document_webdav/dav_fs.py
+++ b/addons/document_webdav/dav_fs.py
@@ -110,7 +110,7 @@ class openerp_dav_handler(dav_interface):
"""
try:
- funct(*args)
+ return funct(*args)
except DAV_Error:
if cr: cr.close()
raise
@@ -129,7 +129,7 @@ class openerp_dav_handler(dav_interface):
raise default_exc(err.strerror)
except Exception,e:
import traceback
- self.parent.log_error("Cannot create %s: %s", opname, str(e))
+ self.parent.log_error("Cannot %s: %s", opname, str(e))
self.parent.log_message("Exc: %s",traceback.format_exc())
raise default_exc("Operation failed")
@@ -182,6 +182,7 @@ class openerp_dav_handler(dav_interface):
self.parent.log_message('options: %s' % ret)
else:
ret = opts
+ cr.close()
return ret
def get_prop(self, uri, ns, propname):
@@ -389,11 +390,11 @@ class openerp_dav_handler(dav_interface):
self.parent.log_message('get DN: %s' % uri)
cr, uid, pool, dbname, uri2 = self.get_cr(uri)
if not dbname:
- cr.close()
+ if cr: cr.close()
return COLLECTION
node = self.uri2object(cr, uid, pool, uri2)
if not node:
- cr.close()
+ if cr: cr.close()
raise DAV_NotFound2(uri2)
cr.close()
return node.displayname
@@ -409,7 +410,7 @@ class openerp_dav_handler(dav_interface):
return str(result)
node = self.uri2object(cr, uid, pool, uri2)
if not node:
- cr.close()
+ if cr: cr.close()
raise DAV_NotFound2(uri2)
result = node.content_length or 0
cr.close()
@@ -422,13 +423,13 @@ class openerp_dav_handler(dav_interface):
result = 0
cr, uid, pool, dbname, uri2 = self.get_cr(uri)
if not dbname:
- cr.close()
+ if cr: cr.close()
return '0'
node = self.uri2object(cr, uid, pool, uri2)
if not node:
cr.close()
raise DAV_NotFound2(uri2)
- result = node.get_etag(cr)
+ result = self._try_function(node.get_etag ,(cr,), "etag %s" %uri, cr=cr)
cr.close()
return str(result)
@@ -477,6 +478,7 @@ class openerp_dav_handler(dav_interface):
self.parent.log_message('get contenttype: %s' % uri)
cr, uid, pool, dbname, uri2 = self.get_cr(uri)
if not dbname:
+ if cr: cr.close()
return 'httpd/unix-directory'
try:
node = self.uri2object(cr, uid, pool, uri2)
@@ -495,10 +497,10 @@ class openerp_dav_handler(dav_interface):
self.parent.log_message('MKCOL: %s' % uri)
cr, uid, pool, dbname, uri2 = self.get_cr(uri)
if not uri2[-1]:
- cr.close()
+ if cr: cr.close()
raise DAV_Error(409, "Cannot create nameless collection")
if not dbname:
- cr.close()
+ if cr: cr.close()
raise DAV_Error, 409
node = self.uri2object(cr,uid,pool, uri2[:-1])
if not node:
@@ -520,10 +522,11 @@ class openerp_dav_handler(dav_interface):
parent='/'.join(uri.split('/')[:-1])
cr, uid, pool,dbname, uri2 = self.get_cr(uri)
if not dbname:
+ if cr: cr.close()
raise DAV_Forbidden
try:
node = self.uri2object(cr, uid, pool, uri2[:])
- except:
+ except Exception:
node = False
objname = uri2[-1]
@@ -548,9 +551,11 @@ class openerp_dav_handler(dav_interface):
""" delete a collection """
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.rmcol(cr)
+ self._try_function(node.rmcol, (cr,), "rmcol %s" % uri, cr=cr)
cr.commit()
cr.close()
@@ -559,11 +564,12 @@ class openerp_dav_handler(dav_interface):
def rm(self,uri):
cr, uid, pool,dbname, uri2 = self.get_cr(uri)
if not dbname:
- cr.close()
+ if cr: cr.close()
raise DAV_Error, 409
node = self.uri2object(cr, uid, pool, uri2)
- res = node.rm(cr)
+ 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.')
cr.commit()
cr.close()
@@ -725,7 +731,7 @@ class openerp_dav_handler(dav_interface):
node = self.uri2object(cr, uid, pool, uri2)
if node:
result = True
- except:
+ except Exception:
pass
cr.close()
return result
diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py
index eb09b62b919..0f306a70612 100644
--- a/addons/document_webdav/webdav_server.py
+++ b/addons/document_webdav/webdav_server.py
@@ -115,6 +115,9 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler):
ret = dc.prep_http_options(uri, opts)
except DAV_Error, (ec,dd):
pass
+ except Exception,e:
+ self.log_error("Error at options: %s", str(e))
+ raise
return ret
def send_response(self, code, message=None):