本文整理汇总了Python中Products.CMFCore.FSMetadata.FSMetadata.getSecurity方法的典型用法代码示例。如果您正苦于以下问题:Python FSMetadata.getSecurity方法的具体用法?Python FSMetadata.getSecurity怎么用?Python FSMetadata.getSecurity使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Products.CMFCore.FSMetadata.FSMetadata
的用法示例。
在下文中一共展示了FSMetadata.getSecurity方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: prepareContents
# 需要导入模块: from Products.CMFCore.FSMetadata import FSMetadata [as 别名]
# 或者: from Products.CMFCore.FSMetadata.FSMetadata import getSecurity [as 别名]
def prepareContents(self, registry, register_subdirs=0):
# Creates objects for each file.
data = {}
objects = []
types = self._readTypesFile()
for entry in _filtered_listdir(self._filepath, ignore=self.ignore):
if not self._isAllowableFilename(entry):
continue
entry_filepath = os.path.join(self._filepath, entry)
if os.path.isdir(entry_filepath):
# Add a subdirectory only if it was previously registered,
# unless register_subdirs is set.
entry_reg_key = '/'.join((self._reg_key, entry))
info = registry.getDirectoryInfo(entry_reg_key)
if info is None and register_subdirs:
# Register unknown subdirs
registry.registerDirectoryByKey(entry_filepath,
entry_reg_key)
info = registry.getDirectoryInfo(entry_reg_key)
if info is not None:
# Folders on the file system have no extension or
# meta_type, as a crutch to enable customizing what gets
# created to represent a filesystem folder in a
# DirectoryView we use a fake type "FOLDER". That way
# other implementations can register for that type and
# circumvent the hardcoded assumption that all filesystem
# directories will turn into DirectoryViews.
mt = types.get(entry) or 'FOLDER'
t = registry.getTypeByMetaType(mt)
if t is None:
t = DirectoryView
metadata = FSMetadata(entry_filepath)
metadata.read()
ob = t( entry
, entry_reg_key
, properties=metadata.getProperties()
)
ob_id = ob.getId()
data[ob_id] = ob
objects.append({'id': ob_id, 'meta_type': ob.meta_type})
else:
pos = entry.rfind('.')
if pos >= 0:
name = entry[:pos]
ext = os.path.normcase(entry[pos + 1:])
else:
name = entry
ext = ''
if not name or name == 'REQUEST':
# Not an allowable id.
continue
mo = bad_id(name)
if mo is not None and mo != -1: # Both re and regex formats
# Not an allowable id.
continue
t = None
mt = types.get(entry, None)
if mt is None:
mt = types.get(name, None)
if mt is not None:
t = registry.getTypeByMetaType(mt)
if t is None:
t = registry.getTypeByExtension(ext)
if t is not None:
metadata = FSMetadata(entry_filepath)
metadata.read()
try:
ob = t(name, entry_filepath, fullname=entry,
properties=metadata.getProperties())
except:
import sys
import traceback
typ, val, tb = sys.exc_info()
try:
logger.exception("prepareContents")
exc_lines = traceback.format_exception( typ,
val,
tb )
ob = BadFile( name,
entry_filepath,
exc_str='\r\n'.join(exc_lines),
fullname=entry )
finally:
tb = None # Avoid leaking frame!
# FS-based security
permissions = metadata.getSecurity()
if permissions is not None:
for name in permissions.keys():
acquire, roles = permissions[name]
try:
ob.manage_permission(name,roles,acquire)
except ValueError:
logger.exception("Error setting permissions")
# only DTML Methods and Python Scripts can have proxy roles
if hasattr(ob, '_proxy_roles'):
try:
#.........这里部分代码省略.........