--- 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"""