kinto 23.0.1__tar.gz → 23.0.3__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 kinto might be problematic. Click here for more details.
- {kinto-23.0.1 → kinto-23.0.3}/PKG-INFO +1 -1
- {kinto-23.0.1 → kinto-23.0.3}/constraints.txt +15 -11
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/errors.rst +1 -1
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/openapi.rst +1 -1
- {kinto-23.0.1 → kinto-23.0.3}/docs/requirements.txt +3 -3
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/resource/__init__.py +9 -1
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/resource/schema.py +4 -4
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/resource/viewset.py +2 -2
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/__init__.py +8 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/testing.py +8 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/utils.py +1 -1
- kinto-23.0.3/kinto/plugins/admin/VERSION +1 -0
- kinto-23.0.3/kinto/plugins/admin/build/VERSION +1 -0
- kinto-23.0.3/kinto/plugins/admin/build/assets/index-DnaKeFLX.css +6 -0
- kinto-23.0.3/kinto/plugins/admin/build/assets/index-Dt2_17Gx.js +145 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/build/index.html +2 -2
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/views.py +1 -1
- {kinto-23.0.1 → kinto-23.0.3}/kinto.egg-info/PKG-INFO +1 -1
- {kinto-23.0.1 → kinto-23.0.3}/kinto.egg-info/SOURCES.txt +2 -2
- {kinto-23.0.1 → kinto-23.0.3}/scripts/pull-kinto-admin.sh +2 -1
- {kinto-23.0.1 → kinto-23.0.3}/tests/browser.ini +2 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_filter.py +4 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_schema.py +2 -2
- kinto-23.0.1/kinto/plugins/admin/VERSION +0 -1
- kinto-23.0.1/kinto/plugins/admin/build/VERSION +0 -1
- kinto-23.0.1/kinto/plugins/admin/build/assets/index-Cs7JVwIg.css +0 -6
- kinto-23.0.1/kinto/plugins/admin/build/assets/index-CylsivYB.js +0 -165
- {kinto-23.0.1 → kinto-23.0.3}/.dockerignore +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/.github/CODE_OF_CONDUCT.md +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/.github/CONTRIBUTING.md +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/.github/dependabot.yml +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/.github/release.yml +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/.github/workflows/labels.yaml +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/.github/workflows/publish.yml +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/.github/workflows/scheduled.yml +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/.github/workflows/test.yml +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/.gitignore +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/.readthedocs.yaml +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/CHANGELOG.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/CONTRIBUTORS.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/Dockerfile +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/LICENSE +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/Makefile +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/README.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/SECURITY.md +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/SUPPORT.md +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/app.wsgi +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/constraints.in +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docker-compose.yml +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/_static/piwik.js +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/_static/theme_overrides.css +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/_templates/footer.html +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/_templates/indexcontent.html +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/_templates/layout.html +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_details-delete-list.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_details-delete-object.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_details-get-list.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_details-get-object.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_details-head-list.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_details-patch-object.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_details-post-list.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_details-put-object.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_status-delete-list.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_status-delete-object.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_status-get-list.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_status-get-object.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_status-patch-object.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_status-post-list.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/_status-put-object.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/accounts.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/admin.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/authentication.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/backoff.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/batch.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/buckets.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/collections.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/deprecation.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/filtering.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/flush.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/groups.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/history.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/index.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/openid.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/pagination.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/permissions.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/records.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/selecting_fields.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/sorting.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/timestamps.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/1.x/utilities.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/index.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/api/versioning.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/changelog.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/commandline.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/community.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/concepts.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/conf.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/configuration/good-practices.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/configuration/index.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/configuration/production.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/configuration/settings.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/_static/theme_overrides.css +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/api.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/cache.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/decorators.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/errors.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/glossary.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/images/cliquet-base.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/images/cliquet-mozilla.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/index.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/notifications.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/permission.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/quickstart.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/rationale.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/resource.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/storage.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/testing.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/utils.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/core/viewsets.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/faq.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/alwaysdata-button.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/architecture.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/color-formatter.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/concepts-general.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/concepts-permissions.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/heroku-button.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/kinto-logo.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/kinto-logo.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/logo-admin.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/logo-attachment.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/logo-community.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/logo-history.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/logo-javascript.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/logo-jsonschema.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/logo-multiapps.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/logo-permissions.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/logo-python.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/logo-selfhostable.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/logo-synchronisation.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/overview-deployonce-selfhost.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/overview-features.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/overview-synchronisation.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/overview-use-cases.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/scalingo-button.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/screenshot-kinto-admin-1.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/screenshot-kinto-admin-2.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/screenshot-kinto-admin-3.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/screenshot-kinto-admin-4.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/sequence-storage.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/sync-both.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/sync-newest.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/images/sync-oldest.svg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/index.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/kinto-admin.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/overview.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/troubleshooting.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/tutorials/custom-id-generator.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/tutorials/first-steps.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/tutorials/index.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/tutorials/install.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/tutorials/notifications-custom.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/tutorials/permission-setups.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/tutorials/permissions.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/tutorials/synchronisation.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/docs/tutorials/write-plugin.rst +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/__main__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/authorization.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/config/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/config/kinto.tpl +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/contribute.json +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/authentication.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/authorization.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cache/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cache/memcached.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cache/memory.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cache/postgresql/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cache/postgresql/schema.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cache/testing.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice/cors.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice/errors.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice/pyramidhook.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice/renderer.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice/resource.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice/service.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice/util.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice/validators/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice/validators/_colander.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice/validators/_marshmallow.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice_swagger/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice_swagger/converters/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice_swagger/converters/exceptions.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice_swagger/converters/parameters.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice_swagger/converters/schema.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice_swagger/swagger.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice_swagger/templates/index.html +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice_swagger/templates/index_script_template.html +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice_swagger/util.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/cornice_swagger/views.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/decorators.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/errors.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/events.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/initialization.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/listeners/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/metrics.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/openapi.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/permission/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/permission/memory.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/permission/postgresql/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/permission/postgresql/migrations/migration_001_002.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/permission/postgresql/schema.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/permission/testing.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/resource/model.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/schema.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/scripts.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/statsd.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/exceptions.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/generators.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/memory.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/client.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_001_002.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_002_003.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_003_004.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_004_005.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_005_006.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_006_007.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_007_008.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_008_009.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_009_010.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_010_011.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_011_012.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_012_013.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_013_014.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_014_015.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_015_016.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_016_017.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_017_018.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_018_019.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_019_020.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_020_021.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_021_022.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrations/migration_022_023.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/migrator.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/pool.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/postgresql/schema.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/storage/utils.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/testing.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/views/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/views/batch.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/views/errors.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/views/heartbeat.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/views/hello.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/views/openapi.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/core/views/version.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/events.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/accounts/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/accounts/authentication.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/accounts/scripts.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/accounts/utils.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/accounts/views.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/README.md +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/build/assets/asn1-EdZsLKOL.js +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/build/assets/clojure-BMjYHr_A.js +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/build/assets/css-BnMrqG3P.js +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/build/assets/javascript-qCveANmP.js +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/build/assets/logo-VBRiKSPX.png +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/build/assets/mllike-CXdrOF99.js +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/build/assets/python-BuPzkPfP.js +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/build/assets/rpm-CTu-6PCP.js +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/build/assets/sql-D0XecflT.js +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/build/assets/ttcn-cfg-B9xdYoR4.js +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/admin/public/help.html +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/default_bucket/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/flush.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/history/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/history/listener.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/history/views.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/openid/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/openid/utils.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/openid/views.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/prometheus.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/plugins/statsd.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/schema_validation.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/views/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/views/admin.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/views/buckets.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/views/collections.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/views/contribute.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/views/groups.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/views/permissions.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto/views/records.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto.egg-info/dependency_links.txt +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto.egg-info/entry_points.txt +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto.egg-info/requires.txt +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/kinto.egg-info/top_level.txt +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/pyproject.toml +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/setup.cfg +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/browser.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/listeners.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_base.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_cache_expires.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_events.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_model.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_object.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_object_permissions.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_pagination.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_partial_response.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_preconditions.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_sort.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_sync.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_views.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_views_cors.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/resource/test_viewset.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/schema/postgresql-permission-1.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/schema/postgresql-storage-1.6.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/schema/postgresql-storage-11.sql +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/support.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_authentication.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_authorization.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_cache.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_decorators.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_deprecation.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_errors.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_initialization.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_listeners.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_logging.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_metrics.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_openapi.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_permission.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_schema.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_scripts.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_storage.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_storage_migrations.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_storage_pool.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_utils.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_views_batch.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_views_errors.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_views_heartbeat.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_views_hello.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_views_openapi.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_views_postgresql.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/test_views_transaction.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/testapp/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/testapp/static/index.html +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/testapp/views.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/core/testplugin/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/functional.ini +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/functional.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/openapi/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/openapi/support.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/openapi/test_plugins.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/openapi/test_resources.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/openapi/test_responses_buckets.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/openapi/test_responses_collections.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/openapi/test_responses_errors.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/openapi/test_responses_groups.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/openapi/test_responses_records.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/openapi/test_validation.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/plugins/__init__.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/plugins/test_accounts.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/plugins/test_admin.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/plugins/test_default_bucket.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/plugins/test_flush.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/plugins/test_history.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/plugins/test_openid.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/plugins/test_prometheus.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/plugins/test_statsd.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/support.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_authorization.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_config.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_configuration/test.ini +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_init.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_main.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_admin.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_buckets.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_collections.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_collections_cache.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_contribute.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_disable_default.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_groups.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_hello.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_metrics.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_objects_permissions.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_permissions.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_records.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_schema_collection.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_schema_group.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_schema_record.py +0 -0
- {kinto-23.0.1 → kinto-23.0.3}/tests/test_views_version.py +0 -0
|
@@ -60,7 +60,7 @@ jsonpointer==2.4
|
|
|
60
60
|
# jsonschema
|
|
61
61
|
jsonref==1.1.0
|
|
62
62
|
# via bravado-core
|
|
63
|
-
jsonschema==4.
|
|
63
|
+
jsonschema==4.24.0
|
|
64
64
|
# via
|
|
65
65
|
# -r constraints.in
|
|
66
66
|
# bravado-core
|
|
@@ -73,7 +73,7 @@ markupsafe==2.1.4
|
|
|
73
73
|
# via werkzeug
|
|
74
74
|
msgpack==1.0.7
|
|
75
75
|
# via bravado-core
|
|
76
|
-
newrelic==10.
|
|
76
|
+
newrelic==10.14.0
|
|
77
77
|
# via -r constraints.in
|
|
78
78
|
packaging==23.2
|
|
79
79
|
# via
|
|
@@ -88,16 +88,20 @@ plaster==1.1.2
|
|
|
88
88
|
# pyramid
|
|
89
89
|
plaster-pastedeploy==1.0.1
|
|
90
90
|
# via pyramid
|
|
91
|
-
playwright==1.
|
|
91
|
+
playwright==1.53.0
|
|
92
92
|
# via -r constraints.in
|
|
93
93
|
pluggy==1.5.0
|
|
94
|
-
# via
|
|
95
|
-
|
|
94
|
+
# via
|
|
95
|
+
# pytest
|
|
96
|
+
# pytest-cov
|
|
97
|
+
prometheus-client==0.22.1
|
|
96
98
|
# via -r constraints.in
|
|
97
99
|
psycopg2-binary==2.9.10
|
|
98
100
|
# via -r constraints.in
|
|
99
101
|
pyee==13.0.0
|
|
100
102
|
# via playwright
|
|
103
|
+
pygments==2.19.1
|
|
104
|
+
# via pytest
|
|
101
105
|
pyproject-hooks==1.0.0
|
|
102
106
|
# via build
|
|
103
107
|
pyramid==2.0.2
|
|
@@ -109,14 +113,14 @@ pyramid-multiauth==1.0.2
|
|
|
109
113
|
# via -r constraints.in
|
|
110
114
|
pyramid-tm==2.6
|
|
111
115
|
# via -r constraints.in
|
|
112
|
-
pytest==8.
|
|
116
|
+
pytest==8.4.1
|
|
113
117
|
# via
|
|
114
118
|
# -r constraints.in
|
|
115
119
|
# pytest-cache
|
|
116
120
|
# pytest-cov
|
|
117
121
|
pytest-cache==1.0
|
|
118
122
|
# via -r constraints.in
|
|
119
|
-
pytest-cov==6.
|
|
123
|
+
pytest-cov==6.2.1
|
|
120
124
|
# via -r constraints.in
|
|
121
125
|
python-dateutil==2.9.0.post0
|
|
122
126
|
# via
|
|
@@ -137,7 +141,7 @@ referencing==0.32.1
|
|
|
137
141
|
# via
|
|
138
142
|
# jsonschema
|
|
139
143
|
# jsonschema-specifications
|
|
140
|
-
requests==2.32.
|
|
144
|
+
requests==2.32.4
|
|
141
145
|
# via
|
|
142
146
|
# -r constraints.in
|
|
143
147
|
# bravado-core
|
|
@@ -149,7 +153,7 @@ rpds-py==0.17.1
|
|
|
149
153
|
# via
|
|
150
154
|
# jsonschema
|
|
151
155
|
# referencing
|
|
152
|
-
ruff==0.
|
|
156
|
+
ruff==0.12.3
|
|
153
157
|
# via -r constraints.in
|
|
154
158
|
sentry-sdk==2.8.0
|
|
155
159
|
# via -r constraints.in
|
|
@@ -162,7 +166,7 @@ six==1.16.0
|
|
|
162
166
|
# rfc3339-validator
|
|
163
167
|
soupsieve==2.5
|
|
164
168
|
# via beautifulsoup4
|
|
165
|
-
sqlalchemy==2.0.
|
|
169
|
+
sqlalchemy==2.0.41
|
|
166
170
|
# via
|
|
167
171
|
# -r constraints.in
|
|
168
172
|
# sentry-sdk
|
|
@@ -189,7 +193,7 @@ typing-extensions==4.9.0
|
|
|
189
193
|
# swagger-spec-validator
|
|
190
194
|
uri-template==1.3.0
|
|
191
195
|
# via jsonschema
|
|
192
|
-
urllib3==2.
|
|
196
|
+
urllib3==2.5.0
|
|
193
197
|
# via
|
|
194
198
|
# requests
|
|
195
199
|
# sentry-sdk
|
|
@@ -53,7 +53,7 @@ Precondition errors
|
|
|
53
53
|
As detailed in the :ref:`timestamps <server-timestamps>` section, it is
|
|
54
54
|
possible to add concurrency control using ``ETag`` request headers.
|
|
55
55
|
|
|
56
|
-
When
|
|
56
|
+
When the provided preconditions are not met, a |status-412| error response
|
|
57
57
|
is returned.
|
|
58
58
|
|
|
59
59
|
Additional information about the record currently stored on the server will be
|
|
@@ -102,7 +102,7 @@ The current implementation supports extensions as follows:
|
|
|
102
102
|
`Cornice Swagger documentation <https://cornices.github.io/cornice.ext.swagger/>`_.
|
|
103
103
|
|
|
104
104
|
- If the plugin changes the possible responses for a Resource, you can
|
|
105
|
-
document it by subclassing :class:`kinto.core.resource.schema.
|
|
105
|
+
document it by subclassing :class:`kinto.core.resource.schema.ResourceResponses` and
|
|
106
106
|
changing the ``responses`` attribute on your Resource ``ViewSet``.
|
|
107
107
|
|
|
108
108
|
- If the plugin adds an authentication method, you may declare it using
|
|
@@ -319,7 +319,7 @@ class Resource:
|
|
|
319
319
|
#
|
|
320
320
|
|
|
321
321
|
def plural_head(self):
|
|
322
|
-
"""Model ``HEAD`` endpoint: empty
|
|
322
|
+
"""Model ``HEAD`` endpoint: empty response with a ``Total-Objects`` header.
|
|
323
323
|
|
|
324
324
|
:raises: :exc:`~pyramid:pyramid.httpexceptions.HTTPNotModified` if
|
|
325
325
|
``If-None-Match`` header is provided and collection not
|
|
@@ -1135,6 +1135,14 @@ class Resource:
|
|
|
1135
1135
|
if field == self.model.modified_field and not is_valid_timestamp(value):
|
|
1136
1136
|
raise_invalid(self.request, **error_details)
|
|
1137
1137
|
|
|
1138
|
+
if field in (self.model.modified_field, self.model.id_field) and operator in (
|
|
1139
|
+
COMPARISON.CONTAINS,
|
|
1140
|
+
COMPARISON.CONTAINS_ANY,
|
|
1141
|
+
):
|
|
1142
|
+
error_msg = f"Field '{field}' is not an array"
|
|
1143
|
+
error_details["description"] = error_msg
|
|
1144
|
+
raise_invalid(self.request, **error_details)
|
|
1145
|
+
|
|
1138
1146
|
filters.append(Filter(field, value, operator))
|
|
1139
1147
|
|
|
1140
1148
|
# If a plural endpoint is reached, and if the user does not have the
|
|
@@ -21,7 +21,7 @@ positive_big_integer = colander.Range(min=0, max=POSTGRESQL_MAX_INTEGER_VALUE)
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class TimeStamp(TimeStamp):
|
|
24
|
-
"""This schema is deprecated, you
|
|
24
|
+
"""This schema is deprecated, you should use `kinto.core.schema.TimeStamp` instead."""
|
|
25
25
|
|
|
26
26
|
def __init__(self, *args, **kwargs):
|
|
27
27
|
message = (
|
|
@@ -33,7 +33,7 @@ class TimeStamp(TimeStamp):
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
class URL(URL):
|
|
36
|
-
"""This schema is deprecated, you
|
|
36
|
+
"""This schema is deprecated, you should use `kinto.core.schema.URL` instead."""
|
|
37
37
|
|
|
38
38
|
def __init__(self, *args, **kwargs):
|
|
39
39
|
message = (
|
|
@@ -422,7 +422,7 @@ class PluralResponseSchema(colander.MappingSchema):
|
|
|
422
422
|
return datalist
|
|
423
423
|
|
|
424
424
|
|
|
425
|
-
class
|
|
425
|
+
class ResourceResponses:
|
|
426
426
|
"""Class that wraps and handles Resource responses."""
|
|
427
427
|
|
|
428
428
|
default_schemas = {
|
|
@@ -448,7 +448,7 @@ class ResourceReponses:
|
|
|
448
448
|
}
|
|
449
449
|
default_get_schemas = {
|
|
450
450
|
"304": NotModifiedResponseSchema(
|
|
451
|
-
description="
|
|
451
|
+
description="Response has not changed since value in If-None-Match header"
|
|
452
452
|
)
|
|
453
453
|
}
|
|
454
454
|
default_post_schemas = {
|
|
@@ -16,7 +16,7 @@ from .schema import (
|
|
|
16
16
|
PluralGetQuerySchema,
|
|
17
17
|
PluralQuerySchema,
|
|
18
18
|
RequestSchema,
|
|
19
|
-
|
|
19
|
+
ResourceResponses,
|
|
20
20
|
)
|
|
21
21
|
|
|
22
22
|
|
|
@@ -64,7 +64,7 @@ class ViewSet:
|
|
|
64
64
|
|
|
65
65
|
factory = authorization.RouteFactory
|
|
66
66
|
|
|
67
|
-
responses =
|
|
67
|
+
responses = ResourceResponses()
|
|
68
68
|
|
|
69
69
|
service_arguments = {"description": "Set of {resource_name}"}
|
|
70
70
|
|
|
@@ -884,6 +884,14 @@ class Storage(StorageBase, MigratorMixin):
|
|
|
884
884
|
operator = "IS NOT NULL" if filtr.value else "IS NULL"
|
|
885
885
|
cond = f"{sql_field} {operator}"
|
|
886
886
|
|
|
887
|
+
elif filtr.operator == COMPARISON.CONTAINS:
|
|
888
|
+
value_holder = f"{prefix}_value_{i}"
|
|
889
|
+
holders[value_holder] = value
|
|
890
|
+
# In case the field is not a sequence, we ignore the object.
|
|
891
|
+
is_json_sequence = f"jsonb_typeof({sql_field}) = 'array'"
|
|
892
|
+
sql_operator = operators[filtr.operator]
|
|
893
|
+
cond = f"{is_json_sequence} AND {sql_field} {sql_operator} :{value_holder}"
|
|
894
|
+
|
|
887
895
|
elif filtr.operator == COMPARISON.CONTAINS_ANY:
|
|
888
896
|
value_holder = f"{prefix}_value_{i}"
|
|
889
897
|
holders[value_holder] = value
|
|
@@ -491,6 +491,14 @@ class BaseTestStorage:
|
|
|
491
491
|
objects = self.storage.list_all(filters=filters, **self.storage_kw)
|
|
492
492
|
self.assertEqual(len(objects), 0)
|
|
493
493
|
|
|
494
|
+
def test_list_all_contains_ignores_object_if_field_is_not_array(self):
|
|
495
|
+
self.create_object({"code": "black"})
|
|
496
|
+
self.create_object({"fib": ["a", "b", "c"]})
|
|
497
|
+
|
|
498
|
+
filters = [Filter("fib", ["a"], utils.COMPARISON.CONTAINS)]
|
|
499
|
+
objects = self.storage.list_all(filters=filters, **self.storage_kw)
|
|
500
|
+
self.assertEqual(len(objects), 1)
|
|
501
|
+
|
|
494
502
|
def test_list_all_can_filter_on_array_with_contains_any_and_unsupported_type(self):
|
|
495
503
|
self.create_object({"code": "black"})
|
|
496
504
|
self.create_object({"fib": [2, 3, 5]})
|
|
@@ -422,7 +422,7 @@ def follow_subrequest(request, subrequest, **kwargs):
|
|
|
422
422
|
"""Run a subrequest (e.g. batch), and follow the redirection if any.
|
|
423
423
|
|
|
424
424
|
:rtype: tuple
|
|
425
|
-
:returns: the
|
|
425
|
+
:returns: the response and the redirection request (or `subrequest`
|
|
426
426
|
if no redirection happened.)
|
|
427
427
|
"""
|
|
428
428
|
try:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.0.2
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.0.2
|