Changeset 8612 for mauRepo/MolesManager


Ignore:
Timestamp:
05/10/12 11:34:45 (7 years ago)
Author:
mnagni
Message:

djencoder fix for Windows machines

Location:
mauRepo/MolesManager/trunk/cedaMoles/MolesManager
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • mauRepo/MolesManager/trunk/cedaMoles/MolesManager/djencoder.py

    r8611 r8612  
    9898            return self._iterencode(o, markers) 
    9999 
    100  
    101         #Guarantee that works in windows                  
    102         if self.ensure_ascii: 
     100        try: 
     101            #Guarantee that works in windows                  
     102            if self.ensure_ascii: 
     103                    _encoder = encode_basestring_ascii 
     104            else: 
    103105                _encoder = encode_basestring_ascii 
    104         else: 
    105             _encoder = encode_basestring_ascii 
    106         if self.encoding != 'utf-8': 
    107             def _encoder(o, _orig_encoder=_encoder, _encoding=self.encoding): 
    108                 if isinstance(o, str): 
    109                     o = o.decode(_encoding) 
    110                 return _orig_encoder(o) 
     106            if self.encoding != 'utf-8': 
     107                def _encoder(o, _orig_encoder=_encoder, _encoding=self.encoding): 
     108                    if isinstance(o, str): 
     109                        o = o.decode(_encoding) 
     110                    return _orig_encoder(o) 
     111        except Exception as e: 
     112            DJEncoder.log.error(e) 
    111113                 
    112114         
  • mauRepo/MolesManager/trunk/cedaMoles/MolesManager/djencoder_patch.py

    r8611 r8612  
    3434this is assumed to be a patch for windows machine for the JSONEncode class 
    3535''' 
    36 import re 
     36from json.encoder import py_encode_basestring_ascii 
    3737try: 
    3838    from _json import encode_basestring_ascii as c_encode_basestring_ascii 
    3939except ImportError: 
    4040    c_encode_basestring_ascii = None 
    41 try: 
    42     from _json import make_encoder as c_make_encoder 
    43 except ImportError: 
    44     c_make_encoder = None 
    45  
    46 ESCAPE = re.compile(r'[\x00-\x1f\\"\b\f\n\r\t]') 
    47 ESCAPE_ASCII = re.compile(r'([\\"]|[^\ -~])') 
    48 HAS_UTF8 = re.compile(r'[\x80-\xff]') 
    49 ESCAPE_DCT = { 
    50     '\\': '\\\\', 
    51     '"': '\\"', 
    52     '\b': '\\b', 
    53     '\f': '\\f', 
    54     '\n': '\\n', 
    55     '\r': '\\r', 
    56     '\t': '\\t', 
    57 } 
    58 for i in range(0x20): 
    59     ESCAPE_DCT.setdefault(chr(i), '\\u{0:04x}'.format(i)) 
    60     #ESCAPE_DCT.setdefault(chr(i), '\\u%04x' % (i,)) 
    61  
    62 # Assume this produces an infinity on all machines (probably not guaranteed) 
    63 INFINITY = float('1e66666') 
    64 FLOAT_REPR = repr 
    65  
    66 def encode_basestring(s): 
    67     """Return a JSON representation of a Python string 
    68  
    69     """ 
    70     def replace(match): 
    71         return ESCAPE_DCT[match.group(0)] 
    72     return '"' + ESCAPE.sub(replace, s) + '"' 
    73  
    74  
    75 def py_encode_basestring_ascii(s): 
    76     """Return an ASCII-only JSON representation of a Python string 
    77  
    78     """ 
    79     if isinstance(s, str) and HAS_UTF8.search(s) is not None: 
    80         s = s.decode('utf-8') 
    81     def replace(match): 
    82         s = match.group(0) 
    83         try: 
    84             return ESCAPE_DCT[s] 
    85         except KeyError: 
    86             n = ord(s) 
    87             if n < 0x10000: 
    88                 return '\\u{0:04x}'.format(n) 
    89                 #return '\\u%04x' % (n,) 
    90             else: 
    91                 # surrogate pair 
    92                 n -= 0x10000 
    93                 s1 = 0xd800 | ((n >> 10) & 0x3ff) 
    94                 s2 = 0xdc00 | (n & 0x3ff) 
    95                 return '\\u{0:04x}\\u{1:04x}'.format(s1, s2) 
    96                 #return '\\u%04x\\u%04x' % (s1, s2) 
    97     return '"' + str(ESCAPE_ASCII.sub(replace, s)) + '"' 
    9841 
    9942 
Note: See TracChangeset for help on using the changeset viewer.