Example #1
0
    Checks if a given optional waypoint id is an integer,
    if a given optional route id is an integer.
    """
    check_get_for_integer_property(request, 'w', False)
    check_get_for_integer_property(request, 'r', False)


def adapt_schema_for_activities(activities, field_list_type):
    """Get the schema for a set of activities.
    `field_list_type` should be either "fields" or "listing".
    """
    fields = get_all_fields(fields_outing, activities, field_list_type)
    return restrict_schema(schema_outing, fields)


schema_adaptor = make_schema_adaptor(adapt_schema_for_activities, 'activities',
                                     'fields')
listing_schema_adaptor = make_schema_adaptor(adapt_schema_for_activities,
                                             'activities', 'listing')


@resource(collection_path='/outings',
          path='/outings/{id}',
          cors_policy=cors_policy)
class OutingRest(DocumentRest):
    @view(validators=[
        validate_pagination, validate_preferred_lang_param,
        validate_filter_params
    ])
    def collection_get(self):
        custom_filter = None
        if self.request.validated.get('w'):
Example #2
0
                return

    # no association found
    request.errors.add(
        'body', 'main_waypoint_id', 'no association for the main waypoint')


def adapt_schema_for_activities(activities, field_list_type):
    """Get the schema for a set of activities.
    `field_list_type` should be either "fields" or "listing".
    """
    fields = get_all_fields(fields_route, activities, field_list_type)
    return restrict_schema(schema_route, fields)


schema_adaptor = make_schema_adaptor(
    adapt_schema_for_activities, 'activities', 'fields')
listing_schema_adaptor = make_schema_adaptor(
    adapt_schema_for_activities, 'activities', 'listing')


@resource(collection_path='/routes', path='/routes/{id}',
          cors_policy=cors_policy)
class RouteRest(DocumentRest):

    @view(validators=[validate_pagination, validate_preferred_lang_param])
    def collection_get(self):
        return self._collection_get(
            Route, schema_route, ROUTE_TYPE, clazz_locale=RouteLocale,
            adapt_schema=listing_schema_adaptor)

    @view(validators=[validate_id, validate_lang_param])
Example #3
0
    validate_associations, WAYPOINT_TYPE, True)
validate_associations_update = functools.partial(
    validate_associations, WAYPOINT_TYPE, False)


@lru_cache(maxsize=None)
def adapt_schema_for_type(waypoint_type, field_list_type):
    """Get the schema for a waypoint type.
    `field_list_type` should be either "fields" or "listing".
    All schemas are cached using memoization with @lru_cache.
    """
    fields = fields_waypoint.get(waypoint_type).get(field_list_type)
    return restrict_schema(schema_waypoint, fields)


schema_adaptor = make_schema_adaptor(
    adapt_schema_for_type, 'waypoint_type', 'fields')
listing_schema_adaptor = make_schema_adaptor(
    adapt_schema_for_type, 'waypoint_type', 'listing')


@resource(collection_path='/waypoints', path='/waypoints/{id}',
          cors_policy=cors_policy)
class WaypointRest(DocumentRest):

    @view(validators=[validate_pagination, validate_preferred_lang_param])
    def collection_get(self):
        """
        Get a list of documents, optionally matching search filters.
        If no search filters are given, the documents are directly queried
        from the database. If not, ElasticSearch is used to find the documents
        that match the filters.
Example #4
0
                                                 WAYPOINT_TYPE, True)
validate_associations_update = functools.partial(validate_associations,
                                                 WAYPOINT_TYPE, False)


@lru_cache(maxsize=None)
def adapt_schema_for_type(waypoint_type, field_list_type):
    """Get the schema for a waypoint type.
    `field_list_type` should be either "fields" or "listing".
    All schemas are cached using memoization with @lru_cache.
    """
    fields = fields_waypoint.get(waypoint_type).get(field_list_type)
    return restrict_schema(schema_waypoint, fields)


schema_adaptor = make_schema_adaptor(adapt_schema_for_type, 'waypoint_type',
                                     'fields')
listing_schema_adaptor = make_schema_adaptor(adapt_schema_for_type,
                                             'waypoint_type', 'listing')


@resource(collection_path='/waypoints',
          path='/waypoints/{id}',
          cors_policy=cors_policy)
class WaypointRest(DocumentRest):
    @view(validators=[validate_pagination, validate_preferred_lang_param])
    def collection_get(self):
        """
        Get a list of documents, optionally matching search filters.
        If no search filters are given, the documents are directly queried
        from the database. If not, ElasticSearch is used to find the documents
        that match the filters.