Example #1
0
def _setup_rest_action(config, action, clazz, view_mapping):
    """Setup a route and a view for given action and clazz.
    The routes will have the follwoing following name and url:

    * Name: $modulname-$actionname
    * Url:  $modulname/$actionurl

    Note, that the actionname can be configured only as admin.

    Further a clazz specific factory will be added to the route which is
    later used to setup the ACL of items of the modul.

    :config: Configuration
    :action: Action item
    :clazz: clazz item
    :view_mapping: Dictionary with action items
    :returns: @todo
    """
    action_method_mapping = {
        "list": "GET",
        "create": "POST",
        "read": "GET",
        "update": "PUT",
        "delete": "DELETE"
    }
    name = clazz.__tablename__
    action_name = action.name.lower()
    view_func = get_action_view(view_mapping,
                                  action_name,
                                  name)
    if not view_func:
        return
    route_name = get_action_routename(clazz, action_name,
                                      prefix="rest")
    tmpurl = action.url.split("/")
    if len(tmpurl) > 1:
        route_url = "rest/%s/%s" % (name, tmpurl[1])
    else:
        route_url = "rest/%s" % (name)
    log.debug("Adding REST route: %s, %s" % (route_name, route_url))
    method = action_method_mapping[action_name]
    config.add_route(route_name, route_url,
                     request_method=method,
                     factory=get_resource_factory(clazz))
    log.debug("Adding REST view: %s, %s, %s" % (view_func, route_name, method))
    settings = config.registry.settings
    http_cache = settings.get('security.page_http_cache', '0')
    config.add_view(view_func,
                    route_name=route_name,
                    request_method=method,
                    renderer='json',
                    permission=action.permission or action_name,
                    http_cache=int(http_cache))
Example #2
0
def _setup_rest_action(config, action, clazz, view_mapping):
    """Setup a route and a view for given action and clazz.
    The routes will have the follwoing following name and url:

    * Name: $modulname-$actionname
    * Url:  $modulname/$actionurl

    Note, that the actionname can be configured only as admin.

    Further a clazz specific factory will be added to the route which is
    later used to setup the ACL of items of the modul.

    :config: Configuration
    :action: Action item
    :clazz: clazz item
    :view_mapping: Dictionary with action items
    :returns: @todo
    """
    action_method_mapping = {
        "list": "GET",
        "create": "POST",
        "read": "GET",
        "update": "PUT",
        "delete": "DELETE"
    }
    name = clazz.__tablename__
    action_name = action.name.lower()
    view_func = get_action_view(view_mapping,
                                  action_name,
                                  name)
    if not view_func:
        return
    route_name = get_action_routename(clazz, action_name,
                                      prefix="rest")
    tmpurl = action.url.split("/")
    if len(tmpurl) > 1:
        route_url = "rest/%s/%s" % (name, tmpurl[1])
    else:
        route_url = "rest/%s" % (name)
    log.debug("Adding REST route: %s, %s" % (route_name, route_url))
    method = action_method_mapping[action_name]
    config.add_route(route_name, route_url,
                     request_method=method,
                     factory=get_resource_factory(clazz))
    log.debug("Adding REST view: %s, %s, %s" % (view_func, route_name, method))
    settings = config.registry.settings
    http_cache = settings.get('security.page_http_cache', '0')
    config.add_view(view_func,
                    route_name=route_name,
                    request_method=method,
                    renderer='json',
                    permission=action.permission or action_name,
                    http_cache=int(http_cache))
Example #3
0
def _setup_web_action(config, action, clazz, view_mapping):
    """Setup a route and a view for given action and clazz.
    The routes will have the follwoing following name and url:

    * Name: $modulname-$actionname
    * Url:  $modulname/$actionurl

    Note, that the actionname can be configured only as admin.

    Further a clazz specific factory will be added to the route which is
    later used to setup the ACL of items of the modul.

    :config: Configuration
    :action: Action item
    :clazz: clazz item
    :view_mapping: Dictionary with action items
    :returns: @todo
    """
    name = clazz.__tablename__
    action_name = action.name.lower()
    route_name = get_action_routename(clazz, action_name)
    route_url = "%s/%s" % (name, action.url)
    log.debug("Adding WEB route: %s, %s" % (route_name, route_url))
    config.add_route(route_name, route_url,
                     factory=get_resource_factory(clazz))
    settings = config.registry.settings
    http_cache = settings.get('security.page_http_cache', '0')
    view_func = get_action_view(view_mapping,
                                  action_name,
                                  name)
    if view_func:
        if action_name == "delete":
            template = "confirm"
            renderer = '/default/%s.mako' % template
        elif action_name == "download":
            renderer = None
        else:
            template = action_name
            renderer = '/default/%s.mako' % template
        config.add_view(view_func,
                        route_name=route_name,
                        renderer=renderer,
                        permission=action.permission or action_name,
                        http_cache=int(http_cache))
    ## Add bundle action.
    if action_name == "list":
       action_name = "bundle"
       route_name = "%s-%s" % (name, action_name)
       route_url = "%s/%s" % (name, action_name)
       view_func = get_action_view(view_mapping,
                                     action_name,
                                     name)
       log.debug("Adding route: %s, %s" % (route_name, route_url))
       config.add_route(route_name, route_url,
                        factory=get_resource_factory(clazz))
       config.add_view(view_func, route_name=route_name,
                       renderer='/default/bundle.mako',
                       permission='list')
    ## Add permission action.
    if action_name == "read":
        action_name = "ownership"
        route_name = "%s-%s" % (name, action_name)
        route_url = "%s/%s/{id}" % (name, action_name)
        view_func = get_action_view(view_mapping,
                                    action_name,
                                    name)
        log.debug("Adding route: %s, %s" % (route_name, route_url))
        config.add_route(route_name, route_url,
                         factory=get_resource_factory(clazz))
        config.add_view(view_func, route_name=route_name,
                        renderer='/default/update.mako',
                        permission='read')
Example #4
0
def _setup_web_action(config, action, clazz, view_mapping):
    """Setup a route and a view for given action and clazz.
    The routes will have the follwoing following name and url:

    * Name: $modulname-$actionname
    * Url:  $modulname/$actionurl

    Note, that the actionname can be configured only as admin.

    Further a clazz specific factory will be added to the route which is
    later used to setup the ACL of items of the modul.

    :config: Configuration
    :action: Action item
    :clazz: clazz item
    :view_mapping: Dictionary with action items
    :returns: @todo
    """
    name = clazz.__tablename__
    action_name = action.name.lower()
    route_name = get_action_routename(clazz, action_name)
    route_url = "%s/%s" % (name, action.url)
    log.debug("Adding WEB route: %s, %s" % (route_name, route_url))
    config.add_route(route_name, route_url,
                     factory=get_resource_factory(clazz))
    settings = config.registry.settings
    http_cache = settings.get('security.page_http_cache', '0')
    view_func = get_action_view(view_mapping,
                                  action_name,
                                  name)
    if view_func:
        if action_name == "delete":
            template = "confirm"
            renderer = '/default/%s.mako' % template
        elif action_name == "download":
            renderer = None
        else:
            template = action_name
            renderer = '/default/%s.mako' % template
        config.add_view(view_func,
                        route_name=route_name,
                        renderer=renderer,
                        permission=action.permission or action_name,
                        http_cache=int(http_cache))
    ## Add bundle action.
    if action_name == "list":
       action_name = "bundle"
       route_name = "%s-%s" % (name, action_name)
       route_url = "%s/%s" % (name, action_name)
       view_func = get_action_view(view_mapping,
                                     action_name,
                                     name)
       log.debug("Adding route: %s, %s" % (route_name, route_url))
       config.add_route(route_name, route_url,
                        factory=get_resource_factory(clazz))
       config.add_view(view_func, route_name=route_name,
                       renderer='/default/bundle.mako',
                       permission='list')
    ## Add permission action.
    if action_name == "read":
        action_name = "ownership"
        route_name = "%s-%s" % (name, action_name)
        route_url = "%s/%s/{id}" % (name, action_name)
        view_func = get_action_view(view_mapping,
                                    action_name,
                                    name)
        log.debug("Adding route: %s, %s" % (route_name, route_url))
        config.add_route(route_name, route_url,
                         factory=get_resource_factory(clazz))
        config.add_view(view_func, route_name=route_name,
                        renderer='/default/update.mako',
                        permission='read')