[ADD]filter db
bzr revid: dle@openerp.com-20121213135505-fnmlrvscc6upliiv
This commit is contained in:
parent
8256b41f0a
commit
8efb6d3ea3
|
@ -24,7 +24,9 @@ import sql_db
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
import errno
|
import errno
|
||||||
|
import re
|
||||||
|
|
||||||
|
import openerp
|
||||||
import netsvc
|
import netsvc
|
||||||
import urlparse
|
import urlparse
|
||||||
try:
|
try:
|
||||||
|
@ -361,7 +363,8 @@ class openerp_dav_handler(dav_interface):
|
||||||
return self.parent.get_baseuri(self) + '/'.join(ajoin)
|
return self.parent.get_baseuri(self) + '/'.join(ajoin)
|
||||||
|
|
||||||
@memoize(4)
|
@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')
|
s = netsvc.ExportService.getService('db')
|
||||||
result = s.exp_list()
|
result = s.exp_list()
|
||||||
self.db_name_list=[]
|
self.db_name_list=[]
|
||||||
|
@ -370,7 +373,7 @@ class openerp_dav_handler(dav_interface):
|
||||||
try:
|
try:
|
||||||
db = sql_db.db_connect(db_name)
|
db = sql_db.db_connect(db_name)
|
||||||
cr = db.cursor()
|
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()
|
res=cr.fetchone()
|
||||||
if res and len(res):
|
if res and len(res):
|
||||||
self.db_name_list.append(db_name)
|
self.db_name_list.append(db_name)
|
||||||
|
@ -381,6 +384,15 @@ class openerp_dav_handler(dav_interface):
|
||||||
cr.close()
|
cr.close()
|
||||||
return self.db_name_list
|
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):
|
def get_childs(self,uri, filters=None):
|
||||||
""" return the child objects as self.baseuris for the given URI """
|
""" return the child objects as self.baseuris for the given URI """
|
||||||
self.parent.log_message('get children: %s' % uri)
|
self.parent.log_message('get children: %s' % uri)
|
||||||
|
@ -388,7 +400,7 @@ class openerp_dav_handler(dav_interface):
|
||||||
|
|
||||||
if not dbname:
|
if not dbname:
|
||||||
if cr: cr.close()
|
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
|
return res
|
||||||
result = []
|
result = []
|
||||||
node = self.uri2object(cr, uid, pool, uri2[:])
|
node = self.uri2object(cr, uid, pool, uri2[:])
|
||||||
|
|
Loading…
Reference in New Issue