diff --git a/addons/document/document_view.xml b/addons/document/document_view.xml index 536683f6a59..df5e78894fd 100644 --- a/addons/document/document_view.xml +++ b/addons/document/document_view.xml @@ -82,7 +82,6 @@ - @@ -93,6 +92,9 @@ + + + diff --git a/addons/document/nodes.py b/addons/document/nodes.py index 1f90b7922be..1b7aebcd389 100644 --- a/addons/document/nodes.py +++ b/addons/document/nodes.py @@ -908,7 +908,10 @@ class node_res_obj(node_class): self.domain = parent.domain self.displayname = path self.dctx_dict = parent.dctx_dict - self.res_find_all = parent.res_find_all + if isinstance(parent, node_res_dir): + self.res_find_all = parent.res_find_all + else: + self.res_find_all = False if res_bo: self.res_id = res_bo.id dc2 = self.context.context.copy() @@ -1045,27 +1048,32 @@ class node_res_obj(node_class): continue # TODO Revise klass = directory.get_node_class(directory, dynamic=True, context=ctx) - res.append(klass(res_name, dir_id=self.dir_id, parent=self, context=self.context, res_model=self.res_model, res_bo=bo)) + rnode = klass(res_name, dir_id=self.dir_id, parent=self, context=self.context, + res_model=self.res_model, res_bo=bo) + rnode.res_find_all = self.res_find_all + res.append(rnode) where2 = where + [('parent_id','=',self.dir_id) ] ids = dirobj.search(cr, uid, where2, context=ctx) + bo = obj.browse(cr, uid, self.res_id, context=ctx) + for dirr in dirobj.browse(cr, uid, ids, context=ctx): if name and (name != dirr.name): continue if dirr.type == 'directory': 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)) + res.append(klass(dirr.name, dirr.id, self, self.context, self.res_model, res_bo = bo, res_id = self.res_id)) elif dirr.type == 'ressource': # child resources can be controlled by properly set dctx klass = dirr.get_node_class(dirr, context=ctx) - res.append(klass(dirr.name,self,self.context, dirr, {'active_id': self.res_id})) + res.append(klass(dirr.name,self,self.context, dirr, {'active_id': self.res_id})) # bo? fil_obj = dirobj.pool.get('ir.attachment') if self.res_find_all: where2 = where - where3 = where2 + [('res_model', '=', self.res_model), ('res_id','=',self.res_id)] - # print "where clause for dir_obj", where2 + where3 = where2 + [('res_model', '=', self.res_model), ('res_id','=',self.res_id)] + # print "where clause for dir_obj", where3 ids = fil_obj.search(cr, uid, where3, context=ctx) if ids: for fil in fil_obj.browse(cr, uid, ids, context=ctx): @@ -1076,17 +1084,19 @@ class node_res_obj(node_class): # Get Child Ressource Directories if directory.ressource_type_id and directory.ressource_type_id.id: where4 = where + [('ressource_parent_type_id','=',directory.ressource_type_id.id)] - where5 = where4 + [('ressource_id','=',0)] + where5 = where4 + ['|', ('ressource_id','=',0), ('ressource_id','=',self.res_id)] dirids = dirobj.search(cr,uid, where5) - where5 = where4 + [('ressource_id','=',self.res_id)] - 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 = 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)) + rnode = klass(dirr.name, dirr.id, self, self.context, self.res_model, res_bo = bo, res_id = self.res_id) + rnode.res_find_all = dirr.resource_find_all + res.append(rnode) if dirr.type == 'ressource': klass = dirr.get_node_class(dirr, context=ctx) - res.append(klass(dirr.name, self, self.context, dirr, {'active_id': self.res_id})) + rnode = klass(dirr.name, self, self.context, dirr, {'active_id': self.res_id}) + rnode.res_find_all = dirr.resource_find_all + res.append(rnode) return res def create_child_collection(self, cr, objname): @@ -1111,7 +1121,8 @@ class node_res_obj(node_class): 'name': objname, 'ressource_parent_type_id': obj and obj.ressource_type_id.id or False, 'ressource_id': object2 and object2.id or False, - 'parent_id' : False + 'parent_id' : False, + 'resource_find_all': False, } if (obj and (obj.type in ('directory'))) or not object2: val['parent_id'] = obj and obj.id or False