commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

r5811 - in trunk/gnue-appserver: . src


From: johannes
Subject: r5811 - in trunk/gnue-appserver: . src
Date: Thu, 13 May 2004 06:51:22 -0500 (CDT)

Author: johannes
Date: 2004-05-13 06:51:19 -0500 (Thu, 13 May 2004)
New Revision: 5811

Modified:
   trunk/gnue-appserver/BUGS
   trunk/gnue-appserver/src/data.py
   trunk/gnue-appserver/src/geasInstance.py
Log:
Reference fields are checked for referential integrity


Modified: trunk/gnue-appserver/BUGS
===================================================================
--- trunk/gnue-appserver/BUGS   2004-05-12 20:09:51 UTC (rev 5810)
+++ trunk/gnue-appserver/BUGS   2004-05-13 11:51:19 UTC (rev 5811)
@@ -11,7 +11,3 @@
   random order. This means that, in case newly inserted instances reference
   each other, the database might throw a foreign key violation.
 
-* Appserver doesn't test referential integrity for reference fields.
-
-* Trying to return a non RPC transportable type from a procedure (e.g. an
-  object) results in a confusing exception.

Modified: trunk/gnue-appserver/src/data.py
===================================================================
--- trunk/gnue-appserver/src/data.py    2004-05-12 20:09:51 UTC (rev 5810)
+++ trunk/gnue-appserver/src/data.py    2004-05-13 11:51:19 UTC (rev 5811)
@@ -459,7 +459,7 @@
     checktype (table, UnicodeType)
     checktype (row, UnicodeType)
     checktype (fields, ListType)
-    for fields_element in fields: 
+    for fields_element in fields:
       checktype (fields_element, UnicodeType)
 
     uncachedFields = []

Modified: trunk/gnue-appserver/src/geasInstance.py
===================================================================
--- trunk/gnue-appserver/src/geasInstance.py    2004-05-12 20:09:51 UTC (rev 
5810)
+++ trunk/gnue-appserver/src/geasInstance.py    2004-05-13 11:51:19 UTC (rev 
5811)
@@ -230,6 +230,14 @@
 
     __value = self.__convert (value, propertydef, PropertyValueError)
 
+    if propertydef.isReference and __value is not None:
+      # check wether the referenced object exists or not
+      table = propertydef.referencedClass.table
+      record = self.__connection.findRecord (table, __value, [u'gnue_id'])
+      if record is None or record.getField (u'gnue_id') != __value:
+        raise PropertyValueError, (propertydef.fullName, value)
+
+
     self.__record.putField (propertydef.column, __value)
 
   # ---------------------------------------------------------------------------





reply via email to

[Prev in Thread] Current Thread [Next in Thread]