Ejemplo n.º 1
0
 def test_catalog_creation(self):
     self.assertIn('relations', self.app)
     self.assertIn('relations_container', self.app)
     catalog = get_relations_catalog(self.app)
     self.assertIsNotNone(catalog)
     self.assertTrue(is_service(get_relations_catalog(self.app)))
     self.assertTrue(is_service(get_relations_container(self.app)))
Ejemplo n.º 2
0
 def test_catalog_creation(self):
     self.assertIn('relations', self.app)
     self.assertIn('relations_container', self.app)
     catalog = get_relations_catalog(self.app)
     self.assertIsNotNone(catalog)
     self.assertTrue(is_service(get_relations_catalog(self.app)))
     self.assertTrue(is_service(get_relations_container(self.app)))
Ejemplo n.º 3
0
def object_deleted(event):
    if getattr(event, 'moving', False):
        return

    registry = get_current_registry()
    request = get_current_request()
    if not request:
        return

    objectmap = find_objectmap(request.root)
    ob = event.object
    catalog = get_relations_catalog(request.root)
    if catalog is None:
        # We don't have a Catalog installed in this part of the site
        return

    if IRelationValue.providedBy(ob):
        # We assume relations can't be source or targets of relations
        objectid = oid_from_resource(ob)
        catalog.unindex_doc(objectid)
        return

    objectid = oid_from_resource(ob)
    rels = catalog['source_id'].eq(objectid).execute(
        resolver=objectmap.object_for).all()
    for rel in rels:
        registry.notify(RelationSourceDeleted(ob, rel))
        parent = rel.__parent__
        try:
            parent.remove(rel.__name__, send_events=False, registry=registry)
        except KeyError:
            continue

    rels = catalog['target_id'].eq(objectid).execute(
        resolver=objectmap.object_for).all()
    for rel in rels:
        registry.notify(RelationTargetDeleted(ob, rel))
        parent = rel.__parent__
        try:
            parent.remove(rel.__name__, send_events=False, registry=registry)
        except KeyError:
            continue

    invalidate_cache()
Ejemplo n.º 4
0
def object_deleted(event):
    if getattr(event, 'moving', False):
        return

    registry = get_current_registry()
    request = get_current_request()
    if not request:
        return

    objectmap = find_objectmap(request.root)
    ob = event.object
    catalog = get_relations_catalog(request.root)
    if catalog is None:
        # We don't have a Catalog installed in this part of the site
        return

    if IRelationValue.providedBy(ob):
        # We assume relations can't be source or targets of relations
        objectid = oid_from_resource(ob)
        catalog.unindex_doc(objectid)
        return

    objectid = oid_from_resource(ob)
    rels = catalog['source_id'].eq(objectid).execute(
                   resolver=objectmap.object_for).all()
    for rel in rels:
        registry.notify(RelationSourceDeleted(ob, rel))
        parent = rel.__parent__
        try:
            parent.remove(rel.__name__, send_events=False, registry=registry)
        except KeyError:
            continue

    rels = catalog['target_id'].eq(objectid).execute(
                  resolver=objectmap.object_for).all()
    for rel in rels:
        registry.notify(RelationTargetDeleted(ob, rel))
        parent = rel.__parent__
        try:
            parent.remove(rel.__name__, send_events=False, registry=registry)
        except KeyError:
            continue

    invalidate_cache()
Ejemplo n.º 5
0
def update_relation(event):
    relation = event.object
    catalog = get_relations_catalog(relation.source)
    objectid = oid_from_resource(relation)
    catalog.reindex_doc(objectid, relation)
Ejemplo n.º 6
0
def update_relation(event):
    relation = event.object
    catalog = get_relations_catalog(relation.source)
    objectid = oid_from_resource(relation)
    catalog.reindex_doc(objectid, relation)