hooks/syncschema.py
changeset 4835 13b0b96d7982
parent 4829 3b79a0fc91db
child 4845 dc351b96f596
equal deleted inserted replaced
4834:b718626a0e60 4835:13b0b96d7982
   799         # final entities can't be deleted, don't care about that
   799         # final entities can't be deleted, don't care about that
   800         name = self.entity.name
   800         name = self.entity.name
   801         if name in CORE_ETYPES:
   801         if name in CORE_ETYPES:
   802             raise ValidationError(self.entity.eid, {None: self._cw._('can\'t be deleted')})
   802             raise ValidationError(self.entity.eid, {None: self._cw._('can\'t be deleted')})
   803         # delete every entities of this type
   803         # delete every entities of this type
   804         self._cw.unsafe_execute('DELETE %s X' % name)
   804         self._cw.execute('DELETE %s X' % name)
   805         DropTable(self._cw, table=SQL_PREFIX + name)
   805         DropTable(self._cw, table=SQL_PREFIX + name)
   806         MemSchemaCWETypeDel(self._cw, name)
   806         MemSchemaCWETypeDel(self._cw, name)
   807 
   807 
   808 
   808 
   809 class AfterDelCWETypeHook(DelCWETypeHook):
   809 class AfterDelCWETypeHook(DelCWETypeHook):
   984             rdeftype = 'CWRelation'
   984             rdeftype = 'CWRelation'
   985             pendingrdefs.add((subjschema, rschema, objschema))
   985             pendingrdefs.add((subjschema, rschema, objschema))
   986             if not (subjschema.eid in pendings or objschema.eid in pendings):
   986             if not (subjschema.eid in pendings or objschema.eid in pendings):
   987                 session.execute('DELETE X %s Y WHERE X is %s, Y is %s'
   987                 session.execute('DELETE X %s Y WHERE X is %s, Y is %s'
   988                                 % (rschema, subjschema, objschema))
   988                                 % (rschema, subjschema, objschema))
   989         execute = session.unsafe_execute
   989         execute = session.execute
   990         rset = execute('Any COUNT(X) WHERE X is %s, X relation_type R,'
   990         rset = execute('Any COUNT(X) WHERE X is %s, X relation_type R,'
   991                        'R eid %%(x)s' % rdeftype, {'x': self.eidto})
   991                        'R eid %%(x)s' % rdeftype, {'x': self.eidto})
   992         lastrel = rset[0][0] == 0
   992         lastrel = rset[0][0] == 0
   993         # we have to update physical schema systematically for final and inlined
   993         # we have to update physical schema systematically for final and inlined
   994         # relations, but only if it's the last instance for this relation type
   994         # relations, but only if it's the last instance for this relation type