示例#1
0
def content_added_moved_or_duplicated(event):
    """ Generates ContentAdded (and ContentMoved/ContentDuplicated)
    audit events """
    if event.moving is not None:
        return _add_record('ContentMoved', event, [event.object])
    elif event.duplicating is not None:
        return _add_record('ContentDuplicated', event, [event.object])
    else:
        return _add_record('ContentAdded', event, postorder(event.object))
示例#2
0
def content_added_moved_or_duplicated(event):
    """ Generates ContentAdded (and ContentMoved/ContentDuplicated)
    audit events """
    if event.moving is not None:
        return _add_record('ContentMoved', event, [event.object])
    elif event.duplicating is not None:
        return _add_record('ContentDuplicated', event, [event.object])
    else:
        return _add_record('ContentAdded', event, postorder(event.object))
示例#3
0
def remove_bogus_auditlogs(root):
    i = 0
    # Blow away even the root auditlog, as it will have references to
    # AuditLogEntry objects that inherit from Persistent
    for resource in postorder(root):
        i += 1
        if hasattr(resource, '__auditlog__'):
            del resource.__auditlog__
        resource._p_deactivate()
        if i % 1000 == 0:
            resource._p_jar.cacheGC()
示例#4
0
def evolve(root):
    logger.info("Running substanced evolve step 2: add PRINCIPAL_TO_ACL_BEARING " "relationships")
    objectmap = find_objectmap(root)
    if objectmap is None:
        return
    for obj in postorder(root):
        logger.info("Substanced evolve step 2: trying %s" % (obj,))
        acl = getattr(obj, "__acl__", _marker)
        if acl is _marker:
            continue
        for princid in _referenceable_principals(acl):
            objectmap.connect(princid, obj, PrincipalToACLBearing)
示例#5
0
def evolve(root):
    logger.info(
        'Running substanced evolve step 3: evolve __services__ into '
        '__is_service__'
        )
    for obj in postorder(root):
        logger.info(
            'Substanced evolve step 3: trying %s' % (obj,)
            )
        services = getattr(obj, '__services__', None)
        if services:
            for name in services:
                obj[name].__is_service__ = True
            del obj.__services__
示例#6
0
def add_path_to_acl_to_objectmap(root):
    objectmap = root.__objectmap__
    objectmap.path_to_acl = objectmap.family.OO.BTree()
    logger.info('Populating path_to_acl in objectmap (expensive evolve step)')
    for obj in postorder(root):
        oid = objectmap.objectid_for(obj)
        path = objectmap.path_for(oid)
        upath = _SLASH.join(path)
        acl = get_acl(obj, None)
        suffix = '(no acl)'
        if acl is not None:
            objectmap.set_acl(obj, acl)
            suffix = '(indexed acl)'
        logger.info('%s %s' % (upath, suffix))
示例#7
0
def evolve(root):
    logger.info(
        'Running substanced evolve step 1: convert __objectid__ to __oid__'
        )
    for obj in postorder(root):
        logger.info(
            'Substanced evolve step 1: trying %s' % (obj,)
            )
        objectid = getattr(obj, '__objectid__', _marker)
        if objectid is _marker:
            continue
        if hasattr(obj, '__oid__'):
            continue
        obj.__oid__ = objectid
        del obj.__objectid__
示例#8
0
def evolve(root):
    logger.info(
        'Running substanced evolve step 2: add PRINCIPAL_TO_ACL_BEARING '
        'relationships')
    objectmap = find_objectmap(root)
    if objectmap is None:
        return
    for obj in postorder(root):
        logger.info('Substanced evolve step 2: trying %s' % (obj, ))
        acl = getattr(obj, '__acl__', _marker)
        if acl is _marker:
            continue
        for princid in _referenceable_principals(acl):
            objectmap.connect(
                princid,
                obj,
                PrincipalToACLBearing,
            )