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'):
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])
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.
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.