commit-gnue
[Top][All Lists]
Advanced

[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: Sat, 18 Oct 2003 15:07:53 -0400

CVSROOT:        /cvsroot/gnue
Module name:    gnue-common
Branch:         
Changes by:     Reinhard Mueller <address@hidden>       03/10/18 15:07:53

Modified files:
        src/datasources/drivers/appserver/appserver: Driver.py 

Log message:
        Recode data to utf-8 just before it is posted to the server, so that 
all data
        in the driver's cache remains coded in the original text encoding. This 
fixes
        inserting new records containing non-ASCII data.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-common/src/datasources/drivers/appserver/appserver/Driver.py.diff?tr1=1.21&tr2=1.22&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.21 
gnue-common/src/datasources/drivers/appserver/appserver/Driver.py:1.22
*** gnue-common/src/datasources/drivers/appserver/appserver/Driver.py:1.21      
Fri Oct 10 07:36:12 2003
--- gnue-common/src/datasources/drivers/appserver/appserver/Driver.py   Sat Oct 
18 15:07:52 2003
***************
*** 175,230 ****
         self._updateList[classname]=[]
         self._updateKeyList[classname]=[]
  
-     # convert data to transfer encoding (utf-8)
-     for key in fieldDict.keys():
-       value=fieldDict[key]
- 
-       # convert Strings from local encoding to 'utf-8'
-       if type(value) == types.StringType:
-         fieldDict[key] = 
unicode(value,gConfig('textEncoding')).encode('utf-8')
- 
-         # raise Warning if running in unicode mode
-         if self._unicodeMode:
-           GDebug.printMesg(0,'WARNING: non-unicode passed to the dbdriver 
(%s)' % value)
-           
-       # recode unicode strings to 'utf-8'
-       elif type(value) == types.UnicodeType:
-         fieldDict[key] = value.encode('utf-8')
-        
      self._updateList[classname].append(fieldDict)
      self._updateKeyList[classname].append(id)
  
!   def execute(self,classname):
!     #try:
!       if self._deleteList.has_key(classname): 
!         result = self._dataCon._sm.delete(self._dataCon._sess_id,classname,
!                                         self._deleteList[classname])
!       
!         self._deleteList[classname]=[]
!       
!     #except:
!     #  return
  
!    # try:
!       while len(self._updateList[classname]):
          id = self._updateKeyList[classname].pop()
          dict = self._updateList[classname].pop()
          # TODO: merge calls with similar updated fields (=dict.values())
!         result = 
self._dataCon._sm.store(self._dataCon._sess_id,classname,[id],
!                                          dict.keys(),[dict.values()])
!       
!       self._updateList[classname]=[]
!       self._updateKeyList[classname]=[]
  
!     #except:
!     #  return
!     
!   def revert(self,classname):
!     if self._deleteList.has_key(classname):
!       self._deleteList[classname]=[]
!     if self._updateList.has_key(classname):
!       self._updateList[classname]=[]
!       self._updateKeyList[classname]=[] 
  
  
  class Appserver_RecordSet(GDataObjects.RecordSet):
--- 175,218 ----
         self._updateList[classname]=[]
         self._updateKeyList[classname]=[]
  
      self._updateList[classname].append(fieldDict)
      self._updateKeyList[classname].append(id)
  
!   # convert a string or a unicode string 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
!         GDebug.printMesg (0, msg)
!       s = unicode (s, gConfig ('textEncoding'))
!     if type (s) == types.UnicodeType:
!       s = s.encode ('utf-8')
!     return s
  
!   def execute (self, classname):
!     if self._deleteList.has_key (classname): 
!       result = self._dataCon._sm.delete (self._dataCon._sess_id, classname,
!                                          self._deleteList [classname])
!       del self._deleteList [classname]
! 
!     if self._updateList.has_key (classname):
!       while len (self._updateList [classname]):
          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 ()]
!         result = self._dataCon._sm.store (self._dataCon._sess_id, classname,
!                                           [id], dict.keys(), [data])
! 
!       del self._updateList [classname]
!       del self._updateKeyList [classname]
  
!   def revert (self, classname):
!     if self._deleteList.has_key (classname):
!       del self._deleteList [classname]
!     if self._updateList.has_key (classname):
!       del self._updateList [classname]
!       del self._updateKeyList [classname]
  
  
  class Appserver_RecordSet(GDataObjects.RecordSet):




reply via email to

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