SWEET! I'm not even going to bother fixing the mess I made :) This
looks awesome!

I'll be spending a good chunk of time on this later this evening and
will post results/feedback and anything else you'd like to see or have
me test.


Thanks
Mart :)

On Mar 17, 4:26 pm, Massimo Di Pierro <massimo.dipie...@gmail.com>
wrote:
> No. This is an action
>
> @request.restful()
> def api():
>     def GET(*args,**vars):
>         parsed = db.parse_as_rest('auto',args,vars)
>         if parsed.status==200: return dict(content=parsed.response)
>         raise HTTP(parsed.status,parsed.error)
>     return locals()
>
> ix exposes the APIs so it goes in controller. If instead of 'auto' you
> choose to define your own patterns, perhaps you should that in a
> model:
>
> APIPATTERNS=[
> ...
> ]
>
> and then pass APIPATTERNS instead of 'auto'
>
> Massimo
>
> On Mar 17, 3:05 pm, "David J." <da...@styleflare.com> wrote:
>
>
>
>
>
>
>
> > For clarification; This gets put in the model code not controller code
> > correct?
>
> > So for example in "db.py"
>
> > Thanks.
>
> > On 3/17/11 3:58 PM, Massimo Di Pierro wrote:
>
> > > This is now in trunk. Some API changes are still possible.
>
> > > Right now it supports fiels of type, id, integer, double, date,
> > > datetime, time, boolean, reference, list and string fields with "slug"
> > > in the name.
>
> > > If you have a model like this
>
> > > db.define_table('person',Field('name'),Field('birthdate','date'),Field('age
> > >  ','integer'),Field('married','boolean'),Field('tags','list:string'))
> > > db.define_table('dog',Field('name'),Field('owner',db.person),Field('info','
> > >  text'))
>
> > > simply add this to your model
>
> > > @request.restful()
> > > def api():
> > >      def GET(*args,**vars):
> > >          parsed = db.parse_as_rest('auto',args,vars)
> > >          if parsed.status==200: return dict(content=parsed.response)
> > >          raise HTTP(parsed.status,parsed.error)
> > >      return locals()
>
> > > and it will expose APIs like
>
> > > /yourapp/default/api/person/id/5
> > > /yourapp/default/api/person/married/true
> > > /yourapp/default/api/person/birthdate/2008
> > > /yourapp/default/api/person/age/10/30     # notice it is a range
> > > /yourapp/default/api/person/id/5/name     # notice a field
> > > /yourapp/default/api/person/id/5/dog      # notice a reference (his
> > > dogs)
>
> > > Here is a complete list of the APIs automatically generated.
>
> > > /person/id/{person.id}
> > > /person/id/{person.id}/:field
> > > /person/id/{person.id}/dog[dog.owner]
> > > /person/id/{person.id}/dog[dog.owner]/id/{dog.id}
> > > /person/id/{person.id}/dog[dog.owner]/id/{dog.id}/:field
> > > /person/id/{person.id}/dog[dog.owner]/owner/{dog.owner}
> > > /person/id/{person.id}/dog[dog.owner]/owner/{dog.owner}/:field
> > > /person/name/dog[dog.owner]
> > > /person/name/dog[dog.owner]/id/{dog.id}
> > > /person/name/dog[dog.owner]/id/{dog.id}/:field
> > > /person/name/dog[dog.owner]/owner/{dog.owner}
> > > /person/name/dog[dog.owner]/owner/{dog.owner}/:field
> > > /person/birthdate/{person.birthdate.year}
> > > /person/birthdate/{person.birthdate.year}/:field
> > > /person/birthdate/{person.birthdate.year}/{person.birthdate.month}
> > > /person/birthdate/{person.birthdate.year}/
> > > {person.birthdate.month}/:field
> > > /person/birthdate/{person.birthdate.year}/{person.birthdate.month}/
> > > {person.birthdate.day}
> > > /person/birthdate/{person.birthdate.year}/{person.birthdate.month}/
> > > {person.birthdate.day}/:field
> > > /person/birthdate/{person.birthdate.year}/{person.birthdate.month}/
> > > {person.birthdate.day}/dog[dog.owner]
> > > /person/birthdate/{person.birthdate.year}/{person.birthdate.month}/
> > > {person.birthdate.day}/dog[dog.owner]/id/{dog.id}
> > > /person/birthdate/{person.birthdate.year}/{person.birthdate.month}/
> > > {person.birthdate.day}/dog[dog.owner]/id/{dog.id}/:field
> > > /person/birthdate/{person.birthdate.year}/{person.birthdate.month}/
> > > {person.birthdate.day}/dog[dog.owner]/owner/{dog.owner}
> > > /person/birthdate/{person.birthdate.year}/{person.birthdate.month}/
> > > {person.birthdate.day}/dog[dog.owner]/owner/{dog.owner}/:field
> > > /person/age/{person.age.ge}/{person.age.lt}
> > > /person/age/{person.age.ge}/{person.age.lt}/:field
> > > /person/age/{person.age.ge}/{person.age.lt}/dog[dog.owner]
> > > /person/age/{person.age.ge}/{person.age.lt}/dog[dog.owner]/id/{dog.id}
> > > /person/age/{person.age.ge}/{person.age.lt}/dog[dog.owner]/id/
> > > {dog.id}/:field
> > > /person/age/{person.age.ge}/{person.age.lt}/dog[dog.owner]/owner/
> > > {dog.owner}
> > > /person/age/{person.age.ge}/{person.age.lt}/dog[dog.owner]/owner/
> > > {dog.owner}/:field
> > > /person/married/{person.married}
> > > /person/married/{person.married}/:field
> > > /person/married/{person.married}/dog[dog.owner]
> > > /person/married/{person.married}/dog[dog.owner]/id/{dog.id}
> > > /person/married/{person.married}/dog[dog.owner]/id/{dog.id}/:field
> > > /person/married/{person.married}/dog[dog.owner]/owner/{dog.owner}
> > > /person/married/{person.married}/dog[dog.owner]/owner/
> > > {dog.owner}/:field
> > > /person/tags/{person.tags.contains}
> > > /person/tags/{person.tags.contains}/:field
> > > /person/tags/{person.tags.contains}/dog[dog.owner]
> > > /person/tags/{person.tags.contains}/dog[dog.owner]/id/{dog.id}
> > > /person/tags/{person.tags.contains}/dog[dog.owner]/id/{dog.id}/:field
> > > /person/tags/{person.tags.contains}/dog[dog.owner]/owner/{dog.owner}
> > > /person/tags/{person.tags.contains}/dog[dog.owner]/owner/
> > > {dog.owner}/:field
> > > /dog/id/{dog.id}
> > > /dog/id/{dog.id}/:field
> > > /dog/owner/{dog.owner}
> > > /dog/owner/{dog.owner}/:field
>
> > > You can cut and paste the output of
>
> > > /yourapp/default/api/patterns
>
> > > back in the code as patterns and change them.
>
> > > You can disable some by making the corresponding fields readable=False
> > > in the api action.
>
> > > Hope this is useful. Please send comments.
>
> > > On Mar 16, 6:32 pm, Massimo Di Pierro<massimo.dipie...@gmail.com>
> > > wrote:
> > >>http://vimeo.com/21133657

Reply via email to