wiki:OwsFramework/OwsProtocol

Version 6 (modified by spascoe, 10 years ago) (diff)

--

WARNING: This page documents an old version of CEDA's OWS framework. Please see CowsFramework for the latest developments

Decorators

The ows_server.lib.decorators module provides a set of decorators for setting attributes of the OWS controller protocol. These are added to the beginning of operation definitions e.g.:

class WmsController(OwsController):

    # ...

    @ows_operation
    @ows_parameter('Format', possibleValues=['text/xml'])
    @ows_parameter('Service', possibleValues=['WMS'], required=True)
    @ows_parameter('Version', possibleValues=['1.3.0'])
    def GetCapabilities(self, file, service=None, version=None):
        # ...
@ows_operation
Should be the top-most decorator. It wraps the method in a function that performs request handling and type checking on the operation's arguments.
@ows_parameter
Add one of these for each operation parameter. This instructs the framework to perform several tasks.
  1. Add the parameter (from request.params) to the list of arguments send to the operation method.
  2. Populate ows_common objects to describe this parameter in the GetCapabilities? document.
  3. Do type-checking on the parameter's value during invocation. The possibleValues argument allows you to define a set of possible values, the require argument can declare an argument required and the validator argument allows you to provide a validation function.
@ows_constraint
OWS common 1.3.0 allows you to define constraints on operations. This decorator will populate the necessary ows_common objects for describing the constraint in the GetCapabilities? document.

The OWS controller Protocol

The OwsController class and decorators rely on as series of standard attributes being attached to the OwsController subclass implementing a OWS. All attribute names begin with _ows_

_ows_name
Defined in a method. The CamelCased? name of the operation. This is automatically set with the @operation decorator.
_ows_parameters
Definied in a controller or method. A dictionary mapping parameter names to ows_common.domain.Domain objects. Parameters are used to define operation arguments and operation-level parameters such as request format. As well as populating the Capabilities document, type checking is done on the request parameter based on the parameter's domain. See Decorators for details.
_ows_constraints
The same as _ows_parameters except for constraints. Constraints are defined in OWS Common 1.1.0. An example of use would be the MaximumLayerLevels? element in WMS 1.3.0.
_ows_versions
Definied in a controller. Used to describe what version(s) of the OWS a controller supports.
_ows_required_parameters
Defined in a method. Describes which keys of _ows_parameters are required. The framework will automatically raise an OWS exception if a request doesn't contain this parameter.
_ows_validators
Defined in a method. Provides a mechanism for adding custom type checking to an operation parameter. See Decorators.