159 clear_cache(eschema, 'ordered_relations') |
159 clear_cache(eschema, 'ordered_relations') |
160 |
160 |
161 def commit_event(self): |
161 def commit_event(self): |
162 rebuildinfered = self.session.data.get('rebuild-infered', True) |
162 rebuildinfered = self.session.data.get('rebuild-infered', True) |
163 repo = self.session.repo |
163 repo = self.session.repo |
164 repo.set_schema(repo.schema, rebuildinfered=rebuildinfered) |
164 # commit event should not raise error, while set_schema has chances to |
165 # CWUser class might have changed, update current session users |
165 # do so because it triggers full vreg reloading |
166 cwuser_cls = self.session.vreg['etypes'].etype_class('CWUser') |
166 try: |
167 for session in repo._sessions.values(): |
167 repo.set_schema(repo.schema, rebuildinfered=rebuildinfered) |
168 session.user.__class__ = cwuser_cls |
168 # CWUser class might have changed, update current session users |
|
169 cwuser_cls = self.session.vreg['etypes'].etype_class('CWUser') |
|
170 for session in repo._sessions.values(): |
|
171 session.user.__class__ = cwuser_cls |
|
172 except: |
|
173 self.critical('error while setting schmea', exc_info=True) |
169 |
174 |
170 def rollback_event(self): |
175 def rollback_event(self): |
171 self.precommit_event() |
176 self.precommit_event() |
172 |
177 |
173 |
178 |