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.