Metadata-Version: 1.0
Name: pyramid-rest
Version: 0.2.8
Summary: Pyramid Rest Extension
Home-page: UNKNOWN
Author: Hadrien David
Author-email: hadrien@ectobal.com
License: UNKNOWN
Description: Pyramid REST
        ============
        
        Overview
        --------
        
        * First draft of a pyramid extension to build RESTful web application.
        * Features included:
        
            * resource definition which configure routes/views, i.e:
        
                * a resource 'application':
        
                    * route [GET/POST] /applications
                    * route [GET/DELETE/PUT] /applications/{application_id}
                    * route GET /applications/{application_id}/new
                    * route GET /applications/{application_id}/edit
        
                * a resource 'application.user':
        
                    * route [GET/POST] /applications/{application_id}/users
                    * route [GET/DELETE/PUT] /applications/{application_id}/users/{user_id}
                    * route GET /applications/{application_id}/users/new
                    * route GET /applications/{application_id}/users/edit
        
                * a singular resource 'application.user.score':
        
                    * route [GET/PUT] /applications/{application_id}/users/{user_id}/score
                    * route GET /applications/{application_id}/users/{user_id}/score/edit
        
        
            * resources are added to config introspector and related to their routes,views, sub-resource and parent resource;
            * end user defines REST methods (index, create, show, update, delete, new, edit);
            * by default:
        
              * HTTP 405 is returned for any method not provided;
              * permissions 'index, create, show, update, delete, new, edit' are associated to respective method;
        
        * 3 ways to configure resource:
        
            #. Imperative using `config.add_resource`, it will associate class in views module to resource ::
        
                config.add_resource('application')       # .views.applications:ApplicationsView
                config.add_resource('application.user')  # .views.application_users:ApplicationUsersView
        
            #. Declarative using `Resource` class (cornice style)::
        
                app_users = Resource('application.user')
        
                @app_users.index()
                def index(context, request, application_id):
                    pass
        
                @app_users.show()
                def show(context, request, application_id, id):
                    pass
        
        
            #. Declarative using `resource_config` decorator::
        
                @resource_config('application.user')
                class AppUsers(object):
        
                    def __init__(self, context, request):
                        pass
        
                    def index(self, application_id):
                        return {}
        
                    @method_config(renderer='example.mako')
                    def edit(self, application_id, id):
                        return {}
        
        
        What next?
        ----------
        
        #. HTTP PATCH method: http://tools.ietf.org/html/rfc5789
        #. Resource Scaffolding command;
        #. Links;
        #. Validation;
        #. Pagination;
        #. Automatic resource definition of SQLAlchemy entities;
        #. Have a view parameter in add_resource to override view definition;
        
        
        Code/Feedbacks
        --------------
        
        https://github.com/hadrien/pyramid_rest
        
        Changelog
        =========
        
        Development
        -----------
        
        
        0.2.8
        -----
        
        * Compatibility with updated zope.interfaces
        * Using last functionality of pyramid_mongokit
        * No more distribute in setup.py
        
        
        0.2.5
        -----
        
        * Moved mongo connection to pyramid_mongokit.
        
        
        0.2.4
        -----
        
        * Switch to github.
        * Add support for mongo database:
        
         * Setting in ini file ``pyramid_rest.mongo`` considered true by default
         * ``MongoConnection`` is registered to registry
         * Two properties added to ``request``: ``mongo_connection`` and ``mongo_db``
         * Mongo connection gets uri from ``os.environ['MONGO_URI']``
         * Database name comes from ``os.environ['MONGO_DB_NAME']``
         * Any resource view with a ``model_class`` class attribute with value being
           a definition of a ``mongokit.Document`` can inherit ``pyramid_rest.mongo.DocumentView``
           to inherit all default actions.
        
        * Add custom renderer which adapts output format depending on accept headers,
          format supported are ``application/json`` & ``application/bson``
        
        
        0.1.0
        -----
        
        * Rename ResourceUtility to ResourceConfigurator to make its role clearer.
        * Force human-friendly names for route pattern variables and view callable
          parameters, e.g. /applications/{application_id}/users/{id} and
          show(context, request, application_id, id)
        * Remove ability to configure resource separator in resource names: it's always
          '.'
        * Singular resources via *add_singular_resource* directive or *singular=True*
          keyword argument on *Resource* or *resource_config*
        * Moved example from tests directory to root directory: used in test and useful
          for documentation.
        
        
        0.0.1
        -----
        
        * Collection resource only
        * Imperative mode via *add_resource* directive
        * Declarative mode via *Resource* class
        * Declarative mode view *resource_config* decorator
        
        
Platform: UNKNOWN
