hooks/syncschema.py
changeset 4591 47acae3cb778
parent 4570 ede247bbbf62
child 4624 1b46d5ece0d5
equal deleted inserted replaced
4590:2172c8c29fe6 4591:47acae3cb778
   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