Loading ...
Sorry, an error occurred while loading the content.
 

[Cheetahtemplate-discuss] Unicode safe "convertTmplPathToModuleName"

Expand Messages
  • Gerold Penz
    Hi! After an upgrade from *Cheetah 2.4.0* to *Cheetah 2.4.2.1*, I had a problem with the module convertTmplPathToModuleName . Traceback BEGIN
    Message 1 of 1 , Apr 7 5:47 AM
      Hi!

      After an upgrade from *Cheetah 2.4.0* to *Cheetah 2.4.2.1*, I had a
      problem with the module "convertTmplPathToModuleName".

      Traceback BEGIN
      =====================================================================
      [07/Apr/2010:10:05:14] HTTP
      Request Headers:
      'REFERER': 'https://amjet.skischoolshop.com/de/rent/'
      'KEEP-ALIVE': '115'
      'ACCEPT-CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'
      'USER-AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de;
      rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)'
      'CONNECTION': 'keep-alive'
      'COOKIE': 'L=de; beaker.session.id=2a91fc79d912c5e1618c93a5434139b6;
      from=2010-04-14; to=2010-04-20'
      'Remote-Addr': '87.247.196.133'
      'X-REQUESTED-WITH': 'XMLHttpRequest'
      'HOST': 'amjet.skischoolshop.com'
      'ACCEPT': 'text/html, */*'
      'ACCEPT-LANGUAGE': 'de-at,de-de;q=0.8,de;q=0.6,en-us;q=0.4,en;q=0.2'
      'ACCEPT-ENCODING': 'gzip,deflate'

      'Traceback (most recent call last):
      File "/usr/local/lib/python2.6/dist-packages/cherrypy/_cprequest.py",
      line 606, in respond
      cherrypy.response.body = self.handler()
      File
      "/usr/local/lib/python2.6/dist-packages/cherrypy/_cpdispatch.py", line
      25, in __call__
      return self.callable(*self.args, **self.kwargs)
      File
      "/home/amjet_skischoolshop_com/onlineshop/assistant/__init__.py", line
      598, in get_confirm_dialog
      template = CheetahBaseTemplate(file = template_path)
      File "/home/amjet_skischoolshop_com/onlineshop/lib/template.py", line
      109, in __init__
      Cheetah.Template.Template.__init__(self, *args, **kwargs)
      File
      "/usr/local/lib/python2.6/dist-packages/Cheetah-2.4.2.1-py2.6-linux-x86_64.egg/Cheetah/Template.py",
      line 1259, in __init__
      self._compile(source, file, compilerSettings=compilerSettings)
      File
      "/usr/local/lib/python2.6/dist-packages/Cheetah-2.4.2.1-py2.6-linux-x86_64.egg/Cheetah/Template.py",
      line 1553, in _compile
      keepRefToGeneratedCode=True)
      File
      "/usr/local/lib/python2.6/dist-packages/Cheetah-2.4.2.1-py2.6-linux-x86_64.egg/Cheetah/Template.py",
      line 637, in compile
      moduleName = convertTmplPathToModuleName(file)
      File
      "/usr/local/lib/python2.6/dist-packages/Cheetah-2.4.2.1-py2.6-linux-x86_64.egg/Cheetah/convertTmplPathToModuleName.py",
      line 20, in convertTmplPathToModuleName
      return splitdrive(tmplPath)[1].translate(_pathNameTransChars)
      TypeError: character mapping must return integer, None or unicode
      '
      ------------------------------------------------------------
      params: {'template_dirname': u'rent'}
      path_info: '/assistant/get_confirm_dialog'
      =====================================================================
      Traceback END

      I commited a unicode-string as *file*-parameter onto
      ┬┤┬┤Cheetah.Template``. This was no problem with *Cheetah 2.4.0*.

      In my opinion, Cherrypy should be unicode-safe. So maybe you can do
      something with my suggestion for a new *convertTmplPathToModuleName*-module.


      CODE BEGIN
      =====================================================================
      #!/usr/bin/env python
      # coding: utf-8

      import os.path
      import string


      def _get_transchars():
      try:
      chars = string.ascii_letters + string.digits
      except AttributeError:
      chars = string.letters + string.digits
      letterlist = ['_'] * 256
      for char in chars:
      letterlist[ord(char)] = char
      return ''.join(letterlist)

      _transchars = _get_transchars()
      _transchars_unicode = unicode(_transchars)


      def convertTmplPathToModuleName(
      tmplPath, _pathNameTransChars=None, splitdrive=os.path.splitdrive
      ):
      if _pathNameTransChars is None:
      if isinstance(tmplPath, unicode):
      _pathNameTransChars = _transchars_unicode
      else:
      _pathNameTransChars = _transchars
      return splitdrive(tmplPath)[1].translate(_pathNameTransChars)
      =====================================================================
      CODE END


      Kind regards,
      Gerold Penz
      :-)


      --
      Waldhart Software
      A-6405 Pfaffenhofen, Unterdorf 145
      Tel: +43 5262 64574, Fax: +43 5262 64514

      ------------------------------------------------------------------------------
      Download Intel® Parallel Studio Eval
      Try the new software tools for yourself. Speed compiling, find bugs
      proactively, and fine-tune applications for parallel performance.
      See why Intel Parallel Studio got high marks during beta.
      http://p.sf.net/sfu/intel-sw-dev
      _______________________________________________
      Cheetahtemplate-discuss mailing list
      Cheetahtemplate-discuss@...
      https://lists.sourceforge.net/lists/listinfo/cheetahtemplate-discuss
    Your message has been successfully submitted and would be delivered to recipients shortly.