Changes between Version 80 and Version 81 of S3/S3REST/s3_rest_controller


Ignore:
Timestamp:
06/04/13 21:31:57 (11 years ago)
Author:
hardik juneja
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • S3/S3REST/s3_rest_controller

    v80 v81  
    503503=== Method Handlers ===
    504504
     505The s3_rest_controller has multiple hooks,Look at how s3_rest_controller is actually defined in models/00_utils.py:
     506
     507{{{
     508def s3_rest_controller(prefix=None, resourcename=None, **attr):
     509
     510    set_handler = r.set_handler
     511    set_handler("barchart", s3_barchart)
     512    set_handler("compose", s3base.S3Compose)
     513    set_handler("copy", lambda r, **attr: \
     514                               redirect(URL(args="create",
     515                                            vars={"from_record":r.id})))
     516    set_handler("deduplicate", s3base.S3Merge)
     517    set_handler("filter", s3base.S3Filter)
     518    set_handler("import", s3base.S3Importer)
     519    set_handler("map", s3base.S3Map)
     520    set_handler("profile", s3base.S3Profile)
     521    set_handler("report", s3base.S3Report)
     522    set_handler("import", S3PDF(),
     523                    http = ["GET", "POST"],
     524                    representation="pdf")
     525
     526
     527    # Execute the request and apply crud functionality or execute other method handler
     528    output = r(**attr)
     529    return output
     530}}}
     531
     532This is nothing else than a wrapper for the global r object (an instance of S3Request).
     533You don't have to use s3_rest_controller to have a RESTful API, you can make your own handler configuration and call r directly.
     534
     535But even when using s3_rest_controller, you can take control over what actually happens. A very comfortable (and recommended) way to get control over s3rest when using s3_rest_controller is to hook in prep and postp functions. Look above to find out when prep and postp hooks are invoked.
     536
    505537=== Custom Methods ===
    506538