hooks/syncschema.py
changeset 3777 3ef8cdb5fb1c
parent 3774 1eca47d59fd9
parent 3726 986839199f23
child 3890 d7a270f50f54
--- a/hooks/syncschema.py	Mon Oct 19 20:22:01 2009 +0200
+++ b/hooks/syncschema.py	Wed Oct 21 17:32:20 2009 +0200
@@ -16,6 +16,8 @@
 from yams.buildobjs import EntityType, RelationType, RelationDefinition
 from yams.schema2sql import eschema2sql, rschema2sql, type_from_constraints
 
+from logilab.common.decorators import clear_cache
+
 from cubicweb import ValidationError, RepositoryError
 from cubicweb.selectors import entity_implements
 from cubicweb.schema import META_RTYPES, VIRTUAL_RTYPES, CONSTRAINTS
@@ -144,11 +146,19 @@
     def __init__(self, session):
         hook.SingleLastOperation.__init__(self, session)
 
+    def precommit_event(self):
+        for eschema in self.repo.schema.entities():
+            if not eschema.final:
+                clear_cache(eschema, 'ordered_relations')
+
     def commit_event(self):
         rebuildinfered = self.session.data.get('rebuild-infered', True)
         repo = self.session.repo
         repo.set_schema(repo.schema, rebuildinfered=rebuildinfered)
 
+    def rollback_event(self):
+        self.precommit_event()
+
 
 class MemSchemaOperation(hook.Operation):
     """base class for schema operations"""