server/schemahooks.py
branchstable
changeset 3546 f0aecddf367e
parent 3543 ed152fe5aa8b
child 3550 f9bdcfeb12ee
--- a/server/schemahooks.py	Thu Oct 01 16:06:29 2009 +0200
+++ b/server/schemahooks.py	Fri Oct 02 08:57:07 2009 +0200
@@ -812,14 +812,15 @@
     """
     subjschema, rschema, objschema = session.schema.schema_by_eid(rdefeid)
     pendings = session.transaction_data.get('pendingeids', ())
+    pendingrdefs = session.transaction_data.setdefault('pendingrdefs', set())
     # first delete existing relation if necessary
     if rschema.is_final():
         rdeftype = 'CWAttribute'
+        pendingrdefs.add((subjschema, rschema))
     else:
         rdeftype = 'CWRelation'
+        pendingrdefs.add((subjschema, rschema, objschema))
         if not (subjschema.eid in pendings or objschema.eid in pendings):
-            pending = session.transaction_data.setdefault('pendingrdefs', set())
-            pending.add((subjschema, rschema, objschema))
             session.execute('DELETE X %s Y WHERE X is %s, Y is %s'
                             % (rschema, subjschema, objschema))
     execute = session.unsafe_execute