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)
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)
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)
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)
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)
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)
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)
def setUp(self): self.store = MockStore() params = { "store" : self.store, "instance_factory" : mock_instance_factory} self.proxy = ResultProxy(params)
def store_proxy(): store = MockStore() params = {"store": store, "instance_factory": mock_instance_factory} proxy = ResultProxy(params) return store, proxy
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)
def setUp(self): self.store = MockStore() params = {"store": self.store, "instancemaker": mock_instancemaker} self.proxy = ResultProxy(params)
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)