Well

I solved my problem my changing my patterns

patterns = [
            "/companies[company]",
            "/company/{company.id}",
            "/company/{company.name.contains}"
            ]

is now

patterns = [
            "/companies[company]",
            "/company/id/{company.id}",
            "/company/name/{company.name.contains}"
            ]

And it works fine.

Le mercredi 18 septembre 2013 16:50:51 UTC+2, Loïc a écrit :
>
>
> Hi there
>
> Trying to use @request.restful() I have an issue : 
>
> *My model : *
> db.define_table('company',Field('name'),Field('info'))
> db.define_table('employee',Field('employer',db.company),Field('name'),
> Field('info'))
>
> *My controller :*
>
> @request.restful()
> def api():
>     def GET(*args,**vars):
>         patterns = [
>             "/companies[company]",
>             "/company/{company.id}",
>             "/company/{company.name.contains}"
>             ]
>         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 I call */default/api/company/1.json* (pattern  "/company/{company.id}",) 
> I get the correct result
> But when I call */default/api/company/pyt.json* (pattern 
> "/company/{company.name.contains}") I get an error : 
>
>
> *<type 'exceptions.ValueError'> invalid literal for long() with base 10: 
> 'ython'
> Version
> web2py™     Version 2.6.3-stable+timestamp.2013.09.15.17.01.20
> Traceback
>
> Traceback (most recent call last):
>   File "C:\Users\loic\Google Drive\web2py\gluon\restricted.py", line 217, 
> in restricted
>     exec ccode in environment
>   File "C:/Users/loic/Google 
> Drive/web2py/applications/RESTful_api/controllers/default.py", line 46, in 
> <module>
>   File "C:\Users\loic\Google Drive\web2py\gluon\globals.py", line 378, in 
> <lambda>
>     self._caller = lambda f: f()
>   File "C:\Users\loic\Google Drive\web2py\gluon\globals.py", line 342, in f
>     return rest_action(*_self.args, **_self.vars)
>   File "C:/Users/loic/Google 
> Drive/web2py/applications/RESTful_api/controllers/default.py", line 16, in 
> GET
>     parser = db.parse_as_rest(patterns,args,vars)
>   File "C:\Users\loic\Google Drive\web2py\gluon\dal.py", line 7831, in 
> parse_as_rest
>     count = dbset.count()
>   File "C:\Users\loic\Google Drive\web2py\gluon\dal.py", line 10045, in 
> count
>     return db._adapter.count(self.query,distinct)
>   File "C:\Users\loic\Google Drive\web2py\gluon\dal.py", line 1763, in 
> count
>     self.execute(self._count(query, distinct))
>   File "C:\Users\loic\Google Drive\web2py\gluon\dal.py", line 1750, in 
> _count
>     sql_w = ' WHERE ' + self.expand(query)
>   File "C:\Users\loic\Google Drive\web2py\gluon\dal.py", line 1414, in 
> expand
>     out = op(first, second, **optional_args)
>   File "C:\Users\loic\Google Drive\web2py\gluon\dal.py", line 1320, in EQ
>     self.expand(second, first.type))
>   File "C:\Users\loic\Google Drive\web2py\gluon\dal.py", line 1425, in 
> expand
>     return str(self.represent(expression,field_type))
>   File "C:\Users\loic\Google Drive\web2py\gluon\dal.py", line 1866, in 
> represent
>     return str(long(obj))
> ValueError: invalid literal for long() with base 10: 'ython'*
>
> Any idea?
> 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.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to