[Erp5-report] r18644 - /erp5/trunk/products/ERP5Form/MultiRelationField.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jan 9 17:32:44 CET 2008


Author: romain
Date: Wed Jan  9 17:32:43 2008
New Revision: 18644

URL: http://svn.erp5.org?rev=18644&view=rev
Log:
Do not propose to user to add new objects, if he doesn't have the permission to
do it.
This should not have impact on performance, as this menu is rarely displayed.

Modified:
    erp5/trunk/products/ERP5Form/MultiRelationField.py

Modified: erp5/trunk/products/ERP5Form/MultiRelationField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/MultiRelationField.py?rev=18644&r1=18643&r2=18644&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/MultiRelationField.py (original)
+++ erp5/trunk/products/ERP5Form/MultiRelationField.py Wed Jan  9 17:32:43 2008
@@ -39,6 +39,8 @@
 from zLOG import LOG
 from Products.Formulator.DummyField import fields
 from Globals import get_request
+from AccessControl import Unauthorized
+from AccessControl import getSecurityManager
 
 # Max. number of catalog result
 MAX_SELECT = 30
@@ -707,16 +709,24 @@
                 menu_item_list.append(('', ''))
                 # If the length is 0, raise an error
                 if field.get_value('allow_creation') == 1 :
+                  user = getSecurityManager().getUser()
+                  getDefaultModule = field.getDefaultModule
                   # XXX
                   for portal_type in portal_type_list:
-                    translated_portal_type = Message(domain='erp5_ui',
-                                                     message=portal_type)
-                    message = Message(
-                            domain='erp5_ui', message='New ${portal_type}',
-                            mapping={'portal_type': translated_portal_type})
-                    menu_item_list.append((message, 
-                                           '%s%s' % (NEW_CONTENT_PREFIX, 
-                                                     portal_type)))
+                    try:
+                      module = getDefaultModule(portal_type)
+                    except ValueError:
+                      pass
+                    else:
+                      if portal_type in module.getVisibleAllowedContentTypeList():
+                        translated_portal_type = Message(domain='erp5_ui',
+                                                         message=portal_type)
+                        message = Message(
+                                domain='erp5_ui', message='New ${portal_type}',
+                                mapping={'portal_type': translated_portal_type})
+                        menu_item_list.append((message, 
+                                               '%s%s' % (NEW_CONTENT_PREFIX, 
+                                                         portal_type)))
                 REQUEST.set(relation_item_id, menu_item_list)
                 raising_error_needed = 1
                 raising_error_value = 'relation_result_empty'




More information about the Erp5-report mailing list