cubicweb/schema.py
branch3.25
changeset 12086 39c9e548f0ce
parent 11899 bf6106b91633
child 12210 3fa6c9ef2f51
--- a/cubicweb/schema.py	Wed Mar 22 13:58:28 2017 +0100
+++ b/cubicweb/schema.py	Wed Mar 01 18:07:49 2017 +0100
@@ -1008,6 +1008,16 @@
 
     etype_name_re = r'[A-Z][A-Za-z0-9]*[a-z]+[A-Za-z0-9]*$'
 
+    @cachedproperty
+    def rules_rqlexpr_mapping(self):
+        """Return a dictionary mapping rtype to RRQLExpression for computed
+        relations.
+        """
+        rules = {}
+        for rschema in self.iter_computed_relations():
+            rules[rschema.type] = RRQLExpression(rschema.rule)
+        return rules
+
     def add_entity_type(self, edef):
         edef.name = str(edef.name)
         edef.name = bw_normalize_etype(edef.name)
@@ -1148,6 +1158,8 @@
         super(CubicWebSchema, self).rebuild_infered_relations()
         self.finalize_computed_attributes()
         self.finalize_computed_relations()
+        # remove @cachedproperty cache
+        self.__dict__.pop('rules_rqlexpr_mapping', None)
 
 
 # additional cw specific constraints ###########################################