From 6fab66d6f71b3ec08c9d5b1764fc03feaa1a6be9 Mon Sep 17 00:00:00 2001 From: Xavier ALT Date: Mon, 16 Dec 2013 13:39:54 +0100 Subject: [PATCH] [FIX] document: duplicate directory detection should work even when a record rule prevent user from seeing duplicates bzr revid: xal@openerp.com-20131216123954-px10qz9g3qxng6c6 --- addons/document/document.py | 5 +++-- addons/document/test/document_test2.yml | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/addons/document/document.py b/addons/document/document.py index d77dce5288a..bf37018afa8 100644 --- a/addons/document/document.py +++ b/addons/document/document.py @@ -34,6 +34,7 @@ import openerp from openerp import netsvc from openerp import pooler from openerp import tools +from openerp import SUPERUSER_ID from openerp.osv import fields, osv from openerp.osv.orm import except_orm from openerp.tools.misc import ustr @@ -323,7 +324,7 @@ class document_directory(osv.osv): ressource_parent_type_id=vals.get('ressource_parent_type_id',False) ressource_id=vals.get('ressource_id',0) if op=='write': - for directory in self.browse(cr, uid, ids): + for directory in self.browse(cr, SUPERUSER_ID, ids): if not name: name=directory.name if not parent_id: @@ -337,7 +338,7 @@ class document_directory(osv.osv): if len(res): return False if op=='create': - res=self.search(cr,uid,[('name','=',name),('parent_id','=',parent_id),('ressource_parent_type_id','=',ressource_parent_type_id),('ressource_id','=',ressource_id)]) + res = self.search(cr, SUPERUSER_ID, [('name','=',name),('parent_id','=',parent_id),('ressource_parent_type_id','=',ressource_parent_type_id),('ressource_id','=',ressource_id)]) if len(res): return False return True diff --git a/addons/document/test/document_test2.yml b/addons/document/test/document_test2.yml index beff61d4d0f..0c6345ef6c4 100644 --- a/addons/document/test/document_test2.yml +++ b/addons/document/test/document_test2.yml @@ -58,6 +58,23 @@ !python {model: ir.attachment}: | ids = self.search(cr, uid, [('res_model', '=', 'res.country'), ('res_id', '=', ref("base.za"))]) assert ids == [ ref("attach_3rd")], ids +- + I test that I can't create duplicate directories (even when duplicates are hidden by a record rule) +- + !python {model: document.directory}: | + duplicate_detected = False + from openerp.osv.osv import except_osv + try: + demo_uid = ref('base.user_demo') + dir_vals = { + 'name': 'Testing (will be deleted!)', + 'parent_id': ref('document.dir_root') + } + new_dir_id = self.create(cr, demo_uid, dir_vals, context=None) + self.unlink(cr, uid, [new_dir_id], context=None) + except except_osv, e: + duplicate_detected = e.value == u'Directory name must be unique!' + assert duplicate_detected is True, 'Failed to detect duplicate directory' - I delete the attachments -