On Thursday, January 30, 2014 10:33:19 AM UTC-5, Avi A wrote:
>
> Sorry for the "not working", I thought my mistake would be obvious.
>

Describing the specific failure often makes it easier to home in on the 
source of the problem.
 

> First line: does it mean that this "if" statement knows to search the 
> auth.user records till it finds a match?
>

Yes, it's simply a query to see if any auth_user records contain an api_key 
that matches the one submitted. You were doing this query in Python, when 
it is far more efficient to have the database do it for you (particularly 
if you create a database index on the api_key field).
 

> and what is the .count() for?
>

When doing the query, there is no need to return the matching records -- 
you just need to know whether any such records exist. So, it is more 
efficient just to get a count of the records (if the count is 0, there are 
no matching records).
 

> Second line: 
> t._filter_fields(**post_params)
> Should work assuming the key on the url params matches exactly the field 
> name on the table?
>

Yes, that assumes the URL parameters match the field names of the table. 
Note, ._filter_fields() simply removes any keys from the dictionary that 
don't match any of the field names in the table (in this case, it would 
remove the api_key key, since that's not part of the db table). You could 
also manually remove any extra fields from the dictionary. For example:

if db(db.auth_user.api_key == post_params.pop('api_key')).count():
    return t.validate_and_insert(**post_params)

post_params.pop('api_key') extracts the api_key value from post_params and 
then removes that key/value from post_params, leaving only the keys 
associated with fields in the db table.

Anthony

-- 
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to