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