def check_permission(self, permission_name): if permission_name is None: return True if permission_name not in self.permission_cache: permission = queryUtility(IPermission, name=permission_name) if permission is None: self.permission_cache[permission_name] = True else: security = IInteraction(self.request) self.permission_cache[permission_name] = bool( security.check_permission(permission.title, self.context)) return self.permission_cache[permission_name]
def __call__(self): result = super(SerializeFolderToJson, self).__call__() security = IInteraction(self.request) length = len(self.context) if length > MAX_ALLOWED or length == 0: result['items'] = [] else: result['items'] = [ getMultiAdapter( (member, self.request), IResourceSerializeToJsonSummary)() for ident, member in self.context.items() if not ident.startswith('_') and bool(security.check_permission( 'plone.AccessContent', self.context)) ] result['length'] = length return result