From 8efb6d3ea3e42dedd89937c0a5512728228e68ba Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Thu, 13 Dec 2012 14:55:05 +0100 Subject: [PATCH] [ADD]filter db bzr revid: dle@openerp.com-20121213135505-fnmlrvscc6upliiv --- addons/document_webdav/dav_fs.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/addons/document_webdav/dav_fs.py b/addons/document_webdav/dav_fs.py index 0a9df3d50d4..5b3e4272042 100644 --- a/addons/document_webdav/dav_fs.py +++ b/addons/document_webdav/dav_fs.py @@ -24,7 +24,9 @@ import sql_db import os import time import errno +import re +import openerp import netsvc import urlparse try: @@ -361,7 +363,8 @@ class openerp_dav_handler(dav_interface): return self.parent.get_baseuri(self) + '/'.join(ajoin) @memoize(4) - def db_list(self): + def _all_db_list(self): + """return all databases who have module document_webdav installed""" s = netsvc.ExportService.getService('db') result = s.exp_list() self.db_name_list=[] @@ -370,7 +373,7 @@ class openerp_dav_handler(dav_interface): try: db = sql_db.db_connect(db_name) cr = db.cursor() - cr.execute("SELECT id FROM ir_module_module WHERE name = 'document' AND state='installed' ") + cr.execute("SELECT id FROM ir_module_module WHERE name = 'document_webdav' AND state='installed' ") res=cr.fetchone() if res and len(res): self.db_name_list.append(db_name) @@ -381,6 +384,15 @@ class openerp_dav_handler(dav_interface): cr.close() return self.db_name_list + def db_list(self, uri): + # import pudb;pudb.set_trace() + u = urlparse.urlsplit(uri) + h = u.hostname + d = h.split('.')[0] + r = openerp.tools.config['dbfilter'].replace('%h', h).replace('%d',d) + dbs = [i for i in self._all_db_list() if re.match(r, i)] + return dbs + def get_childs(self,uri, filters=None): """ return the child objects as self.baseuris for the given URI """ self.parent.log_message('get children: %s' % uri) @@ -388,7 +400,7 @@ class openerp_dav_handler(dav_interface): if not dbname: if cr: cr.close() - res = map(lambda x: self.urijoin(x), self.db_list()) + res = map(lambda x: self.urijoin(x), self.db_list(uri)) return res result = [] node = self.uri2object(cr, uid, pool, uri2[:])