On May 15, 2007, at 3:22 PM, Victor Kryukov wrote:

>
> Hi group,
>
> I've just installed pylons yesterday, so I apologize if the question
> I'm asking is too trivial.
>
> Here it is: I tried to redefine TemplateController as suggested in
> it's documentation string:
>
> from ljeye.lib.base import *
> import myghty.exception
>
> class TemplateController(BaseController):
>     def view(self, url):
>         try:
>             return render_response('/'+url)
>         except myghty.exception.ComponentNotFound:
>             return Response(code=404)
>
> I also placed file called 'help.myt' under /templates.
>
> Now, when I'm trying to access localhost:5000/help.myt, I'm getting
> the following error:
>
> Error(AttributeError): 'unicode' object has no attribute
> 'is_file_component'
>
> The reason for this error lies in the way Myghty handles unicode
> components:
>
> Error:
> Error(AttributeError): 'unicode' object has no attribute
> 'is_file_component'
> File:
> /usr/lib/python2.5/site-packages/Myghty-1.1-py2.5.egg/myghty/
> request.py line 227
> Context:
> 224:             try:
> 225:                 if type(component) == types.StringType:
> 226:                     component =
> self.fetch_lead_component(component)
> 227:                 elif component.is_file_component():
> 228:                     self.request_path = component.path
> 229:
> 230:                 self.request_component = component
>
> For some reason, component in my case is u'help.myt', and hence the
> type(component)==types.StringType comparison failes.
>
> Note that I'm using freshly downloaded 0.9.5 Pylons, python2.5 etc.,
> and I'm just playing with freshly created pylons project.
>
> I would appreciate if you could clarify that for me.
>

This is a funny new bug with the TemplateController and the latest  
version of routes required by Pylons 0.9.5. Routes now gives you back  
unicode values -- in this case the url passed to the  
TemplateController's action is unicode. And unfortunately Myghty has  
trouble with a component name in unicode.

There's a few ways to solve this:

o (the easiest) convert the url back to a string yourself:
             return render_response('/'+str(url))

or even:

             return render_response('/'+url.encode('utf-8'))

o upgrade to the experimental routes trunk that offers a couple ways  
of turning off unicode:
  - switch the encoding setting to None in your mapper:
     mapper = Mapper()
     mapper.encoding = None

  - switch the encoding off for the particular route:
         map.connect('*url', controller='template', action='view',  
_encoding=None)

I've logged a ticket for it here: http://pylonshq.com/project/ 
pylonshq/ticket/242

--
Philip Jenvey



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to