Worked - like - charm.

:)

On Monday, October 7, 2013 4:37:02 PM UTC+2, Massimo Di Pierro wrote:
>
> This is the problem:
>
>     <table border="0" cellpadding="0" cellspacing="0" width="100%">
>
> Notice you are extending mailing/template.html and you may have more 
> similar problems there.
>
> This is subtle. auth.messages.reset_password is supposed to be a string 
> with placeholders like %(key)s. Internally the placeholders are replaced 
> using 
>
>    message = auth.messages.reset_password % dict(key=....)
>
> You generate auth.messages.reset_password using response.render and your 
> template include %" and perhaps other % symbols. So when web2py does
>
>    message = auth.messages.reset_password % dict(key=....)
>
> it expects % to be an escape symbol for a placeholder but %" is an invalid 
> placeholder.
> So what do you do? You must replace all % which are not placeholders with 
> %%. This can be automated:
>
> 1) define:
>
> def fixit(text):
>     import re
>     return re.compile('(\%)[^(]').sub('%%',text)
>
> 2) In your code define:
>
> auth.messages.reset_password = fixit(response.render(....))
>
> et voila'.
>
> Massimo
>
> On Monday, 7 October 2013 09:29:08 UTC-5, Massimo Di Pierro wrote:
>>
>>
>>
>> On Monday, 7 October 2013 09:04:07 UTC-5, lesssugar wrote:
>>>
>>> Here's the code of mailing/pass_reset.html:
>>>
>>> {{extend 'mailing/template.html'}}
>>>
>>> <tr>
>>>     <td bgcolor="#ffffff" style="padding: 40px 30px 40px 30px;">
>>>         <table border="0" cellpadding="0" cellspacing="0" width="100%">
>>>             <tbody>
>>>                 <tr>
>>>                     <td style="color: #000000; font-family: Arial, 
>>> sans-serif; font-size: 20px;">
>>>                         <b>Your requested password reset</b>
>>>                     </td>
>>>                 </tr>
>>>                 <tr>
>>>                     <td style="padding: 20px 0 30px 0; color: #333333; 
>>> font-family: Arial, sans-serif; font-size: 14px; line-height: 22px;">
>>>                         Click the link below to continue:
>>>                     </td>
>>>                 </tr>
>>>                 <tr>
>>>                     <td style="padding: 20px 0 30px 0; color: #333333; 
>>> font-family: Arial, sans-serif; font-size: 14px; line-height: 22px;">
>>>                         {{=link}}
>>>                     </td>
>>>                 </tr>
>>>                 <tr>
>>>                     <td style="padding: 10px 0 20px 0; color: #666666; 
>>> font: italic 14px Georgia,serif; line-height: 22px;">
>>>                         MR Team
>>>                     </td>
>>>                 </tr>
>>>             </tbody>
>>>         </table>
>>>     </td>
>>> </tr>
>>>
>>> The view extends mailing/template.html but I used the temaplate for 
>>> other mailings which work correct, so I guess the template is not a problem.
>>>
>>>
>>> On Monday, October 7, 2013 3:29:20 PM UTC+2, Massimo Di Pierro wrote:
>>>>
>>>> Sorry. Now I understand better what you are trying to do. Your invalid 
>>>> character must be in mailing/pass_reset.html. Can you show us that 
>>>> file?
>>>>
>>>> On Monday, 7 October 2013 04:17:53 UTC-5, lesssugar wrote:
>>>>>
>>>>> Your problem does not come from the code you show us
>>>>>
>>>>>
>>>>> When I comment this piece of code *(A)*:
>>>>> auth.messages.reset_password = response.render(
>>>>>     'mailing/pass_reset.html',
>>>>>     dict(subject='Password reset',
>>>>>         link = 'http://'+request.env.http_host+URL('default', 'user', 
>>>>> args=['reset_password'])+'/%(key)s'))
>>>>>
>>>>> - password reset works with no errors.
>>>>>
>>>>> The code you are showing is wrong because your link contains "%(key)s" 
>>>>>> which is unresolved
>>>>>
>>>>>
>>>>> What do you mean? This code is directly copied from the book. E.g. 
>>>>> when I do this *(B)*, the reset works as well:
>>>>>
>>>>> auth.messages.reset_password = 'Click on link http://'+ 
>>>>> request.env.http_host + URL('default', 'user', args=['reset_password']) + 
>>>>> '/%(key)s to reset your password'
>>>>>
>>>>> When I go with the earlier code *(A)*, it fails.
>>>>>
>>>>> Anyway, I'll keep digging. Thanks for help and suggestions.
>>>>>
>>>>>  
>>>>>
>>>>>
>>>>> On Monday, October 7, 2013 4:36:22 AM UTC+2, Massimo Di Pierro wrote:
>>>>>>
>>>>>> I cannot help you without looking at the entire code. Your problem 
>>>>>> does not come from the code you show us. 
>>>>>>
>>>>>> The code you are showing is wrong because your link contains 
>>>>>> "%(key)s" which is unresolved but this is not the cause of the (0x22) 
>>>>>> problem.
>>>>>>
>>>>>>
>>>>>> On Sunday, 6 October 2013 11:53:27 UTC-5, lesssugar wrote:
>>>>>>>
>>>>>>> Massimo (or anyone willing to help),
>>>>>>>
>>>>>>> all I'm trying to achieve is use my own email template to send a 
>>>>>>> password-reset message to user. How do I do this properly?
>>>>>>>
>>>>>>> Currently, I have this
>>>>>>>
>>>>>>> *db.py*
>>>>>>> auth.messages.reset_password = response.render(
>>>>>>>     'mailing/pass_reset.html',
>>>>>>>     dict(subject='Password reset',
>>>>>>>         link = 'http://'+request.env.http_host+URL('default', 
>>>>>>> 'user', args=['reset_password'])+'/%(key)s'))
>>>>>>>
>>>>>>> *pass_reset.html*
>>>>>>> ...
>>>>>>> <tr>
>>>>>>>     <td style="padding: 20px 0 30px 0; color: #333333; font-family: 
>>>>>>> Arial, sans-serif; font-size: 14px; line-height: 22px;">
>>>>>>>         *{{=link}}*
>>>>>>>     </td>
>>>>>>> </tr>
>>>>>>> ...
>>>>>>>
>>>>>>> I constantly get "unsupported format character" error. The character 
>>>>>>> (0x22) is ASCII quotation mark: *"*. I don't see it in my code. 
>>>>>>> It's getting a little bit frustrating as I'm not sure where to look for 
>>>>>>> the 
>>>>>>> bug.
>>>>>>>
>>>>>>> On Thursday, October 3, 2013 1:22:50 AM UTC+2, Massimo Di Pierro 
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> What is this supposed to do?
>>>>>>>>
>>>>>>>> {{=XML('%(key)s')}}
>>>>>>>>
>>>>>>>> Are you sure you are not looking for:
>>>>>>>>
>>>>>>>> <a href="{{=URL('default','user', args=('reset_password',key), 
>>>>>>>> scheme=True, host=True)}}"> Go to password reset</a>
>>>>>>>>
>>>>>>>> Is key a variable?
>>>>>>>> Anyway, I am not sure your problem comes from this code.
>>>>>>>>
>>>>>>>> On Wednesday, 2 October 2013 08:14:17 UTC-5, lesssugar wrote:
>>>>>>>>>
>>>>>>>>> Sorry, Massimo, but I really don't get it. Is the slash causing 
>>>>>>>>> the problem? I use '[controller_name]/[view_name.html]' to render 
>>>>>>>>> other 
>>>>>>>>> emails and it's all ok.
>>>>>>>>>
>>>>>>>>> I even tried to do it this way in the mailing view:
>>>>>>>>>
>>>>>>>>> <a href="{{=URL('default','user', args='reset_password', 
>>>>>>>>> scheme=True, host=True)}}/{{=XML('%(key)s')}}"> Go to password 
>>>>>>>>> reset</a>
>>>>>>>>>
>>>>>>>>> - and nothing, still the same error. I would be grateful for 
>>>>>>>>> another hint, if there is one.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tuesday, October 1, 2013 10:31:23 PM UTC+2, Massimo Di Pierro 
>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> You probably have same strange character in 
>>>>>>>>>> 'mailing/pass_reset.html'
>>>>>>>>>>
>>>>>>>>>> On Tuesday, 1 October 2013 13:26:46 UTC-5, lesssugar wrote:
>>>>>>>>>>>
>>>>>>>>>>> I'm trying to send a custom email template to user when they 
>>>>>>>>>>> perform password reset:
>>>>>>>>>>>
>>>>>>>>>>> *db.py:*
>>>>>>>>>>>
>>>>>>>>>>> auth.messages.reset_password = response.render(
>>>>>>>>>>>     'mailing/pass_reset.html',
>>>>>>>>>>>     dict(subject="Password reset",
>>>>>>>>>>>         link=URL('default','user', args='reset_password')))
>>>>>>>>>>>
>>>>>>>>>>> and in *mailing/pass_reset.html*:
>>>>>>>>>>>
>>>>>>>>>>> ...
>>>>>>>>>>> <a href="{{=URL('default','user', args=['reset_password'], 
>>>>>>>>>>> scheme=True, host=True) + '/%(key)s'}}"> Go to password reset</a>
>>>>>>>>>>> ...
>>>>>>>>>>>
>>>>>>>>>>> and everytime I'm testing, I get this:
>>>>>>>>>>>
>>>>>>>>>>>  File "/home/username/www/web2py/gluon/tools.py", line 2739, in 
>>>>>>>>>>> email_reset_password
>>>>>>>>>>>     dict(key=reset_password_key, link=link)):
>>>>>>>>>>> ValueError: unsupported format character '"' (0x22) at index 411
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Any ideas what might be wrong?
>>>>>>>>>>>
>>>>>>>>>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to