Example #1
0
    def get_by(cls, **filters):
        """ Retrieve all instances that match specified filters and class.

        Filters are specified as keyword arguments, argument names follow SuRF
        naming convention (they take form `namespace_name`).

        Example::

            >>> Person = session.get_class(surf.ns.FOAF['Person'])
            >>> johns = Person.get_by(foaf_name = u"John")

        """

        if not hasattr(cls, "uri") or cls == Resource:
            return []

        store = cls.session[cls.store_key]
        filters = filters.copy()
        # Client specified rdf_type(s) override our own.
        if not "rdf_type" in filters:
            filters["rdf_type"] = cls.uri
        proxy = ResultProxy(store = store,
                            instancemaker = cls.__instancemaker)

        return proxy.get_by(**filters)
Example #2
0
    def get_by(cls, **filters):
        """ Retrieve all instances that match specified filters and class.

        Filters are specified as keyword arguments, argument names follow SuRF
        naming convention (they take form `namespace_name`).

        Example::

            >>> Person = session.get_class(surf.ns.FOAF['Person'])
            >>> johns = Person.get_by(foaf_name = u"John")

        """

        if not hasattr(cls, "uri") or cls == Resource:
            return []

        store = cls.session[cls.store_key]
        filters = filters.copy()
        # Client specified rdf_type(s) override our own.
        if not "rdf_type" in filters:
            filters["rdf_type"] = cls.uri
        proxy = ResultProxy(store=store,
                            instance_factory=cls.__instance_factory)

        return proxy.get_by(**filters)
Example #3
0
    def all(cls):
        """ Retrieve all or limited number of `instances`. """

        if not hasattr(cls, 'uri') or cls == Resource:
            return []

        store = cls.session[cls.store_key]
        proxy = ResultProxy(store = store, instance_factory = cls.__instance_factory)

        return proxy.get_by(rdf_type = cls.uri)
Example #4
0
    def all(cls):
        """ Retrieve all or limited number of `instances`. """

        if not hasattr(cls, 'uri') or cls == Resource:
            return []

        store = cls.session[cls.store_key]
        proxy = ResultProxy(store=store, instancemaker=cls.__instancemaker)

        return proxy.get_by(rdf_type=cls.uri)
Example #5
0
    def query_attribute(self, attribute_name):
        """ Return ResultProxy for querying attribute values. """

        # If we want to get john.foaf_knows values, we have to formulate
        # query like friends = get_by(is_foaf_knows_of = john), thus the
        # attribute name inversion
        uri, direct = attr2rdf(attribute_name)
        inverse_attribute_name = unicode(rdf2attr(uri, not direct))

        store = self.session[self.store_key]
        proxy = ResultProxy(store = store,
                            instancemaker = self.__instancemaker)

        kwargs = {inverse_attribute_name : self.subject}
        return proxy.get_by(**kwargs)
Example #6
0
    def query_attribute(self, attribute_name):
        """ Return ResultProxy for querying attribute values. """

        # If we want to get john.foaf_knows values, we have to formulate
        # query like friends = get_by(is_foaf_knows_of = john), thus the
        # attribute name inversion
        uri, direct = attr2rdf(attribute_name)

        # We'll be using inverse_attribute_name as keyword argument.
        # Python 2.6.2 and older don't allow unicode keyword arguments,
        # so we revert back to str().
        inverse_attribute_name = str(rdf2attr(uri, not direct))

        store = self.session[self.store_key]
        proxy = ResultProxy(store=store,
                            instance_factory=self.__instance_factory)

        kwargs = {inverse_attribute_name: self.subject}
        return proxy.get_by(**kwargs)
Example #7
0
    def query_attribute(self, attribute_name):
        """ Return ResultProxy for querying attribute values. """

        # If we want to get john.foaf_knows values, we have to formulate
        # query like friends = get_by(is_foaf_knows_of = john), thus the
        # attribute name inversion
        uri, direct = attr2rdf(attribute_name)
        
        # We'll be using inverse_attribute_name as keyword argument.
        # Python 2.6.2 and older doesn't allow unicode keyword arguments, 
        # so we do str().
        inverse_attribute_name = str(rdf2attr(uri, not direct))

        store = self.session[self.store_key]
        proxy = ResultProxy(store = store,
                            instancemaker = self.__instancemaker)

        kwargs = {inverse_attribute_name : self.subject}
        return proxy.get_by(**kwargs)
class TestResultProxy(unittest.TestCase):

    def setUp(self):
        self.store = MockStore()
        params = { "store" : self.store, "instance_factory" : mock_instance_factory}
        self.proxy = ResultProxy(params)

    def test_all_empty_list(self):
        """ Test ResultProxy with no filters, no returned data. """
        
        results = list(self.proxy)
        assert len(results) == 0

    def test_limit_offset(self):
        """ Test limit, offset. """
        
        self.store.expect_args({"limit" : 10, "offset" : 5})
        list(self.proxy.limit(10).offset(5))

    def test_full(self):
        """ Test full(). """
        
        self.store.expect_args({'full' : True, 'direct_only' : True})
        list(self.proxy.full(direct_only = True))


    def test_order_desc(self):
        """ Test order, desc. """
        
        self.store.expect_args({"order" : "some_attr", "desc" : True})
        list(self.proxy.order("some_attr").desc())

    def test_get_by(self):
        """ Test get_by. """
        
        expected = [(surf.ns.FOAF["name"], "Jane", True)]
        self.store.expect_args({"get_by" : expected})
        list(self.proxy.get_by(foaf_name = "Jane"))

    def test_context(self):
        """ Test context. """
        
        self.store.expect_args({"context" : "my_context"})
        list(self.proxy.context("my_context"))

    def test_filter(self):
        """ Test filter. """
        
        self.store.expect_args({"filter" : [(surf.ns.FOAF["name"], "f", True)]})
        list(self.proxy.filter(foaf_name = "f"))

    def test_get_by_resource(self):
        """ Test that get_by accepts Resources as values. """
        
        resource = MockResource()
        expected = [(surf.ns.FOAF["knows"], resource.subject, True)]
        self.store.expect_args({"get_by" : expected})
        list(self.proxy.get_by(foaf_knows = resource))
 def query_attribute(self, attribute_name):
     return ResultProxy(store=self.store,
                        instance_factory=mock_instance_factory)
Example #10
0
 def setUp(self):
     self.store = MockStore()
     params = { "store" : self.store, "instance_factory" : mock_instance_factory}
     self.proxy = ResultProxy(params)
Example #11
0
def store_proxy():
    store = MockStore()
    params = {"store": store, "instance_factory": mock_instance_factory}
    proxy = ResultProxy(params)
    return store, proxy
Example #12
0
class TestResultProxy(unittest.TestCase):

    def setUp(self):
        self.store = MockStore()
        params = { "store" : self.store, "instancemaker" : mock_instancemaker}
        self.proxy = ResultProxy(params)

    def test_all_empty_list(self):
        """ Test ResultProxy with no filters, no returned data. """

        results = list(self.proxy)
        assert len(results) == 0

    def test_limit_offset(self):
        """ Test limit, offset. """

        self.store.expect_args({"limit" : 10, "offset" : 5})
        list(self.proxy.limit(10).offset(5))

    def test_full(self):
        """ Test full(). """

        self.store.expect_args({"full" : True, "only_direct" : True})
        list(self.proxy.full(only_direct=True))


    def test_order_desc(self):
        """ Test order, desc. """

        self.store.expect_args({"order" : [(surf.ns.FOAF.name, True)],
                                "desc" : True})
        list(self.proxy.order("foaf_name").desc())

    def test_get_by(self):
        """ Test get_by. """

        expected = [([(surf.ns.FOAF["name"], True)], "Jane")]
        self.store.expect_args({"get_by" : expected})
        list(self.proxy.get_by(foaf_name="Jane"))

    def test_context(self):
        """ Test context. """

        self.store.expect_args({"contexts" : ("my_context",)})
        list(self.proxy.context("my_context"))

    def test_filter(self):
        """ Test filter. """

        self.store.expect_args({"filter" : [(surf.ns.FOAF["name"], "f", True)]})
        list(self.proxy.filter(foaf_name="f"))

    def test_get_by_resource(self):
        """ Test that get_by accepts Resources as values. """

        resource = MockResource()
        expected = [([(surf.ns.FOAF["knows"], True)], resource.subject)]
        self.store.expect_args({"get_by" : expected})
        list(self.proxy.get_by(foaf_knows=resource))

    def test_slicing(self):
        """ Test limit, offset. """

        self.store.expect_args({"limit" : 10, "offset" : 5})
        list(self.proxy[5:15])

    def test_reslicing(self):
        """ Test slicing multiple times. """

        self.store.expect_args({"limit" : 3, "offset" : 7})
        q = self.proxy[5:10]
        q = q[2:6]
        list(q)
Example #13
0
 def setUp(self):
     self.store = MockStore()
     params = {"store": self.store, "instancemaker": mock_instancemaker}
     self.proxy = ResultProxy(params)
Example #14
0
class TestResultProxy(unittest.TestCase):
    def setUp(self):
        self.store = MockStore()
        params = {"store": self.store, "instancemaker": mock_instancemaker}
        self.proxy = ResultProxy(params)

    def test_all_empty_list(self):
        """ Test ResultProxy with no filters, no returned data. """

        results = list(self.proxy)
        assert len(results) == 0

    def test_limit_offset(self):
        """ Test limit, offset. """

        self.store.expect_args({"limit": 10, "offset": 5})
        list(self.proxy.limit(10).offset(5))

    def test_full(self):
        """ Test full(). """

        self.store.expect_args({"full": True, "only_direct": True})
        list(self.proxy.full(only_direct=True))

    def test_order_desc(self):
        """ Test order, desc. """

        self.store.expect_args({
            "order": [(surf.ns.FOAF.name, True)],
            "desc": True
        })
        list(self.proxy.order("foaf_name").desc())

    def test_get_by(self):
        """ Test get_by. """

        expected = [([(surf.ns.FOAF["name"], True)], "Jane")]
        self.store.expect_args({"get_by": expected})
        list(self.proxy.get_by(foaf_name="Jane"))

    def test_context(self):
        """ Test context. """

        self.store.expect_args({"contexts": ("my_context", )})
        list(self.proxy.context("my_context"))

    def test_filter(self):
        """ Test filter. """

        self.store.expect_args({"filter": [(surf.ns.FOAF["name"], "f", True)]})
        list(self.proxy.filter(foaf_name="f"))

    def test_get_by_resource(self):
        """ Test that get_by accepts Resources as values. """

        resource = MockResource()
        expected = [([(surf.ns.FOAF["knows"], True)], resource.subject)]
        self.store.expect_args({"get_by": expected})
        list(self.proxy.get_by(foaf_knows=resource))

    def test_slicing(self):
        """ Test limit, offset. """

        self.store.expect_args({"limit": 10, "offset": 5})
        list(self.proxy[5:15])

    def test_reslicing(self):
        """ Test slicing multiple times. """

        self.store.expect_args({"limit": 3, "offset": 7})
        q = self.proxy[5:10]
        q = q[2:6]
        list(q)