Doc: allow override of dynamic foleders' class

bzr revid: p_christ@hol.gr-20101012104019-ci6z0vb9fce7tfiw
This commit is contained in:
P. Christeas 2010-10-12 13:40:19 +03:00
parent d7f96fd603
commit 1fe7eb3e8f
2 changed files with 9 additions and 5 deletions

View File

@ -175,7 +175,7 @@ class document_directory(osv.osv):
return nodes.get_node_context(cr, uid, context).get_uri(cr, uri)
def get_node_class(self, cr, uid, ids, dbro=None, context=None):
def get_node_class(self, cr, uid, ids, dbro=None, dynamic=False, context=None):
"""Retrieve the class of nodes for this directory
This function can be overriden by inherited classes ;)
@ -184,7 +184,10 @@ class document_directory(osv.osv):
if dbro is None:
dbro = self.browse(cr, uid, ids, context=context)
if dbro.type == 'directory':
if dynamic:
assert dbro.type == 'directory'
return nodes.node_res_obj
elif dbro.type == 'directory':
return nodes.node_dir
elif dbro.type == 'ressource':
return nodes.node_res_dir

View File

@ -72,6 +72,7 @@ class node_context(object):
self.context = context
self._dirobj = pooler.get_pool(cr.dbname).get('document.directory')
self.node_file_class = node_file
self.extra_ctx = {} # Extra keys for context, that do _not_ trigger inequality
assert self._dirobj
self._dirobj._prepare_context(cr, uid, self, context=context)
self.rootdir = False #self._dirobj._get_root_directory(cr,uid,context)
@ -944,7 +945,7 @@ class node_res_obj(node_class):
if not res_name:
continue
# TODO Revise
klass = self.__class__
klass = directory.get_node_class(directory, dynamic=True, context=ctx)
res.append(klass(res_name, self.dir_id, self, self.context, self.res_model, res_bo = bo))
@ -952,7 +953,7 @@ class node_res_obj(node_class):
ids = dirobj.search(cr, uid, where2, context=ctx)
for dirr in dirobj.browse(cr, uid, ids, context=ctx):
if dirr.type == 'directory':
klass = self.__class__
klass = dirr.get_node_class(dirr, dynamic=True, context=ctx)
res.append(klass(dirr.name, dirr.id, self, self.context, self.res_model, res_bo = None, res_id = self.res_id))
elif dirr.type == 'ressource':
# child resources can be controlled by properly set dctx
@ -980,7 +981,7 @@ class node_res_obj(node_class):
dirids = dirids + dirobj.search(cr,uid, where5)
for dirr in dirobj.browse(cr, uid, dirids, context=ctx):
if dirr.type == 'directory' and not dirr.parent_id:
klass = self.__class__
klass = dirr.get_node_class(dirr, dynamic=True, context=ctx)
res.append(klass(dirr.name, dirr.id, self, self.context, self.res_model, res_bo = None, res_id = self.res_id))
if dirr.type == 'ressource':
klass = dirr.get_node_class(dirr, context=ctx)