--- a/__init__.py Sun Aug 02 11:58:55 2009 +0200
+++ b/__init__.py Sun Aug 02 12:00:17 2009 +0200
@@ -100,13 +100,27 @@
[(etype,)])
return self.decorate_rset(rset)
+ def empty_rset(self):
+ """return a result set for the given eid without doing actual query
+ (we have the eid, we can suppose it exists and user has access to the
+ entity)
+ """
+ from cubicweb.rset import ResultSet
+ return self.decorate_rset(ResultSet([], 'Any X WHERE X eid -1'))
+
def entity_from_eid(self, eid, etype=None):
- rset = self.eid_rset(eid, etype)
- if rset:
- return rset.get_entity(0, 0)
- else:
- return None
+ try:
+ return self.entity_cache(eid)
+ except KeyError:
+ rset = self.eid_rset(eid, etype)
+ entity = rset.get_entity(0, 0)
+ self.set_entity_cache(entity)
+ return entity
+ def entity_cache(self, eid):
+ raise KeyError
+ def set_entity_cache(self, entity):
+ pass
# url generation methods ##################################################
def build_url(self, *args, **kwargs):