[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r5744 - in trunk/gnue-appserver/src: . classrep language
From: |
johannes |
Subject: |
r5744 - in trunk/gnue-appserver/src: . classrep language |
Date: |
Tue, 20 Apr 2004 04:28:39 -0500 (CDT) |
Author: johannes
Date: 2004-04-20 04:28:38 -0500 (Tue, 20 Apr 2004)
New Revision: 5744
Modified:
trunk/gnue-appserver/src/classrep/Procedure.py
trunk/gnue-appserver/src/classrep/Property.py
trunk/gnue-appserver/src/geasInstance.py
trunk/gnue-appserver/src/geasList.py
trunk/gnue-appserver/src/geasSession.py
trunk/gnue-appserver/src/geasSessionManager.py
trunk/gnue-appserver/src/language/Object.py
Log:
Use the new abilities of Property.py (isReference and referencedClass)
Modified: trunk/gnue-appserver/src/classrep/Procedure.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Procedure.py 2004-04-20 08:24:00 UTC
(rev 5743)
+++ trunk/gnue-appserver/src/classrep/Procedure.py 2004-04-20 09:28:38 UTC
(rev 5744)
@@ -119,8 +119,9 @@
self.module = module
self.fullName = createName (module.gnue_name, self.gnue_name)
self.isCalculated = False
+ self.isValidated = False
- self.parameters = ParameterDict (session, self)
+ self.parameters = ParameterDict (session, self)
# ---------------------------------------------------------------------------
@@ -147,3 +148,4 @@
else:
self.calcFullName = None
+ self.isValidated = True
Modified: trunk/gnue-appserver/src/classrep/Property.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Property.py 2004-04-20 08:24:00 UTC
(rev 5743)
+++ trunk/gnue-appserver/src/classrep/Property.py 2004-04-20 09:28:38 UTC
(rev 5744)
@@ -121,6 +121,7 @@
self.fullName = createName (self.module.gnue_name, self.gnue_name)
self.column = self.fullName
+ self.isValidated = False
self.isReference = False
self.referencedClass = None
@@ -173,5 +174,6 @@
self.module.classes)
self.isReference = res is not None
self.referencedClass = res
+ self.isValidated = True
Modified: trunk/gnue-appserver/src/geasInstance.py
===================================================================
--- trunk/gnue-appserver/src/geasInstance.py 2004-04-20 08:24:00 UTC (rev
5743)
+++ trunk/gnue-appserver/src/geasInstance.py 2004-04-20 09:28:38 UTC (rev
5744)
@@ -54,7 +54,16 @@
"parameter": parameterName}
gException.__init__ (self, message)
+class ResultTypeError (gException):
+ def __init__ (self, procedure, typename, result):
+ msg = u_("Procedure '%(procedure)s' expected a result of type "
+ "'%(type)s', but got type '%(resulttype)s'") \
+ % {"procedure" : procedure,
+ "type" : typename,
+ "resulttype": type (result).__name__}
+ gException.__init__ (self, msg)
+
# =============================================================================
# Instance class
# =============================================================================
@@ -66,13 +75,13 @@
# ---------------------------------------------------------------------------
def __init__ (self, session, connection, record, classdef):
- self.__session = session
+ self.__session = session
self.__connection = connection
- self.__record = record
- self.__classdef = classdef
+ self.__record = record
+ self.__classdef = classdef
# ---------------------------------------------------------------------------
- # Convert a value into the give type if possible
+ # Convert a value into the given type if possible
# ---------------------------------------------------------------------------
def __convert (self, value, propertydef, exception):
@@ -175,10 +184,10 @@
record = self.__record
for e in elements [:-1]:
propertydef = classdef.properties [e]
- if not '_' in propertydef.gnue_type:
+ if not propertydef.isReference:
raise gException, u_("Cannot resolve property name '%(name)s' because "
"'%(part)s' is not a reference property")
- classdef = self.__session.sm.classes [propertydef.gnue_type]
+ classdef = propertydef.referencedClass
key = record.getField (propertydef.column)
# if any reference on the way through the property name is None, assume
# the indirect property is None.
@@ -280,6 +289,9 @@
method = cx.buildFunction (proceduredef.gnue_name,
proceduredef.gnue_code,
params)
result = method (**params)
+ if (proceduredef.gnue_type is None) != (result is None):
+ raise ResultTypeError, (proceduredef.fullName, proceduredef.gnue_type,
+ result)
except Exception, msg:
Modified: trunk/gnue-appserver/src/geasList.py
===================================================================
--- trunk/gnue-appserver/src/geasList.py 2004-04-20 08:24:00 UTC (rev
5743)
+++ trunk/gnue-appserver/src/geasList.py 2004-04-20 09:28:38 UTC (rev
5744)
@@ -35,11 +35,11 @@
# ---------------------------------------------------------------------------
def __init__ (self, session, classdef, connection, recordset, propertylist):
- self.__session = session
- self.__classdef = classdef
+ self.__session = session
+ self.__classdef = classdef
self.__connection = connection
- self.__recordset = recordset
- self.__prefetch = propertylist # property names to be prefetched
+ self.__recordset = recordset
+ self.__prefetch = propertylist # property names to be prefetched
# ---------------------------------------------------------------------------
# Get the first instance in the list
Modified: trunk/gnue-appserver/src/geasSession.py
===================================================================
--- trunk/gnue-appserver/src/geasSession.py 2004-04-20 08:24:00 UTC (rev
5743)
+++ trunk/gnue-appserver/src/geasSession.py 2004-04-20 09:28:38 UTC (rev
5744)
@@ -49,11 +49,11 @@
except:
self.database = "gnue"
- self.__user = ""
- self.__lists = {}
- self.__listcount = 0
- self.__authAdapter = authAdapter
- self.__connection = None
+ self.__user = ""
+ self.__lists = {}
+ self.__listcount = 0
+ self.__authAdapter = authAdapter
+ self.__connection = None
self.__dirtyInstances = {}
self.sm = sm # The session manager
@@ -83,10 +83,10 @@
c = classdef
for e in elements [:-1]:
p = c.properties [e]
- if not '_' in p.gnue_type:
+ if not p.isReference:
raise gException, u_("Cannot resolve property name '%(name)s' because "
"'%(part)s' is not a reference property")
- c = self.sm.classes [p.gnue_type]
+ c = p.referencedClass
# do we already have a link?
found = False
for (alias, (table, fk_alias, fk_field, fields)) in contentdict.items ():
Modified: trunk/gnue-appserver/src/geasSessionManager.py
===================================================================
--- trunk/gnue-appserver/src/geasSessionManager.py 2004-04-20 08:24:00 UTC
(rev 5743)
+++ trunk/gnue-appserver/src/geasSessionManager.py 2004-04-20 09:28:38 UTC
(rev 5744)
@@ -41,8 +41,8 @@
def __init__ (self, connections):
self._connections = connections
- self._sessNo = 0
- self._sessions = {}
+ self._sessNo = 0
+ self._sessions = {}
self._buildInternalSession ()
classrep.init (self)
Modified: trunk/gnue-appserver/src/language/Object.py
===================================================================
--- trunk/gnue-appserver/src/language/Object.py 2004-04-20 08:24:00 UTC (rev
5743)
+++ trunk/gnue-appserver/src/language/Object.py 2004-04-20 09:28:38 UTC (rev
5744)
@@ -88,11 +88,10 @@
return None
# Convert reference fields to object references
- if string.split (datatype, '(', 1) [0] in \
- ['id', 'string', 'number', 'date', 'time', 'datetime', 'boolean']:
- return value
- else:
+ if '_' in datatype:
return Object (self.__session, datatype, value)
+ else:
+ return value
else:
raise MemberNotFoundError (self.__class, name)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r5744 - in trunk/gnue-appserver/src: . classrep language,
johannes <=