예제 #1
0
    def test_sheetreferences(self, context, objectmap):
        resource, resource2 = create_dummy_resources(parent=context, count=2)
        objectmap.connect(resource, resource2, SheetToSheet)

        result = self.call_fut(objectmap, resource)

        source, isheet, field, target = result.__next__()
        assert source == resource
        assert isheet == SheetReference.getTaggedValue('source_isheet')
        assert field == SheetReference.getTaggedValue('source_isheet_field')
        assert target == resource2
예제 #2
0
    def test_sheetreferences(self, context, objectmap):
        resource, resource2 = create_dummy_resources(parent=context, count=2)
        objectmap.connect(resource, resource2, SheetToSheet)

        result = self.call_fut(objectmap, resource)

        source, isheet, field, target = result.__next__()
        assert source == resource
        assert isheet == SheetReference.getTaggedValue('source_isheet')
        assert field == SheetReference.getTaggedValue('source_isheet_field')
        assert target == resource2
예제 #3
0
파일: __init__.py 프로젝트: liqd/adhocracy3
    def set_references(self, source, targets: Iterable,
                       reftype: SheetReference, registry: Registry=None,
                       send_event=True):
        """Set references of this source.

        :param targets: the reference targets, for Sequences the order
                         is preserved.
        :param reftype: the reftype mapping to one isheet field.
        :param registry: pyramid registry to notify referenced resources.
                         Default value is None to ease testing.
        :param send_event: send events to notify referenced resources
        """
        assert reftype.isOrExtends(SheetReference)
        multireference = self._create_multireference(source, targets, reftype)
        old = set([x for x in multireference])
        multireference.clear()
        multireference.connect(targets)
        if registry is None:
            return
        new = set(targets)
        if send_event:
            removed = old - new
            self._notify_removed_targets(source, reftype, removed, registry)
            added = new - old
            self._notify_added_targets(source, reftype, added, registry)
예제 #4
0
    def set_references(self,
                       source,
                       targets: Iterable,
                       reftype: SheetReference,
                       registry: Registry = None):
        """Set references of this source.

        :param targets: the reference targets, for Sequences the order
                         is preserved.
        :param reftype: the reftype mapping to one isheet field.
        :param registry: pyramid registry to notify referenced resources.
                         Default value is None to ease testing.
        """
        assert reftype.isOrExtends(SheetReference)
        multireference = self._create_multireference(source, targets, reftype)
        old = set([x for x in multireference])
        multireference.clear()
        multireference.connect(targets)
        if registry is None:
            return
        new = set(targets)
        removed = old - new
        self._notify_removed_targets(source, reftype, removed, registry)
        added = new - old
        self._notify_added_targets(source, reftype, added, registry)