make_validator_update, make_schema_adaptor, get_all_fields from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang, validate_version_id, validate_lang_param, \ validate_preferred_lang_param, check_get_for_integer_property, \ validate_associations from c2corg_common.attributes import activities from c2corg_common.fields_outing import fields_outing from cornice.resource import resource, view from pyramid.httpexceptions import HTTPForbidden from sqlalchemy.orm.util import aliased from sqlalchemy.sql.expression import exists, and_, over from sqlalchemy.sql.functions import func validate_outing_create = make_validator_create(fields_outing, 'activities', activities) validate_outing_update = make_validator_update(fields_outing, 'activities', activities) validate_associations_create = functools.partial(validate_associations, OUTING_TYPE, True) validate_associations_update = functools.partial(validate_associations, OUTING_TYPE, False) def validate_required_associations(request): missing_user = False missing_route = False associations = request.validated.get('associations', None) if not associations: missing_user = True missing_route = True else:
from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang, validate_version_id, validate_lang_param, \ validate_preferred_lang_param, validate_associations from c2corg_common.fields_waypoint import fields_waypoint from c2corg_common.attributes import waypoint_types from sqlalchemy.orm import joinedload, load_only from sqlalchemy.orm.util import aliased from sqlalchemy.sql.elements import literal_column from sqlalchemy.sql.expression import and_, union # the number of routes that are included for waypoints NUM_ROUTES = 30 validate_waypoint_create = make_validator_create( fields_waypoint, 'waypoint_type', waypoint_types) validate_waypoint_update = make_validator_update( fields_waypoint, 'waypoint_type', waypoint_types) validate_associations_create = functools.partial( validate_associations, WAYPOINT_TYPE, True) validate_associations_update = functools.partial( validate_associations, WAYPOINT_TYPE, False) @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 c2corg_api.views import set_creator as set_creator_on_documents from c2corg_api.views.document_schemas import xreport_documents_config from c2corg_api.views.document import DocumentRest, make_validator_create, \ make_validator_update from c2corg_api.views import cors_policy, restricted_json_view, \ set_private_cache_header from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang_param, validate_preferred_lang_param, \ validate_associations, validate_lang, validate_version_id, \ is_associated_user from pyramid.httpexceptions import HTTPForbidden validate_xreport_create = make_validator_create(fields_xreport.get('required')) validate_xreport_update = make_validator_update(fields_xreport.get('required')) validate_associations_create = functools.partial( validate_associations, XREPORT_TYPE, True) validate_associations_update = functools.partial( validate_associations, XREPORT_TYPE, False) @resource(collection_path='/xreports', path='/xreports/{id}', cors_policy=cors_policy) class XreportRest(DocumentRest): @view(validators=[validate_pagination, validate_preferred_lang_param]) def collection_get(self): return self._collection_get(XREPORT_TYPE, xreport_documents_config) @view(validators=[validate_id, validate_lang_param])
from c2corg_api.views.document_info import DocumentInfoRest from c2corg_api.views.document_version import DocumentVersionRest from c2corg_common.fields_book import fields_book from cornice.resource import resource, view from cornice.validators import colander_body_validator from c2corg_api.views.document_schemas import book_documents_config from c2corg_api.views.document import DocumentRest, make_validator_create, \ make_validator_update from c2corg_api.views import cors_policy, restricted_json_view from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang_param, validate_preferred_lang_param, \ validate_associations, validate_lang, validate_version_id validate_book_create = make_validator_create(fields_book.get('required')) validate_book_update = make_validator_update(fields_book.get('required')) validate_associations_create = functools.partial( validate_associations, BOOK_TYPE, True) validate_associations_update = functools.partial( validate_associations, BOOK_TYPE, False) @resource(collection_path='/books', path='/books/{id}', cors_policy=cors_policy) class BookRest(DocumentRest): @view(validators=[validate_pagination, validate_preferred_lang_param]) def collection_get(self): return self._collection_get(BOOK_TYPE, book_documents_config) @view(validators=[validate_id, validate_lang_param])
from c2corg_common.fields_article import fields_article from cornice.resource import resource, view from cornice.validators import colander_body_validator from c2corg_api.views import set_creator as set_creator_on_documents from c2corg_api.views.document_schemas import article_documents_config from c2corg_api.views.document import DocumentRest, make_validator_create, \ make_validator_update from c2corg_api.views import cors_policy, restricted_json_view from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang_param, validate_preferred_lang_param, \ validate_associations, validate_lang, validate_version_id validate_article_create = make_validator_create(fields_article.get('required')) validate_article_update = make_validator_update(fields_article.get('required')) validate_associations_create = functools.partial( validate_associations, ARTICLE_TYPE, True) validate_associations_update = functools.partial( validate_associations, ARTICLE_TYPE, False) @resource(collection_path='/articles', path='/articles/{id}', cors_policy=cors_policy) class ArticleRest(DocumentRest): @view(validators=[validate_pagination, validate_preferred_lang_param]) def collection_get(self): return self._collection_get(ARTICLE_TYPE, article_documents_config) @view(validators=[validate_id, validate_lang_param])
from c2corg_common.fields_topo_map import fields_topo_map from cornice.resource import resource, view from cornice.validators import colander_body_validator from c2corg_api.views.document import DocumentRest, make_validator_create, make_validator_update from c2corg_api.views import cors_policy, restricted_json_view from c2corg_api.views.validation import ( validate_id, validate_pagination, validate_lang_param, validate_preferred_lang_param, validate_lang, ) validate_map_create = make_validator_create(fields_topo_map.get("required")) validate_map_update = make_validator_update(fields_topo_map.get("required")) @resource(collection_path="/maps", path="/maps/{id}", cors_policy=cors_policy) class TopoMapRest(DocumentRest): @view(validators=[validate_pagination, validate_preferred_lang_param]) def collection_get(self): return self._collection_get(MAP_TYPE, topo_map_documents_config) @view(validators=[validate_id, validate_lang_param]) def get(self): return self._get(TopoMap, schema_topo_map) @restricted_json_view( schema=schema_topo_map, validators=[colander_body_validator, validate_map_create], permission="moderator" )
from c2corg_api.views.document_version import DocumentVersionRest from c2corg_common.fields_area import fields_area from cornice.resource import resource, view from cornice.validators import colander_body_validator from c2corg_api.views.document import DocumentRest, make_validator_create, \ make_validator_update from c2corg_api.views import cors_policy, restricted_json_view from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang_param, validate_preferred_lang_param, validate_lang, \ validate_associations, validate_version_id, validate_cook_param from pyramid.httpexceptions import HTTPBadRequest validate_area_create = make_validator_create(fields_area.get('required')) validate_area_update = make_validator_update(fields_area.get('required')) validate_associations_create = functools.partial(validate_associations, AREA_TYPE, True) validate_associations_update = functools.partial(validate_associations, AREA_TYPE, False) @resource(collection_path='/areas', path='/areas/{id}', cors_policy=cors_policy) class AreaRest(DocumentRest): @view(validators=[validate_pagination, validate_preferred_lang_param]) def collection_get(self): return self._collection_get(AREA_TYPE, area_documents_config) @view(validators=[validate_id, validate_lang_param, validate_cook_param])
from c2corg_api.views.document import DocumentRest, make_validator_create, \ make_validator_update, NUM_RECENT_OUTINGS from c2corg_api.views import cors_policy, restricted_json_view, \ get_best_locale, set_default_geom_from_associations from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang, validate_version_id, validate_lang_param, \ validate_preferred_lang_param, validate_associations, validate_cook_param from c2corg_api.models.common.fields_route import fields_route from c2corg_api.models.common.attributes import activities from sqlalchemy.orm import load_only log = logging.getLogger(__name__) validate_route_create = make_validator_create(fields_route, 'activities', activities) validate_route_update = make_validator_update(fields_route, 'activities', activities) validate_associations_create = functools.partial(validate_associations, ROUTE_TYPE, True) validate_associations_update = functools.partial(validate_associations, ROUTE_TYPE, False) def validate_main_waypoint(is_on_create, request, **kwargs): """ Check that the document given as main waypoint is also listed as association. """ doc = request.validated if is_on_create else \ request.validated.get('document', {}) main_waypoint_id = doc.get('main_waypoint_id', None) if not main_waypoint_id:
def f(request, **kwargs): image = request.validated check_filename_unique(image, request, updating=True) else: def f(request, **kwargs): image = request.validated check_filename_unique(image, request, updating=False) return f base_validate_image_create = make_validator_create( fields_image.get('required')) base_validate_image_update = make_validator_update( fields_image.get('required')) validate_filename_create = make_validator_filename_unique(updating=False) validate_filename_update = make_validator_filename_unique(updating=True) def validate_image_create(request, **kwargs): base_validate_image_create(request, **kwargs) validate_filename_create(request, **kwargs) def validate_image_update(request, **kwargs): base_validate_image_update(request, **kwargs) validate_filename_update(request, **kwargs) validate_associations_create = functools.partial(validate_associations,
make_validator_update, make_schema_adaptor, get_all_fields from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang, validate_version_id, validate_lang_param, \ validate_preferred_lang_param, check_get_for_integer_property, \ validate_associations from c2corg_common.attributes import activities from c2corg_common.fields_outing import fields_outing from cornice.resource import resource, view from pyramid.httpexceptions import HTTPForbidden from sqlalchemy.orm.util import aliased from sqlalchemy.sql.expression import exists, and_, over from sqlalchemy.sql.functions import func validate_outing_create = make_validator_create( fields_outing, 'activities', activities) validate_outing_update = make_validator_update( fields_outing, 'activities', activities) validate_associations_create = functools.partial( validate_associations, OUTING_TYPE, True) validate_associations_update = functools.partial( validate_associations, OUTING_TYPE, False) def validate_required_associations(request): missing_user = False missing_route = False associations = request.validated.get('associations', None) if not associations: missing_user = True missing_route = True else:
def make_validator_filename_unique(updating): if updating: def f(request, **kwargs): image = request.validated check_filename_unique(image, request, updating=True) else: def f(request, **kwargs): image = request.validated check_filename_unique(image, request, updating=False) return f base_validate_image_create = make_validator_create( fields_image.get('required')) base_validate_image_update = make_validator_update( fields_image.get('required')) validate_filename_create = make_validator_filename_unique(updating=False) validate_filename_update = make_validator_filename_unique(updating=True) def validate_image_create(request, **kwargs): base_validate_image_create(request, **kwargs) validate_filename_create(request, **kwargs) def validate_image_update(request, **kwargs): base_validate_image_update(request, **kwargs) validate_filename_update(request, **kwargs) validate_associations_create = functools.partial(
schema_update_topo_map, MAP_TYPE) from c2corg_api.models.topo_map_association import update_map from c2corg_api.views.document_info import DocumentInfoRest from c2corg_api.views.document_schemas import topo_map_documents_config from c2corg_common.fields_topo_map import fields_topo_map from cornice.resource import resource, view from cornice.validators import colander_body_validator from c2corg_api.views.document import DocumentRest, make_validator_create, \ make_validator_update from c2corg_api.views import cors_policy, restricted_json_view from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang_param, validate_preferred_lang_param, validate_lang validate_map_create = make_validator_create(fields_topo_map.get('required')) validate_map_update = make_validator_update(fields_topo_map.get('required')) @resource(collection_path='/maps', path='/maps/{id}', cors_policy=cors_policy) class TopoMapRest(DocumentRest): @view(validators=[validate_pagination, validate_preferred_lang_param]) def collection_get(self): return self._collection_get(MAP_TYPE, topo_map_documents_config) @view(validators=[validate_id, validate_lang_param]) def get(self): return self._get(TopoMap, schema_topo_map) @restricted_json_view( schema=schema_topo_map, validators=[colander_body_validator, validate_map_create],
from c2corg_api.models.common.fields_article import fields_article from cornice.resource import resource, view from cornice.validators import colander_body_validator from c2corg_api.views import set_creator as set_creator_on_documents from c2corg_api.views.document_schemas import article_documents_config from c2corg_api.views.document import DocumentRest, make_validator_create, \ make_validator_update from c2corg_api.views import cors_policy, restricted_json_view from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang_param, validate_preferred_lang_param, \ validate_associations, validate_lang, validate_version_id, \ validate_cook_param validate_article_create = make_validator_create(fields_article.get('required')) validate_article_update = make_validator_update(fields_article.get('required')) validate_associations_create = functools.partial(validate_associations, ARTICLE_TYPE, True) validate_associations_update = functools.partial(validate_associations, ARTICLE_TYPE, False) @resource(collection_path='/articles', path='/articles/{id}', cors_policy=cors_policy) class ArticleRest(DocumentRest): @view(validators=[validate_pagination, validate_preferred_lang_param]) def collection_get(self): return self._collection_get(ARTICLE_TYPE, article_documents_config) @view(validators=[validate_id, validate_lang_param, validate_cook_param])
from c2corg_api.views.document_info import DocumentInfoRest from c2corg_api.views.document_version import DocumentVersionRest from c2corg_common.fields_book import fields_book from cornice.resource import resource, view from cornice.validators import colander_body_validator from c2corg_api.views.document_schemas import book_documents_config from c2corg_api.views.document import DocumentRest, make_validator_create, \ make_validator_update from c2corg_api.views import cors_policy, restricted_json_view from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang_param, validate_preferred_lang_param, \ validate_associations, validate_lang, validate_version_id validate_book_create = make_validator_create(fields_book.get('required')) validate_book_update = make_validator_update(fields_book.get('required')) validate_associations_create = functools.partial(validate_associations, BOOK_TYPE, True) validate_associations_update = functools.partial(validate_associations, BOOK_TYPE, False) @resource(collection_path='/books', path='/books/{id}', cors_policy=cors_policy) class BookRest(DocumentRest): @view(validators=[validate_pagination, validate_preferred_lang_param]) def collection_get(self): return self._collection_get(BOOK_TYPE, book_documents_config) @view(validators=[validate_id, validate_lang_param])
validate_lang_param, validate_preferred_lang_param, validate_associations, ) from c2corg_common.fields_waypoint import fields_waypoint from c2corg_common.attributes import waypoint_types from sqlalchemy.orm import joinedload, load_only from sqlalchemy.orm.util import aliased from sqlalchemy.sql.elements import literal_column from sqlalchemy.sql.expression import and_, union # the number of routes that are included for waypoints NUM_ROUTES = 30 validate_waypoint_create = make_validator_create(fields_waypoint, "waypoint_type", waypoint_types) validate_waypoint_update = make_validator_update(fields_waypoint, "waypoint_type", waypoint_types) validate_associations_create = functools.partial(validate_associations, WAYPOINT_TYPE, True) validate_associations_update = functools.partial(validate_associations, WAYPOINT_TYPE, False) @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. Request:
from c2corg_api.models.schema_utils import restrict_schema from c2corg_api.views.document import DocumentRest, make_validator_create, \ make_validator_update, make_schema_adaptor, get_all_fields, \ NUM_RECENT_OUTINGS from c2corg_api.views import cors_policy, restricted_json_view, \ get_best_locale, to_json_dict, set_best_locale from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang, validate_version_id, validate_lang_param, \ validate_preferred_lang_param, validate_associations from c2corg_common.fields_route import fields_route from c2corg_common.attributes import activities from sqlalchemy.orm import load_only, joinedload validate_route_create = make_validator_create( fields_route, 'activities', activities) validate_route_update = make_validator_update( fields_route, 'activities', activities) validate_associations_create = functools.partial( validate_associations, ROUTE_TYPE, True) validate_associations_update = functools.partial( validate_associations, ROUTE_TYPE, False) def validate_main_waypoint(is_on_create, request): """ Check that the document given as main waypoint is also listed as association. """ doc = request.validated if is_on_create else \ request.validated.get('document', {}) main_waypoint_id = doc.get('main_waypoint_id', None) if not main_waypoint_id:
from cornice.validators import colander_body_validator from c2corg_api.views import set_creator as set_creator_on_documents from c2corg_api.views.document_schemas import xreport_documents_config from c2corg_api.views.document import DocumentRest, make_validator_create, \ make_validator_update from c2corg_api.views import cors_policy, restricted_json_view, \ set_private_cache_header from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang_param, validate_preferred_lang_param, \ validate_associations, validate_lang, validate_version_id from pyramid.httpexceptions import HTTPForbidden validate_xreport_create = make_validator_create(fields_xreport.get('required')) validate_xreport_update = make_validator_update(fields_xreport.get('required')) validate_associations_create = functools.partial( validate_associations, XREPORT_TYPE, True) validate_associations_update = functools.partial( validate_associations, XREPORT_TYPE, False) @resource(collection_path='/xreports', path='/xreports/{id}', cors_policy=cors_policy) class XreportRest(DocumentRest): @view(validators=[validate_pagination, validate_preferred_lang_param]) def collection_get(self): return self._collection_get(XREPORT_TYPE, xreport_documents_config) @view(validators=[validate_id, validate_lang_param])
from c2corg_api.models.area import schema_area, Area, schema_update_area, \ schema_listing_area, AREA_TYPE from c2corg_api.models.area_association import update_area from c2corg_api.models.document import UpdateType from c2corg_common.fields_area import fields_area from cornice.resource import resource, view from c2corg_api.views.document import DocumentRest, make_validator_create, \ make_validator_update from c2corg_api.views import cors_policy, restricted_json_view from c2corg_api.views.validation import validate_id, validate_pagination, \ validate_lang_param, validate_preferred_lang_param from pyramid.httpexceptions import HTTPBadRequest validate_area_create = make_validator_create(fields_area.get('required')) validate_area_update = make_validator_update(fields_area.get('required')) @resource(collection_path='/areas', path='/areas/{id}', cors_policy=cors_policy) class AreaRest(DocumentRest): @view(validators=[validate_pagination, validate_preferred_lang_param]) def collection_get(self): return self._collection_get( Area, schema_listing_area, AREA_TYPE, include_areas=False) @view(validators=[validate_id, validate_lang_param]) def get(self): return self._get(Area, schema_area, include_areas=False)