From 41a577c1606e14e9f75c6587862580c8c0eedd24 Mon Sep 17 00:00:00 2001
From: Kazuhiko Shiozaki <kazuhiko@nexedi.com>
Date: Tue, 3 Nov 2009 20:18:53 +0000
Subject: [PATCH] export configured permissions only in
 ModuleTemplateItem.export() so as to get smaller and stable XML output.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@30266 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/Document/BusinessTemplate.py | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/product/ERP5/Document/BusinessTemplate.py b/product/ERP5/Document/BusinessTemplate.py
index 2b9bb6d76c..19f1a28634 100644
--- a/product/ERP5/Document/BusinessTemplate.py
+++ b/product/ERP5/Document/BusinessTemplate.py
@@ -2864,10 +2864,16 @@ class ModuleTemplateItem(BaseTemplateItem):
             ptype = "list"
           else:
             ptype = "tuple"
-          xml_data += "\n  <permission type='%s'>" %(ptype,)
-          xml_data += '\n   <name>%s</name>' %(perm[0])
           role_list = list(perm[1])
+          # Skip if permission is not configured (i.e. no role at all
+          # with acquire permission, or Manager only without acquire
+          # permission).
+          if (not len(role_list) and ptype == 'list') or \
+                 (role_list == ['Manager'] and ptype == 'tuple'):
+            continue
           role_list.sort()
+          xml_data += "\n  <permission type='%s'>" %(ptype,)
+          xml_data += '\n   <name>%s</name>' %(perm[0])
           for role in role_list:
             xml_data += '\n   <role>%s</role>' %(role)
           xml_data += '\n  </permission>'
@@ -2914,10 +2920,11 @@ class ModuleTemplateItem(BaseTemplateItem):
         else:
           module = portal.newContent(id=id, portal_type=str(mapping['portal_type']))
         module.setTitle(str(mapping['title']))
-        for name, role_list in list(mapping['permission_list']):
+        for name in valid_permissions.keys():
+          # By default, Manager only without acquire permission
+          role_list = dict(mapping['permission_list']).get(name, ('Manager',))
           acquire = (type(role_list) == type([]))
-          if name in valid_permissions:
-            module.manage_permission(name, roles=role_list, acquire=acquire)
+          module.manage_permission(name, roles=role_list, acquire=acquire)
 
   def _importFile(self, file_name, file):
     if not file_name.endswith('.xml'):
-- 
2.30.9