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 |