clear-skies 1.18.6__tar.gz → 1.18.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of clear-skies might be problematic. Click here for more details.
- {clear_skies-1.18.6 → clear_skies-1.18.8}/PKG-INFO +1 -1
- {clear_skies-1.18.6 → clear_skies-1.18.8}/pyproject.toml +1 -1
- clear_skies-1.18.8/src/clearskies/column_types/created_by_authorization_data.py +26 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/base.py +2 -2
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/routing.py +1 -1
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/simple_routing_route.py +24 -1
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/update.py +14 -8
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/model.py +12 -10
- clear_skies-1.18.6/src/clearskies/column_types/created_by_authorization_data.py +0 -21
- {clear_skies-1.18.6 → clear_skies-1.18.8}/LICENSE +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/README.md +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/application.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/authentication/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/authentication/auth0_jwks.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/authentication/auth_exception.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/authentication/authorization.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/authentication/jwks.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/authentication/public.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/authentication/secret_bearer.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/oai3_json.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/parameter.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/request.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/response.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/schema/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/schema/array.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/schema/default.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/schema/enum.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/schema/object.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/test.json +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/request/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/request/header.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/request/json_body.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/request/request.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/request/url_parameter.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/request/url_path.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/response/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/response/response.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/array.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/base64.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/boolean.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/date.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/datetime.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/double.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/enum.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/integer.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/long.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/number.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/object.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/password.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/schema/string.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/backends/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/backends/api_backend.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/backends/backend.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/backends/cursor_backend.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/backends/example_backend.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/backends/file_backend.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/backends/json_backend.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/backends/memory_backend.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/backends/restful_api_advanced_search_backend.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/backends/secrets_backend.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/binding_config.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/audit.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/belongs_to.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/boolean.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/category_tree.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/column.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/created.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/created_by_ip.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/created_by_user_agent.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/datetime.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/email.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/float.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/has_many.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/integer.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/json.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/many_to_many.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/many_to_many_with_data.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/select.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/string.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/updated.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/uuid.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/columns.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/condition_parser.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/contexts/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/contexts/bash.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/contexts/build_context.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/contexts/cli.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/contexts/context.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/contexts/convert_to_application.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/contexts/extract_handler.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/contexts/test.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/contexts/wsgi.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/auth0_jwks.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/authorization.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/binding_classes.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/binding_modules.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/bindings.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/create.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/delete.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/docs.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/get.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/jwks.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/merge.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/patch.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/post.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/public.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/response_headers.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/return_raw_response.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/schema.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/secret_bearer.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/decorators/security_headers.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/di/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/di/additional_config.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/di/additional_config_auto_import.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/di/di.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/di/standard_dependencies.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/di/test_module/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/di/test_module/another_module/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/di/test_module/module_class.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/environment.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/functional/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/functional/string.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/functional/validations.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/advanced_search.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/callable.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/create.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/crud_by_method.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/database_connector.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/delete.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/exceptions/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/exceptions/authentication.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/exceptions/authorization.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/exceptions/client_error.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/exceptions/input_error.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/exceptions/not_found.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/get.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/health_check.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/input_processing.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/list.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/mygrations.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/request_method_routing.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/restful_api.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/schema_helper.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/simple_routing.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/simple_search.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/write.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_outputs/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_outputs/cli.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_outputs/exceptions/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_outputs/exceptions/cli_input_error.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_outputs/exceptions/cli_not_found.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_outputs/input_output.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_outputs/wsgi.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_requirements/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_requirements/maximum_length.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_requirements/minimum_length.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_requirements/required.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_requirements/requirement.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_requirements/unique.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/mocks/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/mocks/input_output.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/mocks/models.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/models.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/secrets/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/secrets/additional_configs/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/secrets/akeyless.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/secrets/exceptions/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/secrets/exceptions/not_found.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/secrets/secrets.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/security_headers/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/security_headers/base.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/security_headers/cache_control.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/security_headers/cors.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/security_headers/csp.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/security_headers/hsts.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/security_headers/x_content_type_options.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/security_headers/x_frame_options.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/tests/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/tests/simple_api/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/tests/simple_api/models/__init__.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/tests/simple_api/models/status.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/tests/simple_api/models/user.py +0 -0
- {clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/tests/simple_api/users_api.py +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from .string import String
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class CreatedByAuthorizationData(String):
|
|
5
|
+
required_configs = [
|
|
6
|
+
"authorization_data_key_name",
|
|
7
|
+
]
|
|
8
|
+
|
|
9
|
+
def __init__(self, di):
|
|
10
|
+
super().__init__(di)
|
|
11
|
+
|
|
12
|
+
@property
|
|
13
|
+
def is_writeable(self):
|
|
14
|
+
return False
|
|
15
|
+
|
|
16
|
+
def pre_save(self, data, model):
|
|
17
|
+
if model.exists:
|
|
18
|
+
return data
|
|
19
|
+
|
|
20
|
+
authorization_data = self.di.build("input_output", cache=True).get_authorization_data()
|
|
21
|
+
# data comes last so that it can override the info in the authorization data. This seems counter-intuitive,
|
|
22
|
+
# but is important. You would think that you *don't* want the data from the authorization data to be
|
|
23
|
+
# overridden (since this is mainly used for logging), but the trouble is that there are a variety of use-cases
|
|
24
|
+
# where the application must provide the audit data. Examples include registration and login. In these
|
|
25
|
+
# cases, authorization data will be empty, and must be provided by the applicaiton.
|
|
26
|
+
return {self.name: authorization_data.get(self.config("authorization_data_key_name"), "N/A"), **data}
|
|
@@ -48,7 +48,7 @@ class Base(ABC):
|
|
|
48
48
|
raise KeyError(f"Attempt to set unknown configuration setting '{key}' for handler '{class_name}'")
|
|
49
49
|
|
|
50
50
|
self._check_configuration(configuration)
|
|
51
|
-
self._configuration = self._finalize_configuration(self.
|
|
51
|
+
self._configuration = self._finalize_configuration(self.apply_default_configuration(configuration))
|
|
52
52
|
|
|
53
53
|
def _check_configuration(self, configuration):
|
|
54
54
|
if not "authentication" in configuration:
|
|
@@ -113,7 +113,7 @@ class Base(ABC):
|
|
|
113
113
|
f"Configuration error for handler '{self.__class__.__name__}': if provided, base_url must be a string"
|
|
114
114
|
)
|
|
115
115
|
|
|
116
|
-
def
|
|
116
|
+
def apply_default_configuration(self, configuration):
|
|
117
117
|
return {
|
|
118
118
|
**self._global_configuration_defaults,
|
|
119
119
|
**self._configuration_defaults,
|
|
@@ -56,7 +56,7 @@ class Routing(Base):
|
|
|
56
56
|
raise KeyError(f"Attempt to set unknown configuration setting '{key}' for handler '{class_name}'")
|
|
57
57
|
|
|
58
58
|
self._check_configuration(configuration)
|
|
59
|
-
self._configuration = self._finalize_configuration(self.
|
|
59
|
+
self._configuration = self._finalize_configuration(self.apply_default_configuration(configuration))
|
|
60
60
|
|
|
61
61
|
def _check_configuration(self, configuration):
|
|
62
62
|
super()._check_configuration(configuration)
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import logging
|
|
1
2
|
import urllib.parse
|
|
2
3
|
import re
|
|
4
|
+
import json
|
|
3
5
|
from ..autodoc.request import URLPath
|
|
4
6
|
from ..autodoc.schema import String
|
|
5
7
|
from . import simple_routing
|
|
6
8
|
|
|
9
|
+
logger = logging.getLogger(__name__)
|
|
10
|
+
|
|
7
11
|
|
|
8
12
|
class SimpleRoutingRoute:
|
|
9
13
|
_di = None
|
|
@@ -91,26 +95,45 @@ class SimpleRoutingRoute:
|
|
|
91
95
|
to understand if there was no route match at all.
|
|
92
96
|
"""
|
|
93
97
|
# if we're routing to a simple router then defer to it
|
|
98
|
+
incoming = f"Incoming request: [{request_method}] {full_path}. Check against route with url '{self._path}' "
|
|
99
|
+
if not self._methods:
|
|
100
|
+
incoming += " configured for any method except OPTIONS"
|
|
101
|
+
elif isinstance(self._methods, str):
|
|
102
|
+
incoming += f" with method '{self._methods}'"
|
|
103
|
+
else:
|
|
104
|
+
incoming += " with any of the following methods: " + ", ".join(self._methods)
|
|
94
105
|
if self._routes_to_simple_routing:
|
|
95
106
|
return self._handler.can_handle(full_path, request_method, is_cors=is_cors)
|
|
96
107
|
# If we're routing for CORS then ignore the request method (since it won't match)
|
|
97
108
|
if not is_cors and self._methods is not None and request_method not in self._methods:
|
|
109
|
+
logger.debug(
|
|
110
|
+
f"{incoming} Skipped because this route is not specifically configured for CORS, and this is an OPTIONS request."
|
|
111
|
+
)
|
|
98
112
|
return None
|
|
99
113
|
if self._resource_paths:
|
|
100
|
-
|
|
114
|
+
results = self._resource_path_match(full_path, self._path_parts, self._resource_paths)
|
|
115
|
+
if not results:
|
|
116
|
+
logger.debug(f"{incoming} Not a match.")
|
|
117
|
+
else:
|
|
118
|
+
logger.debug(f"{incoming} Matched and extracted route data: " + json.dumps(results))
|
|
119
|
+
return results
|
|
101
120
|
if self._path is not None:
|
|
102
121
|
full_path = full_path.strip("/")
|
|
103
122
|
my_path = self._path.strip("/")
|
|
104
123
|
my_path_length = len(my_path)
|
|
105
124
|
full_path_length = len(full_path)
|
|
106
125
|
if my_path_length > full_path_length:
|
|
126
|
+
logger.debug(f"{incoming} Not a match. I'm too long to bother checking.")
|
|
107
127
|
return None
|
|
108
128
|
if full_path[:my_path_length] != my_path:
|
|
129
|
+
logger.debug(f"{incoming} Not a match. Our prefixes just don't match.")
|
|
109
130
|
return None
|
|
110
131
|
# make sure we don't get confused by partial matches. `user` should match `user/` and `user/5`,
|
|
111
132
|
# but it shouldn't match `users/`
|
|
112
133
|
if full_path_length > my_path_length and full_path[my_path_length] != "/":
|
|
134
|
+
logger.debug(f"{incoming} Not a match. I only partially matched the URL but not as a sub-directory.")
|
|
113
135
|
return None
|
|
136
|
+
logger.debug(f"{incoming} Match!")
|
|
114
137
|
return {}
|
|
115
138
|
|
|
116
139
|
def _resource_path_match(self, requested_path, path_parts, resource_paths):
|
|
@@ -12,6 +12,7 @@ class Update(Write):
|
|
|
12
12
|
"model": None,
|
|
13
13
|
"model_class": None,
|
|
14
14
|
"columns": None,
|
|
15
|
+
"column_overrides": None,
|
|
15
16
|
"writeable_columns": None,
|
|
16
17
|
"readable_columns": None,
|
|
17
18
|
"where": [],
|
|
@@ -19,15 +20,19 @@ class Update(Write):
|
|
|
19
20
|
"include_id_in_path": False,
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
def
|
|
23
|
-
input_data = self.request_data(input_output)
|
|
23
|
+
def get_model_id(self, input_output, input_data):
|
|
24
24
|
routing_data = input_output.routing_data()
|
|
25
25
|
if self.id_column_name in routing_data:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
return routing_data[self.id_column_name]
|
|
27
|
+
if "id" in routing_data:
|
|
28
|
+
return routing_data["id"]
|
|
29
|
+
raise ValueError("I didn't receive the ID in my routing data. I am probably misconfigured.")
|
|
30
|
+
|
|
31
|
+
def handle(self, input_output):
|
|
32
|
+
input_data = self.request_data(input_output)
|
|
33
|
+
model_id = self.get_model_id(input_output, input_data)
|
|
34
|
+
if not model_id:
|
|
35
|
+
return self.error(input_output, "Not Found", 404)
|
|
31
36
|
id_column_name = self.id_column_name
|
|
32
37
|
models = self._model.where(f"{id_column_name}={model_id}")
|
|
33
38
|
for where in self.configuration("where"):
|
|
@@ -42,6 +47,7 @@ class Update(Write):
|
|
|
42
47
|
input_output.routing_data(),
|
|
43
48
|
input_output.get_authorization_data(),
|
|
44
49
|
input_output,
|
|
50
|
+
overrides=self.configuration("column_overrides"),
|
|
45
51
|
)
|
|
46
52
|
authorization = self._configuration.get("authorization", None)
|
|
47
53
|
if authorization and hasattr(authorization, "filter_models"):
|
|
@@ -58,7 +64,7 @@ class Update(Write):
|
|
|
58
64
|
}
|
|
59
65
|
if input_errors:
|
|
60
66
|
raise InputError(input_errors)
|
|
61
|
-
model.save(input_data, columns=self.
|
|
67
|
+
model.save(input_data, columns=self._get_writeable_columns())
|
|
62
68
|
|
|
63
69
|
return self.success(input_output, self._model_as_json(model, input_output))
|
|
64
70
|
|
|
@@ -130,24 +130,26 @@ class Model(Models):
|
|
|
130
130
|
"""
|
|
131
131
|
if not len(data):
|
|
132
132
|
raise ValueError("You have to pass in something to save!")
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
save_columns = self.columns()
|
|
134
|
+
if columns is not None:
|
|
135
|
+
for column in columns.values():
|
|
136
|
+
save_columns[column.name] = column
|
|
135
137
|
|
|
136
138
|
old_data = self.data
|
|
137
|
-
data = self.columns_pre_save(data,
|
|
139
|
+
data = self.columns_pre_save(data, save_columns)
|
|
138
140
|
data = self.pre_save(data)
|
|
139
141
|
if data is None:
|
|
140
142
|
raise ValueError("pre_save forgot to return the data array!")
|
|
141
143
|
|
|
142
|
-
to_save = self.columns_to_backend(data,
|
|
143
|
-
to_save = self.to_backend(to_save,
|
|
144
|
+
to_save = self.columns_to_backend(data, save_columns)
|
|
145
|
+
to_save = self.to_backend(to_save, save_columns)
|
|
144
146
|
if self.exists:
|
|
145
147
|
new_data = self._backend.update(self._data[self.id_column_name], to_save, self)
|
|
146
148
|
else:
|
|
147
149
|
new_data = self._backend.create(to_save, self)
|
|
148
|
-
id = self._backend.column_from_backend(
|
|
150
|
+
id = self._backend.column_from_backend(save_columns[self.id_column_name], new_data[self.id_column_name])
|
|
149
151
|
|
|
150
|
-
data = self.columns_post_save(data, id,
|
|
152
|
+
data = self.columns_post_save(data, id, save_columns)
|
|
151
153
|
self.post_save(data, id)
|
|
152
154
|
|
|
153
155
|
self.data = new_data
|
|
@@ -155,7 +157,7 @@ class Model(Models):
|
|
|
155
157
|
self._previous_data = old_data
|
|
156
158
|
self._touched_columns = list(data.keys())
|
|
157
159
|
|
|
158
|
-
self.columns_save_finished(
|
|
160
|
+
self.columns_save_finished(save_columns)
|
|
159
161
|
self.save_finished()
|
|
160
162
|
|
|
161
163
|
return True
|
|
@@ -332,10 +334,10 @@ class Model(Models):
|
|
|
332
334
|
"""
|
|
333
335
|
pass
|
|
334
336
|
|
|
335
|
-
def where_for_request(self, models, routing_data, authorization_data, input_output):
|
|
337
|
+
def where_for_request(self, models, routing_data, authorization_data, input_output, overrides=None):
|
|
336
338
|
"""
|
|
337
339
|
A hook to automatically apply filtering whenever the model makes an appearance in a get/update/list/search handler.
|
|
338
340
|
"""
|
|
339
|
-
for column in self.columns().values():
|
|
341
|
+
for column in self.columns(overrides=overrides).values():
|
|
340
342
|
models = column.where_for_request(models, routing_data, authorization_data, input_output)
|
|
341
343
|
return models
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
from .string import String
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class CreatedByAuthorizationData(String):
|
|
5
|
-
required_configs = [
|
|
6
|
-
"authorization_data_key_name",
|
|
7
|
-
]
|
|
8
|
-
|
|
9
|
-
def __init__(self, di):
|
|
10
|
-
super().__init__(di)
|
|
11
|
-
|
|
12
|
-
@property
|
|
13
|
-
def is_writeable(self):
|
|
14
|
-
return False
|
|
15
|
-
|
|
16
|
-
def pre_save(self, data, model):
|
|
17
|
-
if model.exists:
|
|
18
|
-
return data
|
|
19
|
-
|
|
20
|
-
authorization_data = self.di.build("input_output", cache=True).get_authorization_data()
|
|
21
|
-
return {**data, self.name: authorization_data.get(self.config("authorization_data_key_name"), "N/A")}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/__init__.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/oai3_json.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/parameter.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/request.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/response.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/schema/array.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/schema/default.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/schema/enum.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/schema/object.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/autodoc/formats/oai3_json/test.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/created_by_user_agent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/column_types/many_to_many_with_data.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/di/additional_config_auto_import.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/di/test_module/another_module/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/exceptions/authentication.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/exceptions/authorization.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/handlers/exceptions/client_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_outputs/exceptions/__init__.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_outputs/exceptions/cli_input_error.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_outputs/exceptions/cli_not_found.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_requirements/maximum_length.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/input_requirements/minimum_length.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/secrets/additional_configs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/security_headers/x_content_type_options.py
RENAMED
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/security_headers/x_frame_options.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.18.6 → clear_skies-1.18.8}/src/clearskies/tests/simple_api/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|