[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue-common/src/datasources/drivers/appserver/a...
From: |
Reinhard Mueller |
Subject: |
gnue-common/src/datasources/drivers/appserver/a... |
Date: |
Sun, 19 Oct 2003 09:17:46 -0400 |
CVSROOT: /cvsroot/gnue
Module name: gnue-common
Branch:
Changes by: Reinhard Mueller <address@hidden> 03/10/19 09:17:46
Modified files:
src/datasources/drivers/appserver/appserver: Driver.py
Log message:
Convert values received from the RPC interface into native Python
values.
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-common/src/datasources/drivers/appserver/appserver/Driver.py.diff?tr1=1.25&tr2=1.26&r1=text&r2=text
Patches:
Index: gnue-common/src/datasources/drivers/appserver/appserver/Driver.py
diff -c gnue-common/src/datasources/drivers/appserver/appserver/Driver.py:1.25
gnue-common/src/datasources/drivers/appserver/appserver/Driver.py:1.26
*** gnue-common/src/datasources/drivers/appserver/appserver/Driver.py:1.25
Sat Oct 18 17:42:03 2003
--- gnue-common/src/datasources/drivers/appserver/appserver/Driver.py Sun Oct
19 09:17:45 2003
***************
*** 42,48 ****
import types
import md5
import sys
! from mx import DateTime
class Appserver_Connector:
def __init__(self, connectData):
--- 42,48 ----
import types
import md5
import sys
! import mx.DateTime, mx.DateTime.ISO
class Appserver_Connector:
def __init__(self, connectData):
***************
*** 85,91 ****
def request(self,table,filter,sort,fieldlist,unicodeMode=0):
listid = self._sm.request(self._sess_id,table,filter,sort,fieldlist)
! return Appserver_ListCursor(self,listid,fieldlist,unicodeMode)
def call(self,classname,obj_id_list,methodname,parameters):
self._sm.call(self._sess_id,classname,obj_id_list,methodname,parameters)
--- 85,91 ----
def request(self,table,filter,sort,fieldlist,unicodeMode=0):
listid = self._sm.request(self._sess_id,table,filter,sort,fieldlist)
! return Appserver_ListCursor(self,listid,table,fieldlist,unicodeMode)
def call(self,classname,obj_id_list,methodname,parameters):
self._sm.call(self._sess_id,classname,obj_id_list,methodname,parameters)
***************
*** 102,113 ****
self._sm.close(self._sess_id,commit)
class Appserver_ListCursor:
! def __init__(self,dataCon,listid,fieldlist,unicodeMode=0):
self._dataCon=dataCon
self._listid=listid
self._fieldlist=fieldlist
self._stackpos=0
self._unicodeMode=unicodeMode
def fetch(self,count=5):
if self._stackpos == -1:
--- 102,146 ----
self._sm.close(self._sess_id,commit)
class Appserver_ListCursor:
! def __init__(self,dataCon,listid,classname,fieldlist,unicodeMode=0):
self._dataCon=dataCon
self._listid=listid
self._fieldlist=fieldlist
self._stackpos=0
self._unicodeMode=unicodeMode
+ self._fieldtypes = self._dataCon._sm.load (self._dataCon._sess_id,
+ classname, [''],
self._fieldlist)
+
+ # convert a value retrieved from RPC to the correct native Python type
+ def __rpc_to_native (self, value, type):
+
+ # Empty strings indicate None
+ if value == '':
+ return None
+
+ # String: convert to unicode or local encoding
+ elif type [:7] == 'string(':
+ value = unicode (value, 'utf-8')
+ if self._unicodeMode:
+ return value
+ else:
+ return value.encode (gConfig ('textEncoding'))
+
+ # Date: convert to mx.DateTime object
+ elif type == 'date':
+ return mx.DateTime.ISO.ParseDate (value)
+
+ # Time: convert to mx.DateTime object
+ elif type == 'time':
+ return mx.DateTime.ISO.ParseTime (value)
+
+ # DateTime: convert to mx.DateTime object
+ elif type == 'datetime':
+ return mx.DateTime.ISO.ParseDateTime (value)
+
+ # All others (id, number, boolean, reference): no need to convert
+ else:
+ return value
def fetch(self,count=5):
if self._stackpos == -1:
***************
*** 123,147 ****
list = []
for i in result:
- # xmlrpc GNURPC driver changes None into 1
- # so we have to check for None or 1
- # while (Instance!=None) and (Instance!=1):
dict = {}
! j = 1
for fieldName in self._fieldlist:
! value = i[j]
!
! # convert Strings to unicode
! if type(value) == types.StringType:
! value = unicode(value,'utf-8')
!
! # recode unicode strings to standart encoding
! if (type(value) == types.UnicodeType) and \
! (not self._unicodeMode):
! value = value.encode(gConfig('textEncoding'))
!
! dict[fieldName] = value
! j=j+1
dict["gnue_id"]=i[0]
list.append(dict)
--- 156,166 ----
list = []
for i in result:
dict = {}
! j = 0
for fieldName in self._fieldlist:
! dict [fieldName] = self.__rpc_to_native (i [j+1], self._fieldtypes
[j])
! j += 1
dict["gnue_id"]=i[0]
list.append(dict)
***************
*** 179,186 ****
self._updateList[classname].append(fieldDict)
self._updateKeyList[classname].append(id)
! # convert a string, a unicode string or a date to utf-8
! def _to_utf_8 (self, s):
if type (s) == types.StringType:
if self._unicodeMode:
msg = 'WARNING: non-unicode passed to the dbdriver (%s)' % value
--- 198,205 ----
self._updateList[classname].append(fieldDict)
self._updateKeyList[classname].append(id)
! # convert a native Python type into something transportable by RPC
! def __native_to_rpc (self, s):
if type (s) == types.StringType:
if self._unicodeMode:
msg = 'WARNING: non-unicode passed to the dbdriver (%s)' % value
***************
*** 188,194 ****
s = unicode (s, gConfig ('textEncoding'))
if type (s) == types.UnicodeType:
s = s.encode ('utf-8')
! elif type (s) == DateTime.DateTimeType:
s = s.date + ' ' + s.time
elif s is None:
s = ''
--- 207,213 ----
s = unicode (s, gConfig ('textEncoding'))
if type (s) == types.UnicodeType:
s = s.encode ('utf-8')
! elif type (s) == mx.DateTime.DateTimeType:
s = s.date + ' ' + s.time
elif s is None:
s = ''
***************
*** 205,211 ****
id = self._updateKeyList[classname].pop()
dict = self._updateList[classname].pop()
# TODO: merge calls with similar updated fields (=dict.values())
! data = [self._to_utf_8 (x) for x in dict.values ()]
new_ids = self._dataCon._sm.store (self._dataCon._sess_id, classname,
[id], dict.keys(), [data])
dict ["gnue_id"] = new_ids [0]
--- 224,230 ----
id = self._updateKeyList[classname].pop()
dict = self._updateList[classname].pop()
# TODO: merge calls with similar updated fields (=dict.values())
! data = [self.__native_to_rpc (x) for x in dict.values ()]
new_ids = self._dataCon._sm.store (self._dataCon._sess_id, classname,
[id], dict.keys(), [data])
dict ["gnue_id"] = new_ids [0]
- gnue-common/src/datasources/drivers/appserver/a..., Jan Ischebeck, 2003/10/07
- gnue-common/src/datasources/drivers/appserver/a..., Jan Ischebeck, 2003/10/07
- gnue-common/src/datasources/drivers/appserver/a..., Jan Ischebeck, 2003/10/10
- gnue-common/src/datasources/drivers/appserver/a..., Reinhard Mueller, 2003/10/18
- gnue-common/src/datasources/drivers/appserver/a..., Reinhard Mueller, 2003/10/18
- gnue-common/src/datasources/drivers/appserver/a..., Reinhard Mueller, 2003/10/18
- gnue-common/src/datasources/drivers/appserver/a..., Reinhard Mueller, 2003/10/18
- gnue-common/src/datasources/drivers/appserver/a..., Reinhard Mueller, 2003/10/18
- gnue-common/src/datasources/drivers/appserver/a...,
Reinhard Mueller <=
- gnue-common/src/datasources/drivers/appserver/a..., Reinhard Mueller, 2003/10/19