Changeset 81

Show
Ignore:
Timestamp:
2009年03月14日 12时35分55秒 (3 years ago)
Author:
jiangx
Message:

Fixed #23: robust utf/unicode conversion in lib/text.py

Location:
trunk
Files:
1 added
7 modified

Legend:

Unmodified
Added
Removed
  • trunk/pySvnManager.egg-info/SOURCES.txt

    r72 r81  
    1010config/README 
    1111contrib/mantis/021_checkin_user_as_bug_submit_user.patch 
     12contrib/trac/10110_trac_svn_hooks_chgset_date.patch 
     13contrib/trac/10115_trac_svn_hooks_ticket_range.patch 
     14contrib/trac/10116_trac_svn_hooks_fixed_status.patch 
    1215docs/index.txt 
    1316pySvnManager.egg-info/PKG-INFO 
     
    124127pysvnmanager/lib/base.py 
    125128pysvnmanager/lib/helpers.py 
     129pysvnmanager/lib/text.py 
    126130pysvnmanager/model/__init__.py 
    127131pysvnmanager/model/configobj.py 
  • trunk/pysvnmanager/controllers/authz.py

    r64 r81  
    2020 
    2121from pysvnmanager.lib.base import * 
     22from pysvnmanager.lib.text import to_unicode 
    2223from pysvnmanager.model.svnauthz import * 
    2324from pysvnmanager.model import repos as _repos 
     
    214215            self.authz.save(revision, comment=log_message) 
    215216        except Exception, e: 
    216             msg = except_to_unicode(e) 
     217            msg = to_unicode(e) 
    217218 
    218219        log.info(log_message) 
     
    237238            self.authz.save(revision, comment=log_message) 
    238239        except Exception, e: 
    239             msg = except_to_unicode(e) 
     240            msg = to_unicode(e) 
    240241         
    241242        log.info(log_message) 
  • trunk/pysvnmanager/controllers/logs.py

    r64 r81  
    2020 
    2121from pysvnmanager.lib.base import * 
     22from pysvnmanager.lib.text import to_unicode 
    2223from pysvnmanager.model import rcsbackup as _rcs 
    2324from pysvnmanager.model.svnauthz import * 
     
    177178            self.rcslog.backup(comment=log_message, user=self.login_as) 
    178179        except Exception, e: 
    179             msg = e.message 
    180             if isinstance(msg, str): 
    181                 msg = unicode(msg, 'utf-8') 
     180            msg = to_unicode(e) 
    182181            c.msg = _("Rollback failed: %s") % msg 
    183182        else: 
  • trunk/pysvnmanager/controllers/repos.py

    r64 r81  
    2020 
    2121from pysvnmanager.lib.base import * 
     22from pysvnmanager.lib.text import to_unicode 
    2223from pysvnmanager.model.svnauthz import * 
    2324from pysvnmanager.model import repos as _repos 
     
    159160        except Exception, e: 
    160161            result = "<div class='error'>" + _("Apply plugin '%(plugin)s' on '%(repos)s' Failed. Error message:<br>\n%(msg)s") % { 
    161                         "plugin": pluginname, "repos":reposname, "msg": except_to_unicode(e) } + "</div>" 
     162                        "plugin": pluginname, "repos":reposname, "msg": to_unicode(e) } + "</div>" 
    162163        else: 
    163164            result = "<div class='info'>" + _("Apply plugin '%(plugin)s' on '%(repos)s' success.") % { 
     
    184185            except Exception, e: 
    185186                result = "<div class='error'>" + _("Delete plugin '%(plugin)s' on '%(repos)s' Failed. Error message:<br>\n%(msg)s") % { 
    186                         "plugin": ", ".join(plugin_list), "repos":reposname, "msg": except_to_unicode(e) } + "</div>" 
     187                        "plugin": ", ".join(plugin_list), "repos":reposname, "msg": to_unicode(e) } + "</div>" 
    187188            else: 
    188189                result = "<div class='info'>" + _("Delete plugin '%(plugin)s' on '%(repos)s' success.") % { 
     
    200201        except Exception, e: 
    201202            result = "<div class='error'>" + _("Create repository '%(repos)s' Failed. Error message:<br>\n%(msg)s") % { 
    202                         "repos":reposname, "msg": except_to_unicode(e) } + "</div>" 
     203                        "repos":reposname, "msg": to_unicode(e) } + "</div>" 
    203204        else: 
    204205            result = "<div class='info'>" + _("Create repository '%(repos)s' success.") % {"repos":reposname} + "</div>" 
     
    219220        except Exception, e: 
    220221            result = "<div class='error'>" + _("Delete repository '%(repos)s' Failed. Error message:<br>\n%(msg)s") % { 
    221                         "repos":reposname, "msg": except_to_unicode(e) } + "</div>" 
     222                        "repos":reposname, "msg": to_unicode(e) } + "</div>" 
    222223        else: 
    223224            result = "<div class='info'>" + _("Delete blank repository '%(repos)s' success.") % {"repos":reposname} + "</div>" 
  • trunk/pysvnmanager/controllers/role.py

    r64 r81  
    2020 
    2121from pysvnmanager.lib.base import * 
     22from pysvnmanager.lib.text import to_unicode 
    2223from pysvnmanager.model.svnauthz import * 
    2324 
     
    129130            self.authz.save(revision, comment=log_message) 
    130131        except Exception, e: 
    131             msg = except_to_unicode(e) 
     132            msg = to_unicode(e) 
    132133 
    133134        log.info(log_message) 
     
    151152                self.authz.save(revision, comment=log_message) 
    152153            except Exception, e: 
    153                 msg = except_to_unicode(e) 
     154                msg = to_unicode(e) 
    154155 
    155156        log.info(log_message) 
     
    173174            self.authz.save(revision, comment=log_message) 
    174175        except Exception, e: 
    175             msg = except_to_unicode(e) 
     176            msg = to_unicode(e) 
    176177 
    177178        log.info(log_message) 
     
    195196                self.authz.save(revision, comment=log_message) 
    196197            except Exception, e: 
    197                 msg = except_to_unicode(e) 
    198  
    199         log.info(log_message) 
    200         if msg: log.error(msg) 
    201  
    202         return msg 
    203  
    204          
     198                msg = to_unicode(e) 
     199 
     200        log.info(log_message) 
     201        if msg: log.error(msg) 
     202 
     203        return msg 
     204 
     205         
  • trunk/pysvnmanager/lib/base.py

    r55 r81  
    4040#log = logging.getLogger(__name__) 
    4141 
    42 def get_unicode(msg, escape=False): 
    43     if isinstance(msg, basestring) and not isinstance(msg, unicode): 
    44         msg = unicode(msg, 'utf-8') 
    45     if escape and isinstance(msg, basestring): 
    46         msg = msg.encode('raw_unicode_escape') 
    47     return msg 
    48  
    49 def get_utf8(msg, escape=False): 
    50     if isinstance(msg, unicode): 
    51         msg = msg.encode('utf-8') 
    52     if escape and isinstance(msg, basestring): 
    53         msg = repr(msg)[1:-1] 
    54     return msg 
    55  
    56 def except_to_unicode(e): 
    57     msg = ', '.join(e.args) 
    58     return get_unicode(msg) 
    59  
    60 def except_to_utf8(e): 
    61     msg = ', '.join(e.args) 
    62     return get_utf8(msg) 
    63  
    6442class BaseController(WSGIController): 
    6543    requires_auth = [] 
  • trunk/pysvnmanager/model/rcsbackup.py

    r50 r81  
    2828log = logging.getLogger(__name__) 
    2929 
     30sys.path.insert(0,os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) 
     31from pysvnmanager.lib.text import to_unicode, to_utf8 
     32 
    3033#reload(sys) # in Python2.5, method sys.setdefaultencoding  
    3134            #will be delete after initialize. we need reload it. 
     
    3740CMD_RLOG="RCSINIT= rlog" 
    3841CMD_RCSDIFF="RCSINIT= rcsdiff" 
    39  
    4042 
    4143def is_rcs_exist(wcfile): 
     
    4648        rcsfile = wcfile+',v' 
    4749    return os.path.exists(rcsfile) 
    48  
    49 def get_unicode(msg, escape=False): 
    50     if isinstance(msg, basestring) and not isinstance(msg, unicode): 
    51         msg = unicode(msg, 'utf-8') 
    52     if escape and isinstance(msg, basestring): 
    53         msg = msg.encode('raw_unicode_escape') 
    54     return msg 
    55  
    56 def get_utf8(msg, escape=False): 
    57     if isinstance(msg, unicode): 
    58         msg = msg.encode('utf-8') 
    59     if escape and isinstance(msg, basestring): 
    60         msg = repr(msg)[1:-1] 
    61     return msg 
    6250 
    6351def backup(wcfile, comment='', user=''): 
     
    7159        comment = "no message." 
    7260     
    73     wcfile = get_utf8(wcfile) 
    74     comment = get_utf8(comment) 
    75     user = get_utf8(user, escape=True) 
     61    wcfile = to_utf8(wcfile) 
     62    comment = to_utf8(comment) 
     63    user = to_utf8(user, escape=True) 
    7664     
    7765    cmd = [] 
     
    11199    buff = os.popen(cmd).read().strip() 
    112100    if buff: 
    113         raise Exception, "Command: %s\nError Message: %s\n" % (get_unicode(cmd), get_unicode(buff)) 
     101        raise Exception, "Command: %s\nError Message: %s\n" % (to_unicode(cmd), to_unicode(buff)) 
    114102 
    115103 
     
    124112    cmd = '%(cmd)s %(opts)s -q "%(file)s"' % {'cmd':CMD_CO, "opts":opts, "file":wcfile } 
    125113    buff = os.popen(cmd).read().strip() 
    126     return get_unicode(buff) 
     114    return to_unicode(buff) 
    127115 
    128116def differ(filename, rev1="", rev2=""): 
    129     filename=get_utf8(filename) 
     117    filename=to_utf8(filename) 
    130118    opts="" 
    131119    if rev1 and rev2: 
     
    137125    log.debug('Command: '+cmd) 
    138126    buff = os.popen(cmd).read() 
    139     return get_unicode(buff) 
     127    return to_unicode(buff) 
    140128 
    141129class RcsLog(object): 
     
    291279            commit_time = "" 
    292280            if m: 
    293                 commit_time = get_unicode(m.group(1)) 
     281                commit_time = to_unicode(m.group(1)) 
    294282            else: 
    295283                log.error("not find date in line: %s" % lines[1]) 
     
    300288            commit_author = "" 
    301289            if m: 
    302                 commit_author = get_unicode(eval("'%s'" % m.group(1))) 
     290                commit_author = to_unicode(eval("'%s'" % m.group(1))) 
    303291            else: 
    304292                log.error("not find author in line: %s" % lines[1]) 
     
    306294             
    307295            # logs... 
    308             commit_log = get_unicode('\n'.join(lines[2:])) 
     296            commit_log = to_unicode('\n'.join(lines[2:])) 
    309297             
    310298            self.revs.append({'revision':commit_revision,