def register_service(endpoint_type, settings): """Registers a service in cornice, for the given type. """ path_pattern = getattr(viewset, '%s_path' % endpoint_type) path_values = {'resource_name': resource_name} path = path_pattern.format(**path_values) name = viewset.get_service_name(endpoint_type, resource_cls) service = Service(name, path, depth=depth, **viewset.get_service_arguments()) # Attach viewset and resource to the service for later reference. service.viewset = viewset service.resource = resource_cls service.type = endpoint_type # Attach collection and record paths. service.collection_path = viewset.collection_path.format(**path_values) service.record_path = (viewset.record_path.format(**path_values) if viewset.record_path is not None else None) methods = getattr(viewset, '%s_methods' % endpoint_type) for method in methods: if not viewset.is_endpoint_enabled( endpoint_type, resource_name, method.lower(), settings): continue argument_getter = getattr(viewset, '%s_arguments' % endpoint_type) view_args = argument_getter(resource_cls, method) view = viewset.get_view(endpoint_type, method.lower()) service.add_view(method, view, klass=resource_cls, **view_args) return service
def register_service(endpoint_type, settings): """Registers a service in cornice, for the given type.""" path_pattern = getattr(viewset, '%s_path' % endpoint_type) path = path_pattern.format(**path_formatters) name = viewset.get_service_name(endpoint_type, resource_cls) service = Service(name, path, depth=depth, **viewset.get_service_arguments()) # Attach viewset and resource to the service for later reference. service.viewset = viewset service.resource = resource_cls service.collection_path = viewset.collection_path.format( **path_formatters) service.record_path = viewset.record_path.format(**path_formatters) service.type = endpoint_type methods = getattr(viewset, '%s_methods' % endpoint_type) for method in methods: if not viewset.is_endpoint_enabled( endpoint_type, resource_name, method.lower(), settings): continue argument_getter = getattr(viewset, '%s_arguments' % endpoint_type) view_args = argument_getter(resource_cls, method) view = viewset.get_view(endpoint_type, method.lower()) service.add_view(method, view, klass=resource_cls, **view_args) return service
def register_service(endpoint_type, settings): """Registers a service in cornice, for the given type. """ path_pattern = getattr(viewset, "{}_path".format(endpoint_type)) path_values = {"resource_name": resource_name} path = path_pattern.format_map(path_values) name = viewset.get_service_name(endpoint_type, resource_cls) service = Service(name, path, depth=depth, **viewset.get_service_arguments()) # Attach viewset and resource to the service for later reference. service.viewset = viewset service.resource = resource_cls service.type = endpoint_type # Attach collection and record paths. service.collection_path = viewset.collection_path.format_map( path_values) service.record_path = (viewset.record_path.format_map(path_values) if viewset.record_path is not None else None) methods = getattr(viewset, "{}_methods".format(endpoint_type)) for method in methods: if not viewset.is_endpoint_enabled(endpoint_type, resource_name, method.lower(), settings): continue argument_getter = getattr(viewset, "{}_arguments".format(endpoint_type)) view_args = argument_getter(resource_cls, method) view = viewset.get_view(endpoint_type, method.lower()) service.add_view(method, view, klass=resource_cls, **view_args) # We support JSON-patch on PATCH views. Since the body payload # of JSON Patch is not a dict (mapping) but an array, we can't # use the same schema as for other PATCH protocols. We add another # dedicated view for PATCH, but targetting a different content_type # predicate. if method.lower() == "patch": view_args["content_type"] = "application/json-patch+json" view_args["schema"] = JsonPatchRequestSchema() service.add_view(method, view, klass=resource_cls, **view_args) return service
def register_service(endpoint_type, settings): """Registers a service in cornice, for the given type. """ path_pattern = getattr(viewset, '{}_path'.format(endpoint_type)) path_values = {'resource_name': resource_name} path = path_pattern.format_map(path_values) name = viewset.get_service_name(endpoint_type, resource_cls) service = Service(name, path, depth=depth, **viewset.get_service_arguments()) # Attach viewset and resource to the service for later reference. service.viewset = viewset service.resource = resource_cls service.type = endpoint_type # Attach collection and record paths. service.collection_path = viewset.collection_path.format_map(path_values) service.record_path = (viewset.record_path.format_map(path_values) if viewset.record_path is not None else None) methods = getattr(viewset, '{}_methods'.format(endpoint_type)) for method in methods: if not viewset.is_endpoint_enabled( endpoint_type, resource_name, method.lower(), settings): continue argument_getter = getattr(viewset, '{}_arguments'.format(endpoint_type)) view_args = argument_getter(resource_cls, method) view = viewset.get_view(endpoint_type, method.lower()) service.add_view(method, view, klass=resource_cls, **view_args) # We support JSON-patch on PATCH views. Since the body payload # of JSON Patch is not a dict (mapping) but an array, we can't # use the same schema as for other PATCH protocols. We add another # dedicated view for PATCH, but targetting a different content_type # predicate. if method.lower() == 'patch': view_args['content_type'] = 'application/json-patch+json' view_args['schema'] = JsonPatchRequestSchema() service.add_view(method, view, klass=resource_cls, **view_args) return service