Re: [web2py] Re: Auto-generate PUT and DELETE methods

2020-08-24 Thread AGRogers
Hi Rahul

I haven't done much at all with the rest api. But I would have assumed that
you would need to decorate it with @requires to control who can access
what. I can't see that in your code.


On Tue, 25 Aug 2020, 3:06 am Rahul,  wrote:

> Hi All,
>Not sure if this is the right thread to put this up --
> I was trying to use this code for rest/json -- however -- with slight
> changes and wrong parameters in the URL my entire table got exposed -- Here
> is the code --
>
> *CONTROLLER :  DEFAULT.PY CODE*
>
> ## API ---
> @request.restful()
> def api():
>
> response.view = 'generic.'+request.extension
>
> def GET(*args,**vars):
> patterns = 'auto'
> parser = db.parse_as_rest(patterns,args,vars)
> if parser.status == 200:
> return dict(content=parser.response)
> else:
> raise HTTP(parser.status,parser.error)
>
> def POST(table_name,**vars):
> return db[table_name].validate_and_insert(**vars)
>
> def PUT(table_name,record_id,**vars):
> return db(db[table_name]._id==record_id).update(**vars)
>
> def DELETE(table_name,record_id):
> return db(db[table_name]._id==record_id).delete()
>
> return dict(GET=GET, POST=POST, PUT=PUT, DELETE=DELETE)
>
> When some adds the url like this in the browser --
> http://127.0.0.1:8000/artpic/default/api/mblog?id=%221%22=%222%22  (
> http://127.0.0.1:8000/artpic/default/api/mblog?id="1"="2; )  it poses
> a huge risk as all the data in the table is exposed. All tables are exposed
> and even username and password from my tables get exposed and easily
> accessible
>
> This works properly -- but above url exposes a huge security risk --
> http://127.0.0.1:8000/artpic/default/api/mblog/id/37.json
>
> Am I doing this properly ?? Is there something I am missing -- The above
> code in controller is the only code I am using --  Please see the image
> attached -- It looks like a huge security risk.
>
> Regards,
>
> *Rahul*
>
> On Friday, June 22, 2012 at 7:55:19 PM UTC+5:30 Massimo Di Pierro wrote:
>
>> wow. done that.
>>
>> On Thursday, 21 June 2012 18:04:04 UTC-5, Anthony wrote:
>>>
>>> Using my new Google Groups super powers
>>> , I
>>> have edited your original post, so if you'd like, you can delete this
>>> correction and we can pretend this never happened. ;-)
>>>
>>> Anthony
>>>
>>> On Thursday, June 21, 2012 6:40:37 PM UTC-4, Massimo Di Pierro wrote:

 Silly me. This

 def PUT(table_name,record_id):

 return db(db[table_name]._id==record_id).delete()


 was supposed to be


 def DELETE(table_name,record_id):

 return db(db[table_name]._id==record_id).delete()


 On Thursday, 21 June 2012 13:38:01 UTC-5, Derek wrote:
>
> Looks like you have Get, Post, and PUT and PUT. Where's Delete?
>
> On Wednesday, June 20, 2012 4:39:33 PM UTC-7, Massimo Di Pierro wrote:
>>
>> You can do
>>
>> @request.restful()
>> def api():
>> response.view = 'generic.'+request.extension
>> def GET(*args,**vars):
>> patterns = 'auto'
>> parser = db.parse_as_rest(patterns,args,vars)
>> if parser.status == 200:
>> return dict(content=parser.response)
>> else:
>> raise HTTP(parser.status,parser.error)
>> def POST(table_name,**vars):
>> return db[table_name].validate_and_insert(**vars)
>>
>> def PUT(table_name,record_id,**vars):
>>
>> return db(db[table_name]._id==record_id).update(**vars)
>>
>> def PUT(table_name,record_id):
>>
>> return db(db[table_name]._id==record_id).delete()
>>
>> return locals()
>>
>>
>> On Wednesday, 20 June 2012 11:30:26 UTC-5, Osama Hussain wrote:
>>>
>>> Using the following code web2py generated all possible patterns for
>>> all my tables for GET and POST methods:
>>>
>>> @request.restful()
>>> def api():
>>> response.view = 'generic.'+request.extension
>>> def GET(*args,**vars):
>>> patterns = 'auto'
>>> parser = db.parse_as_rest(patterns,args,vars)
>>> if parser.status == 200:
>>> return dict(content=parser.response)
>>> else:
>>> raise HTTP(parser.status,parser.error)
>>> def POST(table_name,**vars):
>>> return db[table_name].validate_and_insert(**vars)
>>> return locals()
>>>
>>>
>>> Is it possible to have patterns generated for PUT and DELETE methods?
>>>
>>> --
> 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" 

[web2py] Re: Auto-generate PUT and DELETE methods

2020-08-24 Thread Rahul
Hi All,
   Not sure if this is the right thread to put this up -- 
I was trying to use this code for rest/json -- however -- with slight 
changes and wrong parameters in the URL my entire table got exposed -- Here 
is the code -- 

*CONTROLLER :  DEFAULT.PY CODE*

## API ---
@request.restful()
def api():

response.view = 'generic.'+request.extension

def GET(*args,**vars):
patterns = 'auto'
parser = db.parse_as_rest(patterns,args,vars)
if parser.status == 200:
return dict(content=parser.response)
else:
raise HTTP(parser.status,parser.error)

def POST(table_name,**vars):
return db[table_name].validate_and_insert(**vars)

def PUT(table_name,record_id,**vars):
return db(db[table_name]._id==record_id).update(**vars)

def DELETE(table_name,record_id):
return db(db[table_name]._id==record_id).delete()

return dict(GET=GET, POST=POST, PUT=PUT, DELETE=DELETE)

When some adds the url like this in the browser -- 
http://127.0.0.1:8000/artpic/default/api/mblog?id=%221%22=%222%22  
( http://127.0.0.1:8000/artpic/default/api/mblog?id="1"="2; )  it poses 
a huge risk as all the data in the table is exposed. All tables are exposed 
and even username and password from my tables get exposed and easily 
accessible 

This works properly -- but above url exposes a huge security risk -- 
http://127.0.0.1:8000/artpic/default/api/mblog/id/37.json

Am I doing this properly ?? Is there something I am missing -- The above 
code in controller is the only code I am using --  Please see the image 
attached -- It looks like a huge security risk.

Regards,

*Rahul*

On Friday, June 22, 2012 at 7:55:19 PM UTC+5:30 Massimo Di Pierro wrote:

> wow. done that.
>
> On Thursday, 21 June 2012 18:04:04 UTC-5, Anthony wrote:
>>
>> Using my new Google Groups super powers 
>> , I 
>> have edited your original post, so if you'd like, you can delete this 
>> correction and we can pretend this never happened. ;-)
>>
>> Anthony
>>
>> On Thursday, June 21, 2012 6:40:37 PM UTC-4, Massimo Di Pierro wrote:
>>>
>>> Silly me. This
>>>
>>> def PUT(table_name,record_id):
>>>
>>> return db(db[table_name]._id==record_id).delete()
>>>
>>>
>>> was supposed to be
>>>
>>>
>>> def DELETE(table_name,record_id):
>>>
>>> return db(db[table_name]._id==record_id).delete()
>>>
>>>
>>> On Thursday, 21 June 2012 13:38:01 UTC-5, Derek wrote:

 Looks like you have Get, Post, and PUT and PUT. Where's Delete?

 On Wednesday, June 20, 2012 4:39:33 PM UTC-7, Massimo Di Pierro wrote:
>
> You can do
>
> @request.restful()
> def api():
> response.view = 'generic.'+request.extension
> def GET(*args,**vars):
> patterns = 'auto'
> parser = db.parse_as_rest(patterns,args,vars)
> if parser.status == 200:
> return dict(content=parser.response)
> else:
> raise HTTP(parser.status,parser.error)
> def POST(table_name,**vars):
> return db[table_name].validate_and_insert(**vars)
>
> def PUT(table_name,record_id,**vars):
>
> return db(db[table_name]._id==record_id).update(**vars)
>
> def PUT(table_name,record_id):
>
> return db(db[table_name]._id==record_id).delete()
>
> return locals()
>
>
> On Wednesday, 20 June 2012 11:30:26 UTC-5, Osama Hussain wrote:
>>
>> Using the following code web2py generated all possible patterns for 
>> all my tables for GET and POST methods:
>>
>> @request.restful()
>> def api():
>> response.view = 'generic.'+request.extension
>> def GET(*args,**vars):
>> patterns = 'auto'
>> parser = db.parse_as_rest(patterns,args,vars)
>> if parser.status == 200:
>> return dict(content=parser.response)
>> else:
>> raise HTTP(parser.status,parser.error)
>> def POST(table_name,**vars):
>> return db[table_name].validate_and_insert(**vars)
>> return locals()
>>
>>
>> Is it possible to have patterns generated for PUT and DELETE methods?
>>
>>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/eb1325a1-ee80-4054-a9f4-9a13e4b5ba8bn%40googlegroups.com.


[web2py] Re: fake_migrate=True is not working

2020-08-24 Thread Clemens
Hi,

I'm not very deep in your issue. But opening your appconfig.ini with my 
default editor shows that the apostrophe in your authors value could be a 
problem:

[image: Untitled.jpg]

Thus, just delete it and have try. If it doesn't change anything, please 
let me know and I will have a closer look.

Best regards
Clemens




On Monday, August 24, 2020 at 11:18:32 AM UTC+2 and...@gmail.com wrote:

> Hello, if I chose migrate= False and fake_migrate=True the .tables in 
> databases folder are not created.
> Why?
> I'm attaching appconfig.ini and py.db and my custom db db_asset.py
> Thank you
>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/2ca50038-affe-46d9-8559-ebb27a8ac457n%40googlegroups.com.


[web2py] fake_migrate=True is not working

2020-08-24 Thread Andrea Fae'
Hello, if I chose migrate= False and fake_migrate=True the .tables in 
databases folder are not created.
Why?
I'm attaching appconfig.ini and py.db and my custom db db_asset.py
Thank you

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/33c7394a-8649-47b7-a06c-b04e92d38a45o%40googlegroups.com.


appconfig.ini
Description: Binary data
# -*- coding: utf-8 -*-

# -
# This scaffolding model makes your app work on Google App Engine too
# File is released under public domain and you can use without limitations
# -

if request.global_settings.web2py_version < "2.14.1":
raise HTTP(500, "Requires web2py 2.13.3 or newer")

# -
# if SSL/HTTPS is properly configured and you want all HTTP requests to
# be redirected to HTTPS, uncomment the line below:
# -
# request.requires_https()

# -
# app configuration made easy. Look inside private/appconfig.ini
# -
from gluon.contrib.appconfig import AppConfig

# -
# once in production, remove reload=True to gain full speed
# -
myconf = AppConfig(reload=True)

if not request.env.web2py_runtime_gae:
# -
# if NOT running on Google App Engine use SQLite or other DB
# -
db = DAL(myconf.get('db.uri'),
 pool_size=myconf.get('db.pool_size'),
 migrate_enabled=myconf.get('db.migrate'),
 check_reserved=['all'])
else:
# -
# connect to Google BigTable (optional 'google:datastore://namespace')
# -
db = DAL('google:datastore+ndb')
# -
# store sessions and tickets there
# -
session.connect(request, response, db=db)
# -
# or store session in Memcache, Redis, etc.
# from gluon.contrib.memdb import MEMDB
# from google.appengine.api.memcache import Client
# session.connect(request, response, db = MEMDB(Client()))
# -

# -
# by default give a view/generic.extension to all actions from localhost
# none otherwise. a pattern can be 'controller/function.extension'
# -
response.generic_patterns = ['*'] if request.is_local else []
# -
# choose a style for forms
# -
response.formstyle = myconf.get('forms.formstyle')  # or 'bootstrap3_stacked' or 'bootstrap2' or other
response.form_label_separator = myconf.get('forms.separator') or ''

# -
# (optional) optimize handling of static files
# -
# response.optimize_css = 'concat,minify,inline'
# response.optimize_js = 'concat,minify,inline'

# -
# (optional) static assets folder versioning
# -
# response.static_version = '0.0.0'

# -
# Here is sample code if you need for
# - email capabilities
# - authentication (registration, login, logout, ... )
# - authorization (role based authorization)
# - services (xml, csv, json, xmlrpc, jsonrpc, amf, rss)
# - old style crud actions
# (more options discussed in gluon/tools.py)
# 

[web2py] Re: Add to home screen

2020-08-24 Thread mostwanted
Hey guys i'm still struggling with the *add to home screen* prompt, please 
look at my code above & suggest something. Help me to get this to work. I 
really need this functionality, please help me.

Regards;

Mostwanted
On Friday, May 29, 2020 at 12:46:38 AM UTC+2 mostwanted wrote:

> Ok! So far I have been able to get some aspects of my PWA project working, 
> The issue is that I have to install the app manually from the browser's 
> menu but it installs with its icon & it can be launched from the icon with 
> a splash screen, that's a minor success, it also opens fully like a 
> standalone app, another achievement, it shows its respecting the manifest 
> file rules,  Now the major problems are that offline functionality & a 
> prompt by the browser to install the app on home screen are not working and 
> apparently this is caused by a service worker that can not be detected! The 
> error says:
>
> *"No matching service worker detected. You may need to reload page or 
> check that the scope of the service worker for the current page encloses 
> the scope of the start URL from the manifest."*
>
> I do not understand this message at all, I went through the internet 
> looking for possible answers but none of them are clear! Some are saying 
> the solution is to place the service worker in the root directory! But guys 
> please forgive my ignorance but where is the web2py root directory?! If 
> anyone has been able to overcome this issue or understands the solution to 
> it i'd greatly appreciate your assistance, my site is being hosted by 
> pythonanywhere I dont know if this matters (Root Directories & all)!
> This is my code below:
>
> *LAYOUT CODE:*
>
> 
>
>   
>   
>   
>   
>   
>   
>   
>   
>content="/init/static/images/icon_144x144.png">
>   
>
>
>   
>
>
> *MAIN.JS*
> window.onload = () =>
> {
>   'use strict';
>
>   if ('serviceWorker' in navigator) {
> navigator.serviceWorker.register('/init/static/js/sw.js');
>   }
> }
>
>
> *SW.JS*
> var cacheName = 'hello-pwa';
> var filesToCache = [
>   '/',
>   '/init/',
> ];
>
> /* Start the service worker and cache all of the app's content */
> self.addEventListener('install', function(e) {
>   e.waitUntil(
> caches.open(cacheName).then(function(cache) {
>   return cache.addAll(filesToCache);
> })
>   );
> });
>
> /* Serve cached content when offline */
> self.addEventListener('fetch', function(e) {
>   e.respondWith(
> caches.match(e.request).then(function(response) {
>   return response || fetch(e.request);
> })
>   );
> });
>
>
> *MANIFEST.JSON*
> {
>   "name": "Hello World",
>   "short_name": "Hello",
>   "lang": "en-US",
>   "background_color": "#DE3C4B",
>   "theme_color": "#DE3C4B",
>   "icons": [
> {
>   "src": "/init/static/images/icon_72x72.png",
>   "sizes": "72x72",
>   "type": "image/png"
> },
> {
>   "src": "/init/static/images/icon_96x96.png",
>   "sizes": "96x96",
>   "type": "image/png"
> },
> {
>   "src": "/init/static/images/icon_128x128.png",
>   "sizes": "128x128",
>   "type": "image/png"
> },
> {
>   "src": "/init/static/images/icon_144x144.png",
>   "sizes": "144x144",
>   "type": "image/png"
> },
> {
>   "src": "/init/static/images/icon_152x152.png",
>   "sizes": "152x152",
>   "type": "image/png"
> },
> {
>   "src": "/init/static/images/icon_192x192.png",
>   "sizes": "192x192",
>   "type": "image/png"
> },
> {
>   "src": "/init/static/images/icon_384x384.png",
>   "sizes": "384x384",
>   "type": "image/png"
> },
> {
>   "src": "/init/static/images/icon_512x512.png",
>   "sizes": "512x512",
>   "type": "image/png"
> }
>   ],
> "start_url": "/init",
>   "scope": "/init",
>   "display": "standalone"
>
> }
>
>
> Regards;
>
> Mostwanted 
>
>
> On Wednesday, May 27, 2020 at 12:08:15 PM UTC+2, mostwanted wrote:
>>
>> Whats the simplest way to get my web2py application to prompt users to 
>> add to screen? I have tried alot of things but none are working, there are 
>> no prompts happening! Some say its only achievable through a PWA design, i 
>> tried this 
>> https://groups.google.com/forum/#!searchin/web2py/pwa$20me%7Csort:date/web2py/rHBfs1zFG44/gKS6EOmlAgAJ
>>  
>>
>> nothing is working, if anyone has a way to achieve this with web2py i'd 
>> appreciate your assistance.
>>
>> Regards;
>>
>> Mostwanted
>>
>

-- 
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.
To view this discussion on the web visit 

[web2py] Re: formatting a field in SQLTABLE

2020-08-24 Thread 'Annet' via web2py-users
Maybe use the represent attribute in the field constructor

db.table.field.represent = lambda val, row: function())

and use:

locale.format('%10.2f', val, grouping=True)


Best,

Annet
Op maandag 24 augustus 2020 om 07:43:15 UTC+2 schreef Vlad:

> I've got the rows to be displayed in a table:
>
> rows = db(query).select(db.orders.total.sum().with_alias('Total'), 
> ...)
>
> and using 
>
>  SQLTABLE(rows)
>
> to show the data. 
>
> How can I format this total.sum() in the SQLTABLE? More specifically, this 
> total is the total amount in cents, and I need to display it in dollars, 
> i.e. divide by 100 and append with '$'. 
>
> It's easy to do it if using TABLE and iterating over rows, but SQLTABLE is 
> pretty convenient to use, so I'd like to stick with it. 
>
> Is there a way to customize the fields like this in SQLTABLE ?
>
>
>
>
>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/73a81e2c-4392-4cbd-880b-85d334bee95bn%40googlegroups.com.


Re: [web2py] Re: How to debug "lost password"

2020-08-24 Thread Jon Subscripted
Hi Jim,
Actually I thought I did not need to "send" the mail myself. I thought the
framework took care of it.

But I think I'll try to send the email in some part of the application to
test if everything is ok. Thanks for the suggestion Jim. I'll try it and
get back to you.
Thanks, Jon.

On Sat, Aug 22, 2020 at 4:51 PM Jim S  wrote:

> Everything there is looking just right.  The only thing you haven't shared
> is the mail send line in your web2py app.
>
> I haven't used appconfig.ini so can't answer that question.  Have you
> tried both ways or tried coding the values directly into your python script?
>
> -Jim
>
> On Saturday, August 22, 2020 at 3:59:09 AM UTC-5, Jonsubs wrote:
>>
>> Hi Jim,
>> My configuration for appconfig.ini is the following:
>>
>> ; smtp address and credentials
>> [smtp]
>> server = mail.xakemate.eus:25
>> sender = ad...@xakemate.eus
>> login  = ad...@xakemate.eus:***
>> tls= false
>> ssl= false
>>
>> When I try the following script (from my laptop) it does work.
>>
>> import smtplib
>> import email.utils
>> from email.mime.text import MIMEText
>>
>> def send(receiver):
>> # Create the message
>> msg = MIMEText('This is the body of the message.')
>> msg['To'] = email.utils.formataddr(('Recipient', receiver))
>> msg['From'] = email.utils.formataddr(('Author', 'ad...@xakemate.eus
>> '))
>> msg['Subject'] = 'Simple test message'
>>
>>
>> server = smtplib.SMTP('mail.xakemate.eus',25)
>> server.ehlo() # Can be omitted
>> server.login('ad...@xakemate.eus', '')
>> server.set_debuglevel(True) # show communication with the server
>> try:
>> server.sendmail('ad...@xakemate.eus',
>> [receiver],
>> msg.as_string())
>> finally:
>> server.quit()
>>
>>
>>
>> if __name__=="__main__":
>> send('ad...@xakemate.eus')
>>
>> Byt the way, should values in "appconfig.ini" be quoted? Meaning, should
>> I use 'mail.xakemate.eus:25' or mail.xakemate.eus:25 (with no quotes)?
>> Thanks, Jon.
>>
>>
>> 
>>  Libre
>> de virus. www.avast.com
>> 
>> <#m_-2349229599040815489_CAK8tz32YoN=TKo_X+aYz7yKoyo9fHCWry8A3dWaG21dx54TK-A@mail.gmail.com_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>
>> On Fri, Aug 21, 2020 at 2:53 PM Jim S  wrote:
>>
>>> Hey Jon, I should have been more specific.  What I was looking for was
>>> the actual server and port you're accessing for the mail server.  Looks
>>> like it is stored in your config.  Is that mail server accessible from you
>>> workstation?  Can you telnet to it using the settings in the config file?
>>>
>>> -Jim
>>>
>>> On Friday, August 21, 2020 at 4:51:55 AM UTC-5, Jonsubs wrote:

 Hi everyone,
 Whe I run my web2py app locally (in my desktop in 127.0.0.1:8000) I
 get the following message:

 '08/21/2020 11:48:56 AM' - web2py - WARNING - Mail.send failure:please
 run connect() first

 What does it mean?
 Thanks, Jon.

 On Fri, Aug 21, 2020 at 11:45 AM Jon Subscripted 
 wrote:

> Hi Jim,
> It looks like this (see below):
>
> #
> -
> # configure email
> #
> -
> mail = auth.settings.mailer
> mail.settings.server = configuration.get('smtp.server') #'logging' if
> request.is_local else configuration.get('smtp.server')
> mail.settings.sender = configuration.get('smtp.sender')
> mail.settings.login = configuration.get('smtp.login')
> mail.settings.tls = configuration.get('smtp.tls') or False
> mail.settings.ssl = configuration.get('smtp.ssl') or False
>
> Thanks, Jon.
>
> On Fri, Aug 21, 2020 at 1:56 AM Jim S  wrote:
>
>> What does your mail setup in db.py look like?
>>
>> -Jim
>>
>>
>> On Thursday, August 20, 2020 at 9:47:11 AM UTC-5, Jonsubs wrote:
>>>
>>> Any suggestions on how to debug "password lost" email not being sent.
>>> Thanks, Jon.
>>>
>>> On Wed, Aug 19, 2020 at 7:49 PM Jon Subscripted <
>>> jonsubsc...@gmail.com> wrote:
>>>
 Hi everyone,
 I'm having some trouble sending "lost password" emails to my users.
 Whenever I test it I get an "Unable to send email" message.

 But I do not really know the reason. I tried with a standalone
 python script with the same configuration and it works.

 I'd like to know how to debug this problem or where to look at.

 In which log are email related errors written?
 Regards, Jon.

 --
>> Resources:
>> - http://web2py.com
>> - http://web2py.com/book (Documentation)
>> -