commit-gnue
[Top][All Lists]
Advanced

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

r5378 - trunk/gnue-common/src/datasources/drivers/appserver/appserver


From: reinhard
Subject: r5378 - trunk/gnue-common/src/datasources/drivers/appserver/appserver
Date: Fri, 19 Mar 2004 11:07:22 -0600 (CST)

Author: reinhard
Date: 2004-03-19 11:07:20 -0600 (Fri, 19 Mar 2004)
New Revision: 5378

Modified:
   trunk/gnue-common/src/datasources/drivers/appserver/appserver/Connection.py
Log:
Remove data conversions because the RPC interface will now handle that.


Modified: 
trunk/gnue-common/src/datasources/drivers/appserver/appserver/Connection.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/appserver/appserver/Connection.py 
2004-03-19 17:00:58 UTC (rev 5377)
+++ trunk/gnue-common/src/datasources/drivers/appserver/appserver/Connection.py 
2004-03-19 17:07:20 UTC (rev 5378)
@@ -55,19 +55,6 @@
 from DataObject import DataObject
 from gnue.common.datasources.drivers.appserver.Schema.Discovery.Introspection 
import Introspection
 
-# Translate Unicode to String. Called for every string parameter passed to RPC.
-# Works for lists, recursively.
-def _toString (value):
-  if type (value) == types.ListType:
-    return [_toString (x) for x in value]
-  elif type (value) == types.UnicodeType:
-    return value.encode ('utf-8')
-  elif type (value) == types.TupleType:
-    (x, y) = value
-    return (_toString (x), _toString (y))
-  else:
-    return value
-
 # TODO: move all non standart Connection functions (request, ...) into a 
subobject native
 #       to prevent namespace conflicts
 
@@ -129,21 +116,12 @@
     return self._updateCursor
 
   def request(self,table,filter,sort,fieldlist,unicodeMode=0):
-    s_table     = _toString (table)
-    s_filter    = _toString (filter)
-    s_sort      = _toString (sort)
-    s_fieldlist = _toString (fieldlist)
-    listid = self._sm.request (self._sess_id, s_table, s_filter, s_sort,
-                               s_fieldlist)
+    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):
-    s_classname   = _toString (classname)
-    s_obj_id_list = _toString (obj_id_list)
-    s_methodname  = _toString (methodname)
-    s_parameters  = _toString (parameters)
-    self._sm.call (self._sess_id, s_classname, s_obj_id_list, s_methodname,
-                   s_parameters)
+    self._sm.call (self._sess_id, classname, obj_id_list, methodname,
+                   parameters)
 
   def commit (self):
     self._updateCursor.execute ()
@@ -182,47 +160,6 @@
     self._stackpos=0
     self._unicodeMode=unicodeMode
 
-    s_classname = _toString (classname)
-    s_fieldlist = _toString (self._fieldlist)
-    self._fieldtypes = self._dataCon._sm.load (self._dataCon._sess_id,
-                                               s_classname, [''], s_fieldlist)
-    self._fieldtypes = self._fieldtypes [0]
-
-  # convert a value retrieved from RPC to the correct native Python type
-  def __rpc_to_native (self, value, typestr):
-
-    # Empty strings indicate None
-    if value == None:
-      return None
-
-    if value == '':
-      return None
-
-    # String: convert to unicode or local encoding
-    elif typestr [:6] == 'string':
-      if isinstance (value, types.StringType):
-        value = unicode (value, 'utf-8')
-      if self._unicodeMode:
-        return value
-      else:
-        return value.encode (gConfig ('textEncoding'))
-
-    # Date: convert to mx.DateTime object
-    elif typestr == 'date':
-      return mx.DateTime.ISO.ParseDate (value)
-
-    # Time: convert to mx.DateTime object
-    elif typestr == 'time':
-      return mx.DateTime.ISO.ParseTime (value)
-
-    # DateTime: convert to mx.DateTime object
-    elif typestr == '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:
       return []
@@ -240,7 +177,7 @@
       dict = {}
       j = 0
       for fieldName in self._fieldlist:
-        dict [fieldName] = self.__rpc_to_native (i [j+1], self._fieldtypes [j])
+        dict [fieldName] = i [j+1]
         j += 1
 
       dict["gnue_id"]=i[0]
@@ -279,27 +216,10 @@
     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
-        GDebug.printMesg (0, msg)
-      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 = ''
-    return s
-
   def execute (self):
     for classname in self._deleteList.keys ():
-      s_classname  = _toString (classname)
-      s_deleteList = _toString (self._deleteList [classname])
-      self._dataCon._sm.delete (self._dataCon._sess_id, s_classname,
-                                s_deleteList)
+      self._dataCon._sm.delete (self._dataCon._sess_id, classname,
+                                self._deleteList [classname])
       del self._deleteList [classname]
 
     for classname in self._updateList.keys ():
@@ -307,12 +227,8 @@
         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 ()]
-        s_classname     = _toString (classname)
-        s_id            = _toString (id)
-        s_propertynames = _toString (dict.keys ())
-        new_ids = self._dataCon._sm.store (self._dataCon._sess_id, s_classname,
-                                           [s_id], s_propertynames, [data])
+        new_ids = self._dataCon._sm.store (self._dataCon._sess_id, classname,
+                                           [id], dict.keys (), [dict.values 
()])
         dict ["gnue_id"] = new_ids [0]
       del self._updateList [classname]
       del self._updateKeyList [classname]





reply via email to

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