__init__.py
changeset 2647 b0a2e779845c
parent 2476 1294a6bdf3bf
child 2683 52b1a86c1913
--- 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):