Ticket #1370: dCursorMixin.py.patch

File dCursorMixin.py.patch, 1.3 kB (added by JacekK, 2 years ago)
  • dCursorMixin.py

    old new  
    954954        except KeyError: 
    955955            fldType = self._fldTypeFromDB(fld) 
    956956        nonUpdateFields = self.getNonUpdateFields() 
    957         if fldType is not None
     957        if fldType is not None and val is not None
    958958            if fldType != type(val): 
    959959                convTypes = (str, unicode, int, float, long, complex) 
    960                 if isinstance(val, convTypes) and isinstance(rec[fld], basestring): 
    961                     if isinstance(fldType, str): 
     960                if issubclass(fldType, basestring) and isinstance(val, convTypes): 
     961                    if issubclass(fldType, str): 
    962962                        val = ustr(val) 
    963963                    else: 
    964964                        val = unicode(val) 
    965                 elif isinstance(rec[fld], int) and isinstance(val, bool): 
     965                elif issubclass(fldType, int) and isinstance(val, bool): 
    966966                    # convert bool to int (original field val was bool, but UI 
    967967                    # changed to int. 
    968968                    val = int(val) 
    969                 elif isinstance(rec[fld], int) and isinstance(val, long): 
     969                elif issubclass(fldType, int) and isinstance(val, long): 
    970970                    # convert long to int (original field val was int, but UI 
    971971                    # changed to long. 
    972972                    val = int(val) 
    973                 elif isinstance(rec[fld], long) and isinstance(val, int): 
     973                elif issubclass(fldType, long) and isinstance(val, int): 
    974974                    # convert int to long (original field val was long, but UI 
    975975                    # changed to int. 
    976976                    val = long(val)