[Top][All Lists]
[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)
# ---------------------------------------------------------------------------
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r5811 - in trunk/gnue-appserver: . src,
johannes <=