kinto 19.4.0__tar.gz → 19.5.0__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-19.4.0 → kinto-19.5.0}/.github/workflows/publish.yml +9 -0
- kinto-19.5.0/.github/workflows/scheduled.yml +85 -0
- {kinto-19.4.0 → kinto-19.5.0}/.github/workflows/test.yml +7 -4
- {kinto-19.4.0 → kinto-19.5.0}/CONTRIBUTORS.rst +1 -0
- {kinto-19.4.0/kinto.egg-info → kinto-19.5.0}/PKG-INFO +2 -1
- {kinto-19.4.0 → kinto-19.5.0}/constraints.txt +4 -4
- {kinto-19.4.0 → kinto-19.5.0}/docs/requirements.txt +2 -2
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/errors.py +6 -4
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/permission/memory.py +3 -2
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/permission/testing.py +6 -0
- kinto-19.5.0/kinto/plugins/admin/VERSION +1 -0
- kinto-19.5.0/kinto/plugins/admin/build/VERSION +1 -0
- kinto-19.4.0/kinto/plugins/admin/build/assets/index-D8oiN37x.css → kinto-19.5.0/kinto/plugins/admin/build/assets/index-BdpYyatM.css +1 -1
- kinto-19.4.0/kinto/plugins/admin/build/assets/index-BKIg2XW8.js → kinto-19.5.0/kinto/plugins/admin/build/assets/index-n-QM_iZE.js +65 -65
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/build/index.html +2 -2
- {kinto-19.4.0 → kinto-19.5.0/kinto.egg-info}/PKG-INFO +2 -1
- {kinto-19.4.0 → kinto-19.5.0}/kinto.egg-info/SOURCES.txt +3 -2
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_buckets.py +8 -0
- kinto-19.4.0/kinto/plugins/admin/VERSION +0 -1
- kinto-19.4.0/kinto/plugins/admin/build/VERSION +0 -1
- {kinto-19.4.0 → kinto-19.5.0}/.dockerignore +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/.github/CODE_OF_CONDUCT.md +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/.github/CONTRIBUTING.md +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/.github/dependabot.yml +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/.github/release.yml +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/.github/workflows/labels.yaml +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/.gitignore +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/CHANGELOG.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/Dockerfile +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/LICENSE +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/Makefile +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/README.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/SECURITY.md +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/SUPPORT.md +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/app.wsgi +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/constraints.in +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/contribute.json +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docker-compose.yml +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/_static/piwik.js +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/_static/theme_overrides.css +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/_templates/footer.html +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/_templates/indexcontent.html +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/_templates/layout.html +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_details-delete-list.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_details-delete-object.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_details-get-list.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_details-get-object.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_details-head-list.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_details-patch-object.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_details-post-list.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_details-put-object.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_status-delete-list.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_status-delete-object.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_status-get-list.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_status-get-object.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_status-patch-object.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_status-post-list.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/_status-put-object.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/accounts.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/admin.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/authentication.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/backoff.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/batch.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/buckets.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/collections.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/deprecation.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/errors.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/filtering.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/flush.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/groups.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/history.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/index.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/openapi.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/openid.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/pagination.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/permissions.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/quotas.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/records.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/selecting_fields.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/sorting.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/timestamps.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/1.x/utilities.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/index.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/api/versioning.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/changelog.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/commandline.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/community.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/concepts.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/conf.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/configuration/good-practices.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/configuration/index.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/configuration/production.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/configuration/settings.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/_static/theme_overrides.css +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/api.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/cache.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/decorators.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/errors.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/glossary.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/images/cliquet-base.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/images/cliquet-mozilla.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/index.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/notifications.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/permission.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/quickstart.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/rationale.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/resource.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/storage.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/testing.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/utils.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/core/viewsets.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/faq.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/alwaysdata-button.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/architecture.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/color-formatter.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/concepts-general.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/concepts-permissions.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/heroku-button.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/kinto-logo.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/kinto-logo.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-admin.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-attachment.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-community.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-demos.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-history.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-indexing.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-javascript.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-jsonschema.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-livesync.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-multiapps.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-offline.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-permissions.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-python.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-quotas.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-selfhostable.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-signature.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/logo-synchronisation.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/overview-deployonce-selfhost.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/overview-features.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/overview-synchronisation.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/overview-use-cases.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/scalingo-button.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/screenshot-kinto-admin-1.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/screenshot-kinto-admin-2.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/screenshot-kinto-admin-3.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/screenshot-kinto-admin-4.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/sequence-storage.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/sync-both.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/sync-newest.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/images/sync-oldest.svg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/index.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/kinto-admin.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/overview.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/troubleshooting.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/app-examples.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/authentication-github.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/client-side-encryption.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/custom-id-generator.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/first-steps.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/index.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/install.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/notifications-custom.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/notifications-websockets.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/permission-setups.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/permissions.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/synchronisation.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/docs/tutorials/write-plugin.rst +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/__main__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/authorization.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/config/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/config/kinto.tpl +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/authentication.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/authorization.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/cache/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/cache/memcached.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/cache/memory.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/cache/postgresql/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/cache/postgresql/schema.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/cache/testing.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/decorators.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/events.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/initialization.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/listeners/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/metrics.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/openapi.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/permission/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/permission/postgresql/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/permission/postgresql/migrations/migration_001_002.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/permission/postgresql/schema.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/resource/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/resource/model.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/resource/schema.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/resource/viewset.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/schema.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/scripts.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/statsd.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/exceptions.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/generators.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/memory.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/client.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_001_002.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_002_003.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_003_004.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_004_005.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_005_006.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_006_007.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_007_008.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_008_009.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_009_010.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_010_011.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_011_012.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_012_013.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_013_014.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_014_015.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_015_016.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_016_017.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_017_018.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_018_019.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_019_020.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_020_021.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrations/migration_021_022.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/migrator.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/pool.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/postgresql/schema.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/testing.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/storage/utils.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/testing.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/utils.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/views/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/views/batch.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/views/errors.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/views/heartbeat.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/views/hello.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/views/openapi.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/core/views/version.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/events.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/accounts/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/accounts/authentication.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/accounts/mails.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/accounts/scripts.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/accounts/utils.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/accounts/views/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/accounts/views/validation.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/README.md +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/build/assets/asn1-CGOzndHr.js +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/build/assets/clojure-BMjYHr_A.js +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/build/assets/css-BnMrqG3P.js +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/build/assets/javascript-iSgyE4tI.js +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/build/assets/logo-VBRiKSPX.png +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/build/assets/mllike-C_8OmSiT.js +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/build/assets/python-BuPzkPfP.js +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/build/assets/rpm-CTu-6PCP.js +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/build/assets/sql-C4g8LzGK.js +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/build/assets/ttcn-cfg-BIkV9KBc.js +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/public/help.html +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/admin/views.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/default_bucket/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/flush.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/history/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/history/listener.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/history/views.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/openid/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/openid/utils.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/openid/views.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/prometheus.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/quotas/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/quotas/listener.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/quotas/scripts.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/quotas/utils.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/plugins/statsd.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/schema_validation.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/scripts.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/views/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/views/admin.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/views/buckets.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/views/collections.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/views/contribute.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/views/groups.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/views/permissions.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto/views/records.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto.egg-info/dependency_links.txt +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto.egg-info/entry_points.txt +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto.egg-info/requires.txt +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/kinto.egg-info/top_level.txt +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/pyproject.toml +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/scripts/pull-kinto-admin.sh +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/setup.cfg +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/browser.ini +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/browser.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/listeners.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_base.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_cache_expires.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_events.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_filter.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_model.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_object.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_object_permissions.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_pagination.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_partial_response.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_preconditions.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_schema.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_sort.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_sync.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_views.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_views_cors.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/resource/test_viewset.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/schema/postgresql-permission-1.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/schema/postgresql-storage-1.6.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/schema/postgresql-storage-11.sql +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/support.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_authentication.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_authorization.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_cache.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_decorators.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_deprecation.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_errors.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_initialization.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_listeners.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_logging.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_metrics.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_openapi.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_permission.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_schema.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_scripts.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_storage.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_storage_migrations.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_storage_pool.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_utils.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_views_batch.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_views_errors.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_views_heartbeat.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_views_hello.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_views_openapi.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_views_postgresql.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/test_views_transaction.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/testapp/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/testapp/static/index.html +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/testapp/views.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/core/testplugin/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/functional.ini +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/functional.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/openapi/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/openapi/support.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/openapi/test_plugins.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/openapi/test_resources.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/openapi/test_responses_buckets.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/openapi/test_responses_collections.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/openapi/test_responses_errors.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/openapi/test_responses_groups.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/openapi/test_responses_records.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/openapi/test_validation.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/plugins/__init__.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/plugins/test_accounts.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/plugins/test_admin.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/plugins/test_default_bucket.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/plugins/test_flush.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/plugins/test_history.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/plugins/test_openid.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/plugins/test_prometheus.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/plugins/test_quotas.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/plugins/test_statsd.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/support.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_authorization.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_config.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_configuration/test.ini +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_init.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_main.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_scripts.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_admin.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_collections.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_collections_cache.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_contribute.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_disable_default.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_groups.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_hello.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_metrics.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_objects_permissions.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_permissions.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_records.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_schema_collection.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_schema_group.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_schema_record.py +0 -0
- {kinto-19.4.0 → kinto-19.5.0}/tests/test_views_version.py +0 -0
|
@@ -73,6 +73,14 @@ jobs:
|
|
|
73
73
|
- name: Check out the repo
|
|
74
74
|
uses: actions/checkout@v4
|
|
75
75
|
|
|
76
|
+
- name: Set up QEMU
|
|
77
|
+
uses: docker/setup-qemu-action@v3
|
|
78
|
+
|
|
79
|
+
- name: Enable multiplatform builds
|
|
80
|
+
uses: docker/setup-buildx-action@v3
|
|
81
|
+
with:
|
|
82
|
+
buildkitd-flags: "--debug" # Enable detailed logging
|
|
83
|
+
|
|
76
84
|
- name: Log in to Docker Hub
|
|
77
85
|
uses: docker/login-action@v3
|
|
78
86
|
with:
|
|
@@ -93,3 +101,4 @@ jobs:
|
|
|
93
101
|
push: true
|
|
94
102
|
tags: ${{ steps.meta.outputs.tags }}
|
|
95
103
|
labels: ${{ steps.meta.outputs.labels }}
|
|
104
|
+
platforms: linux/amd64,linux/arm64
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
name: Run scheduled jobs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: '0 0 * * *' # Runs daily at midnight
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
update-kinto-admin:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
defaults:
|
|
11
|
+
run:
|
|
12
|
+
shell: bash
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout repository
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Get current version
|
|
19
|
+
id: current_version
|
|
20
|
+
run: |
|
|
21
|
+
CURRENT_VERSION="$(cat kinto/plugins/admin/VERSION)"
|
|
22
|
+
echo "Current Version: $CURRENT_VERSION"
|
|
23
|
+
echo "version=$CURRENT_VERSION" >> "$GITHUB_OUTPUT"
|
|
24
|
+
|
|
25
|
+
- name: Get latest release version
|
|
26
|
+
id: latest_release_version
|
|
27
|
+
run: |
|
|
28
|
+
LATEST_RELEASE_VERSION=$(curl -s https://api.github.com/repos/Kinto/kinto-admin/releases/latest | jq -r .tag_name)
|
|
29
|
+
echo "Latest Version: $LATEST_RELEASE_VERSION"
|
|
30
|
+
echo "version=${LATEST_RELEASE_VERSION#v}" >> "$GITHUB_OUTPUT"
|
|
31
|
+
|
|
32
|
+
- name: Compare versions
|
|
33
|
+
id: compare_versions
|
|
34
|
+
env:
|
|
35
|
+
LATEST_RELEASE_VERSION: ${{ steps.latest_release_version.outputs.version }}
|
|
36
|
+
CURRENT_VERSION: ${{ steps.current_version.outputs.version }}
|
|
37
|
+
run: |
|
|
38
|
+
LATEST_VERSION=$(npx --yes semver "$CURRENT_VERSION" "$LATEST_RELEASE_VERSION" | tail -n 1)
|
|
39
|
+
if [ "$LATEST_VERSION" != "$CURRENT_VERSION" ]; then
|
|
40
|
+
echo "Kinto Admin update ready"
|
|
41
|
+
echo "update_needed=true" >> "$GITHUB_OUTPUT"
|
|
42
|
+
else
|
|
43
|
+
echo "Kinto Admin up to date"
|
|
44
|
+
echo "update_needed=false" >> "$GITHUB_OUTPUT"
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
- name: Configure git
|
|
48
|
+
if: ${{ steps.compare_versions.outputs.update_needed == 'true' }}
|
|
49
|
+
# https://github.com/orgs/community/discussions/26560
|
|
50
|
+
run: |
|
|
51
|
+
git config user.name github-actions[bot]
|
|
52
|
+
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
|
53
|
+
|
|
54
|
+
- name: Create branch
|
|
55
|
+
id: create_branch
|
|
56
|
+
if: ${{ steps.compare_versions.outputs.update_needed == 'true' }}
|
|
57
|
+
env:
|
|
58
|
+
BRANCH_NAME: updates/kinto-admin-${{ steps.latest_release_version.outputs.version }}
|
|
59
|
+
LATEST_RELEASE: ${{ steps.latest_release_version.outputs.version }}
|
|
60
|
+
run: |
|
|
61
|
+
git fetch origin --no-tags --quiet "refs/heads/updates/*:refs/remotes/origin/updates/*"
|
|
62
|
+
|
|
63
|
+
if [ "$(git rev-parse --quiet --verify origin/$"BRANCH_NAME")" ]; then
|
|
64
|
+
echo "Branch $BRANCH_NAME already exists on origin."
|
|
65
|
+
echo "pr_needed=false" >> "$GITHUB_OUTPUT"
|
|
66
|
+
else
|
|
67
|
+
git checkout -b "$BRANCH_NAME"
|
|
68
|
+
echo "$LATEST_RELEASE" > kinto/plugins/admin/VERSION
|
|
69
|
+
git commit -am "Update Kinto Admin to $LATEST_RELEASE"
|
|
70
|
+
git push origin "$BRANCH_NAME"
|
|
71
|
+
echo "pr_needed=true" >> "$GITHUB_OUTPUT"
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
- name: Create pull request
|
|
75
|
+
if: ${{ steps.compare_versions.outputs.update_needed == 'true' && steps.create_branch.outputs.pr_needed == 'true'}}
|
|
76
|
+
env:
|
|
77
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
78
|
+
BRANCH_NAME: updates/kinto-admin-${{ steps.latest_release_version.outputs.version }}
|
|
79
|
+
run: |
|
|
80
|
+
gh pr create \
|
|
81
|
+
--title "Update Kinto Admin version to ${{ steps.latest_release_version.outputs.version }}" \
|
|
82
|
+
--body "" \
|
|
83
|
+
--base "main" \
|
|
84
|
+
--head "$BRANCH_NAME" \
|
|
85
|
+
--label "dependencies"
|
|
@@ -16,6 +16,9 @@ jobs:
|
|
|
16
16
|
steps:
|
|
17
17
|
- uses: actions/checkout@v4
|
|
18
18
|
|
|
19
|
+
- name: Actions Lint
|
|
20
|
+
uses: raven-actions/actionlint@v2
|
|
21
|
+
|
|
19
22
|
- uses: actions/setup-python@v5
|
|
20
23
|
|
|
21
24
|
- name: make lint
|
|
@@ -158,11 +161,11 @@ jobs:
|
|
|
158
161
|
run: |
|
|
159
162
|
psql -c "CREATE DATABASE testdb ENCODING 'UTF8' TEMPLATE template0;" -U postgres -h localhost
|
|
160
163
|
|
|
161
|
-
- run: mkdir ${DOCKER_CACHE}
|
|
164
|
+
- run: mkdir "${DOCKER_CACHE}"
|
|
162
165
|
|
|
163
166
|
- name: Compute cache key
|
|
164
167
|
# Create hash of hashes of checked in files not in Dockerignore
|
|
165
|
-
run: echo "CACHE_KEY=$(git ls-tree --full-tree -r HEAD | grep -v -f .dockerignore | awk '{print $3}' | git hash-object --stdin)" >> $GITHUB_ENV
|
|
168
|
+
run: echo "CACHE_KEY=$(git ls-tree --full-tree -r HEAD | grep -v -f .dockerignore | awk '{print $3}' | git hash-object --stdin)" >> "$GITHUB_ENV"
|
|
166
169
|
|
|
167
170
|
- uses: actions/cache@v4
|
|
168
171
|
with:
|
|
@@ -190,9 +193,9 @@ jobs:
|
|
|
190
193
|
run: |
|
|
191
194
|
docker run --net=host --detach --rm \
|
|
192
195
|
-p 8888:8888 \
|
|
193
|
-
-v
|
|
196
|
+
-v "$(pwd)"/tests/functional.ini:/etc/functional.ini \
|
|
194
197
|
-e KINTO_INI=/etc/functional.ini \
|
|
195
|
-
${{ env.TEST_TAG }} && sleep 5
|
|
198
|
+
"${{ env.TEST_TAG }}" && sleep 5
|
|
196
199
|
|
|
197
200
|
- name: Functional Tests
|
|
198
201
|
run: |
|
|
@@ -17,6 +17,7 @@ Contributors
|
|
|
17
17
|
* Balthazar Rouberol <br@imap.cc>
|
|
18
18
|
* Boris Feld <lothiraldan@gmail.com>
|
|
19
19
|
* Brady Dufresne <dufresnebrady@gmail.com>
|
|
20
|
+
* Can Berk Güder <cbguder@mozilla.com>
|
|
20
21
|
* Castro
|
|
21
22
|
* Chirag B. Jadwani <chirag.jadwani@gmail.com>
|
|
22
23
|
* Christophe Gragnic <cgragnic@protonmail.com>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: kinto
|
|
3
|
-
Version: 19.
|
|
3
|
+
Version: 19.5.0
|
|
4
4
|
Summary: Kinto Web Service - Store, Sync, Share, and Self-Host.
|
|
5
5
|
Author-email: Mozilla Services <developers@kinto-storage.org>
|
|
6
6
|
License: Copyright 2012 - Mozilla Foundation
|
|
@@ -136,6 +136,7 @@ Contributors
|
|
|
136
136
|
* Balthazar Rouberol <br@imap.cc>
|
|
137
137
|
* Boris Feld <lothiraldan@gmail.com>
|
|
138
138
|
* Brady Dufresne <dufresnebrady@gmail.com>
|
|
139
|
+
* Can Berk Güder <cbguder@mozilla.com>
|
|
139
140
|
* Castro
|
|
140
141
|
* Chirag B. Jadwani <chirag.jadwani@gmail.com>
|
|
141
142
|
* Christophe Gragnic <cgragnic@protonmail.com>
|
|
@@ -81,7 +81,7 @@ markupsafe==2.1.4
|
|
|
81
81
|
# via werkzeug
|
|
82
82
|
msgpack==1.0.7
|
|
83
83
|
# via bravado-core
|
|
84
|
-
newrelic==10.
|
|
84
|
+
newrelic==10.6.0
|
|
85
85
|
# via -r constraints.in
|
|
86
86
|
packaging==23.2
|
|
87
87
|
# via
|
|
@@ -96,7 +96,7 @@ plaster==1.1.2
|
|
|
96
96
|
# pyramid
|
|
97
97
|
plaster-pastedeploy==1.0.1
|
|
98
98
|
# via pyramid
|
|
99
|
-
playwright==1.
|
|
99
|
+
playwright==1.50.0
|
|
100
100
|
# via -r constraints.in
|
|
101
101
|
pluggy==1.5.0
|
|
102
102
|
# via pytest
|
|
@@ -163,7 +163,7 @@ rpds-py==0.17.1
|
|
|
163
163
|
# via
|
|
164
164
|
# jsonschema
|
|
165
165
|
# referencing
|
|
166
|
-
ruff==0.9.
|
|
166
|
+
ruff==0.9.6
|
|
167
167
|
# via -r constraints.in
|
|
168
168
|
sentry-sdk==2.8.0
|
|
169
169
|
# via -r constraints.in
|
|
@@ -177,7 +177,7 @@ six==1.16.0
|
|
|
177
177
|
# rfc3339-validator
|
|
178
178
|
soupsieve==2.5
|
|
179
179
|
# via beautifulsoup4
|
|
180
|
-
sqlalchemy==2.0.
|
|
180
|
+
sqlalchemy==2.0.37
|
|
181
181
|
# via
|
|
182
182
|
# -r constraints.in
|
|
183
183
|
# sentry-sdk
|
|
@@ -140,14 +140,16 @@ def json_error_handler(request):
|
|
|
140
140
|
"""
|
|
141
141
|
errors = request.errors
|
|
142
142
|
sorted_errors = sorted(errors, key=lambda x: str(x["name"]))
|
|
143
|
+
for error in sorted_errors:
|
|
144
|
+
# Decode in place.
|
|
145
|
+
if isinstance(error["description"], bytes):
|
|
146
|
+
error["description"] = error["description"].decode("utf-8")
|
|
147
|
+
|
|
143
148
|
# In Cornice, we call error handler if at least one error was set.
|
|
144
149
|
error = sorted_errors[0]
|
|
145
150
|
name = error["name"]
|
|
146
151
|
description = error["description"]
|
|
147
152
|
|
|
148
|
-
if isinstance(description, bytes):
|
|
149
|
-
description = error["description"].decode("utf-8")
|
|
150
|
-
|
|
151
153
|
if name is not None:
|
|
152
154
|
if str(name) in description:
|
|
153
155
|
message = description
|
|
@@ -162,7 +164,7 @@ def json_error_handler(request):
|
|
|
162
164
|
errno=ERRORS.INVALID_PARAMETERS.value,
|
|
163
165
|
error="Invalid parameters",
|
|
164
166
|
message=message,
|
|
165
|
-
details=
|
|
167
|
+
details=sorted_errors,
|
|
166
168
|
)
|
|
167
169
|
response.status = errors.status
|
|
168
170
|
response = reapply_cors(request, response)
|
|
@@ -98,8 +98,9 @@ class Permission(PermissionBase):
|
|
|
98
98
|
candidates = []
|
|
99
99
|
if bound_permissions is None:
|
|
100
100
|
for key, value in self._store.items():
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
if key.startswith("permission:"):
|
|
102
|
+
_, object_id, permission = key.split(":", 2)
|
|
103
|
+
candidates.append((object_id, permission, value))
|
|
103
104
|
else:
|
|
104
105
|
for pattern, perm in bound_permissions:
|
|
105
106
|
id_match = ".*" if with_children else "[^/]+"
|
|
@@ -344,6 +344,12 @@ class PermissionTest:
|
|
|
344
344
|
)
|
|
345
345
|
self.assertEqual(sorted(per_object_ids.keys()), ["/url/a", "/url/a/id/1", "/url/a/id/2"])
|
|
346
346
|
|
|
347
|
+
def test_accessible_objects_with_user_principle(self):
|
|
348
|
+
self.permission.add_user_principal("user1", "group")
|
|
349
|
+
self.permission.add_principal_to_ace("id1", "write", "user1")
|
|
350
|
+
per_object_ids = self.permission.get_accessible_objects(["user1"])
|
|
351
|
+
self.assertEqual(sorted(per_object_ids.keys()), ["id1"])
|
|
352
|
+
|
|
347
353
|
#
|
|
348
354
|
# get_object_permissions()
|
|
349
355
|
#
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.5.1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.5.1
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
html,body{background:#fafbfc}h1{font-family:Ubuntu,Calibri,Arial,sans-serif;font-size:2.2em}.icon{vertical-align:-.125em;margin-bottom:-.0625em}.main{padding-top:2.8em}.sidebar{padding-top:1em}.sidebar .card{margin-bottom:20px}.card.panel-info .card-header{background-color:#cce5ff;border-color:#b8daff}.card-header span{margin-right:1em;max-width:26em;display:inline-block;height:1.5em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-header span label{font-weight:700}.card>.card-body{position:relative}.sidebar-filters>.card-body{padding:15px 15px 0}.sidebar-filters a.clear{color:#777}.list-group-item .glyphicon.glyphicon-lock{color:#888}.content .list-actions{margin-bottom:.4em}.content .list-actions a{margin-right:.5em}.content .list-actions a>.glyphicon{margin-right:.3em}.content .edit-coll-props .btn{margin-right:0;margin-left:.3em}.kinto-admin-title{display:inline-block;font-size:2em;margin-top:0;margin-bottom:0;padding-left:100px;background:transparent url(/v1/admin/assets/logo-VBRiKSPX.png) no-repeat left;background-size:contain}.user-info{float:right;padding-top:.3em;font-size:14px}.user-info a.spaced{margin-left:1em}.server-url input:invalid,.server-url input:focus:invalid{box-shadow:0 0 5px 1px red}.session-info-bar{position:fixed;top:0;left:0;right:0;background:#24292e;color:#fff;padding:.2em 1.15em;z-index:999}.session-info-bar>a{margin-left:.5em}.server-info-panel table{margin:0}.server-info-panel .table-condensed>tbody>tr>th,.server-info-panel .table-condensed>tbody>tr>td{padding:.3em;overflow:hidden;text-overflow:ellipsis;max-width:300px}.server-info-panel tr:first-child th,.server-info-panel tr:first-child td{border:none}.alert h4 small{margin-left:.5em}.list-page .alert{margin-top:1.5em;margin-right:.5em}.tabs-container .panel-default{border-top:none}.tabs-container .panel-danger{margin-top:2em}table.record-list{margin-top:1em}table.record-list th{background:#00000014}table.record-list tbody.loading td{background:#dcdcdc26;color:#777}table.record-list td:not(.actions){max-width:8vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:.8em .5em}table.record-list td.lastmod{white-space:nowrap;width:120px}table.record-list td.status{white-space:nowrap;width:80px}table.record-list td.actions{min-width:150px;width:150px;padding:.5em 0;white-space:nowrap;text-align:center}table.record-list td.actions .btn-group{margin:0 .5em}table.record-list>tbody+tbody{border-top:none}.load-more>a{display:block;width:100%}table.record-list td.load-more{padding:0;line-height:2.5em}.load-more>a:hover,.load-more>a:active{background:#d9edf7;text-decoration:none}.card-body>.spinner{position:absolute;left:0;right:0;top:0;bottom:0;background-color:#0003;z-index:1;display:flex;justify-content:center;align-items:center;width:auto;margin:0;border-radius:3px}.load-more .spinner{margin-top:.25em}.history-row-details{display:table-row}.table>tbody>tr.history-row-details>td{padding:0;margin:0}.history-row-details td pre{border:none;margin:0}.history-row-details .alert{margin:0;border-radius:0}.sort-link{float:right;margin-top:.1em;color:#444}.sort-link.active{color:#fff}.json-record>div{padding:1px 0 1px 4px}.json-record>div.added{background:#cbeecb;color:green}.json-record>div.removed{background:#f0c9c9;color:red}.json-record-simple-review{white-space:pre-wrap}.card-header>.icon,.list-group-item .icon,.nav-tabs li .icon{margin-right:.5em}.nav-tabs.nav-justified>li>a{color:#333}.collections-menu-entry{display:flex}.collections-menu-entry a:first-child{display:inline-block;width:95%;color:#555;text-decoration:none}.collections-menu-entry.active>a{color:#fff}.home-menu i,.home-menu .icon{float:right;margin:.15em -.5em 0 0}.bucket-menu-entry-edit{float:right;color:#555;text-decoration:none}.bucket-menu-entry-edit:hover{color:inherit}.collections-menu-entry-edit{position:absolute;margin-right:-.5em;color:#888}.collections-menu-entry-edit:hover{color:inherit}.CodeMirror{border:1px solid #ccc;height:auto;border-radius:.3em}.attachment-icon{width:16px}.attachment-action{margin:0;padding:0}.attachment-info .attachment-attributes{display:flex;align-content:stretch;align-items:end}.attachment-info table{margin-bottom:0;flex-grow:1;display:block}.attachment-info .table-condensed>tbody>tr>td{overflow:hidden;text-overflow:ellipsis}.attachment-img{display:flex;align-items:center;justify-content:center;max-width:150px;max-height:150px;text-align:center;background:#fff;border:1px solid #ddd;margin:10px}.attachment-img img{max-width:100%;max-height:100%}form button[type=submit].btn-primary{font-size:1.2em;padding:12px;box-shadow:inset 0 0 0 1px #fff}.record-form-buttons .delete{margin-top:12px}.permissions-form .array-item:not(:last-child) fieldset{border-bottom:1px solid #eee}.permissions-form .field-principal{float:left;width:60%;padding-right:1em}.permissions-form .field-permissions{float:left;width:30%;padding-left:1em}.permissions-form .field-anonymous,.permissions-form .field-authenticated{width:100%;float:left;clear:both}.permissions-form .field-anonymous{border-bottom:1px solid #eee}.permissions-form .field-anonymous p,.permissions-form .field-authenticated p{width:50%}.permissions-form .field-anonymous .checkboxes,.permissions-form .field-authenticated .checkboxes{float:right;width:50%;padding-left:1em;margin-top:-60px}.permissions-form .field-groups fieldset{clear:left}.permissions-form .field-groups .checkboxes{float:right;width:50%;padding-left:1em;margin-top:-60px}.permissions-form .field-groups fieldset>.field.field-array{clear:right}.permissions-form .field-principals .checkboxes{margin-top:-35px}.permissions-form .field-principal>label{display:none}.spinner{margin:30px auto 0;width:70px;text-align:center}.spinner>div{width:18px;height:18px;background-color:#337ab7;border-radius:100%;display:inline-block;-webkit-animation:sk-bouncedelay 1.4s infinite ease-in-out both;animation:sk-bouncedelay 1.4s infinite ease-in-out both}.spinner .bounce1{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner .bounce2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes sk-bouncedelay{0%,80%,to{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes sk-bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.notifications>div{top:3em}i.fa{position:relative;top:1px;display:inline-block;font-style:normal;font-weight:400;line-height:1}i.fa:before{display:inline-block;content:"";background-repeat:no-repeat;background-size:24px 24px;width:24px;height:24px}.fa.fa-check:before{background-image:url(~bootstrap-icons/icons/check.svg)}.fa-exclamation-circle:before{background-image:url(~bootstrap-icons/icons/exclamation-circle-fill.svg)}.fa-info:before{background-image:url(~bootstrap-icons/icons/info-circle-fill.svg)}.fa-warning:before{background-image:url(~bootstrap-icons/icons/exclamation-triangle-fill.svg)}.rjsf{margin-bottom:1.25rem}.rjsf pre{padding:9.5px;margin:0 0 10px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.rjsf input[type=radio],.rjsf input[type=checkbox]{margin-right:10px}.rjsf .form-label{font-weight:700}.rjsf h5{font-size:18pt;margin:0 0 0 1pt}.rjsf hr{margin:1px 0 .5em;background-color:#ccc!important}.rjsf .row .align-items-center{align-items:flex-start!important;border-bottom:1px solid #eee}.rjsf .align-items-center button.btn{font-size:14pt}.rjsf .input-group-append button.dropdown-toggle{font-size:12pt}.formWrapper{position:relative}.formWrapper>.spinner{position:absolute;left:-1.25em;right:-1.25em;top:-1.5em;bottom:-2.5em;background-color:#0003;z-index:1;display:flex;justify-content:center;align-items:center;width:auto;margin:0;border-radius:3px}.interactive>.spinner{position:absolute;left:-1.25em;right:-1.25em;top:-.5em;bottom:0;background-color:#0003;z-index:1;display:flex;justify-content:center;align-items:center;width:auto;margin:0;border-radius:3px}.modal{background-color:#0000004d}.modal-dialog>.spinner{position:absolute;left:0;right:0;top:0;bottom:0;background-color:#0003;z-index:1;display:flex;justify-content:center;align-items:center;width:auto;margin:0;border-radius:3px}.informative{filter:grayscale(.8)}.interactive{position:relative}.bs-wizard{margin-top:40px}.progress-steps .row.bs-wizard{border-bottom:0}.bs-wizard{border-bottom:solid 1px #e0e0e0;padding:0 0 10px}.bs-wizard>.bs-wizard-step{padding:0;position:relative}.bs-wizard>.bs-wizard-step .bs-wizard-stepnum{color:#595959;font-size:16px;margin-bottom:5px}.bs-wizard>.bs-wizard-step .bs-wizard-info{color:#999;font-size:14px}.bs-wizard>.bs-wizard-step>.bs-wizard-dot{position:absolute;width:30px;height:30px;display:block;background:#fbe8aa;top:45px;left:50%;margin-top:-15px;margin-left:-15px;border-radius:50%}.bs-wizard>.bs-wizard-step>.bs-wizard-dot:after{content:" ";width:14px;height:14px;background:#fbbd19;border-radius:50px;position:absolute;top:8px;left:8px}.bs-wizard>.bs-wizard-step>.progress{position:relative;border-radius:0;height:8px;box-shadow:none;margin:20px 0}.bs-wizard>.bs-wizard-step>.progress>.progress-bar{width:0px;box-shadow:none;background:#fbe8aa}.bs-wizard>.bs-wizard-step.complete>.progress>.progress-bar{width:100%}.bs-wizard>.bs-wizard-step.active>.progress>.progress-bar{width:50%}.bs-wizard>.bs-wizard-step:first-child.active>.progress>.progress-bar{width:0%}.bs-wizard>.bs-wizard-step:last-child.active>.progress>.progress-bar{width:100%}.bs-wizard>.bs-wizard-step.disabled>.bs-wizard-dot{background-color:#f5f5f5}.bs-wizard>.bs-wizard-step.disabled>.bs-wizard-dot:after{opacity:0}.bs-wizard>.bs-wizard-step:first-child>.progress{left:50%;width:50%}.bs-wizard>.bs-wizard-step:last-child>.progress{width:50%}.bs-wizard>.bs-wizard-step.disabled a.bs-wizard-dot{pointer-events:none}.bs-wizard>.bs-wizard-step .bs-wizard-info li{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:250px;text-align:left}.diffstats{font-weight:600}.diffstats .text-green{color:#55a532}.diffstats .text-red{color:#bd2c00;padding-left:4px;padding-right:4px}.signoff-comment{display:block;overflow:auto;max-height:4em;white-space:pre-line}.rollback-changes{position:absolute;top:152px;right:30px}.breadcrumbs{padding-top:.5em;font-size:1.2em;text-transform:lowercase}/*!
|
|
1
|
+
html,body{background:#fafbfc}h1{font-family:Ubuntu,Calibri,Arial,sans-serif;font-size:2.2em}.icon{vertical-align:-.125em;margin-bottom:-.0625em}.main{padding-top:2.8em}.sidebar{padding-top:1em}.sidebar .card{margin-bottom:20px}.card.panel-info .card-header{background-color:#cce5ff;border-color:#b8daff}.card-header span{margin-right:1em;max-width:26em;display:inline-block;height:1.5em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-header span label{font-weight:700}.card>.card-body{position:relative}.sidebar-filters>.card-body{padding:15px 15px 0}.sidebar-filters a.clear{color:#777}.list-group-item .glyphicon.glyphicon-lock{color:#888}.content .list-actions{margin-bottom:.4em}.content .list-actions a{margin-right:.5em}.content .list-actions a>.glyphicon{margin-right:.3em}.content .edit-coll-props .btn{margin-right:0;margin-left:.3em}.kinto-admin-title{display:inline-block;font-size:2em;margin-top:0;margin-bottom:0;padding-left:100px;background:transparent url(/v1/admin/assets/logo-VBRiKSPX.png) no-repeat left;background-size:contain}.user-info{float:right;padding-top:.3em;font-size:14px}.user-info a.spaced{margin-left:1em}.server-url input:invalid,.server-url input:focus:invalid{box-shadow:0 0 5px 1px red}.session-info-bar{position:fixed;top:0;left:0;right:0;background:#24292e;color:#fff;padding:.2em 1.15em;z-index:999}.session-info-bar>a{margin-left:.5em}.server-info-panel table{margin:0}.server-info-panel .table-condensed>tbody>tr>th,.server-info-panel .table-condensed>tbody>tr>td{padding:.3em;overflow:hidden;text-overflow:ellipsis;max-width:300px}.server-info-panel tr:first-child th,.server-info-panel tr:first-child td{border:none}.alert h4 small{margin-left:.5em}.list-page .alert{margin-top:1.5em;margin-right:.5em}.tabs-container .panel-default{border-top:none}.tabs-container .panel-danger{margin-top:2em}table.record-list{margin-top:1em}table.record-list th{background:#00000014}table.record-list tbody.loading td{background:#dcdcdc26;color:#777}table.record-list td:not(.actions){max-width:8vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:.8em .5em}table.record-list td.lastmod{white-space:nowrap;width:120px}table.record-list td.status{white-space:nowrap;width:80px}table.record-list td.actions{min-width:150px;width:150px;padding:.5em 0;white-space:nowrap;text-align:center}table.record-list td.actions .btn-group{margin:0 .5em}table.record-list>tbody+tbody{border-top:none}.load-more>a{display:block;width:100%}table.record-list td.load-more{padding:0;line-height:2.5em}.load-more>a:hover,.load-more>a:active{background:#d9edf7;text-decoration:none}.card-body>.spinner{position:absolute;left:0;right:0;top:0;bottom:0;background-color:#0003;z-index:1;display:flex;justify-content:center;align-items:center;width:auto;margin:0;border-radius:3px}.load-more .spinner{margin-top:.25em}.history-row-details{display:table-row}.table>tbody>tr.history-row-details>td{padding:0;margin:0}.history-row-details td pre{border:none;margin:0}.history-row-details .alert{margin:0;border-radius:0}.sort-link{float:right;margin-top:.1em;color:#444}.sort-link.active{color:#fff}.json-record>div{padding:1px 0 1px 4px}.json-record>div.added{background:#cbeecb;color:green}.json-record>div.removed{background:#f0c9c9;color:red}.json-record-simple-review{white-space:pre-wrap}.card-header>.icon,.list-group-item .icon,.nav-tabs li .icon{margin-right:.5em}.nav-tabs.nav-justified>li>a{color:#333}.collections-menu-entry{display:flex}.collections-menu-entry a:first-child{display:inline-block;width:95%;color:#555;text-decoration:none}.collections-menu-entry.active>a{color:#fff}.home-menu i,.home-menu .icon{float:right;margin:.15em -.5em 0 0}.bucket-menu-entry-edit{float:right;color:#555;text-decoration:none}.bucket-menu-entry-edit:hover{color:inherit}.collections-menu-entry-edit{position:absolute;margin-right:-.5em;color:#888}.collections-menu-entry-edit:hover{color:inherit}.CodeMirror{border:1px solid #ccc;height:auto;border-radius:.3em}.attachment-icon{width:16px}.attachment-action{margin:0;padding:0}.attachment-info .attachment-attributes{display:flex;align-content:stretch;align-items:end}.attachment-info table{margin-bottom:0;flex-grow:1;display:block}.attachment-info .table-condensed>tbody>tr>td{overflow:hidden;text-overflow:ellipsis}.attachment-img{display:flex;align-items:center;justify-content:center;max-width:150px;max-height:150px;text-align:center;background:#fff;border:1px solid #ddd;margin:10px}.attachment-img img{max-width:100%;max-height:100%}form button[type=submit].btn-primary{font-size:1.2em;padding:12px;box-shadow:inset 0 0 0 1px #fff}.record-form-buttons .delete{margin-top:12px}.permissions-form .array-item:not(:last-child) fieldset{border-bottom:1px solid #eee}.permissions-form .field-principal{float:left;width:60%;padding-right:1em}.permissions-form .field-permissions{float:left;width:30%;padding-left:1em}.permissions-form .field-anonymous,.permissions-form .field-authenticated{width:100%;float:left;clear:both}.permissions-form .field-anonymous{border-bottom:1px solid #eee}.permissions-form .field-anonymous p,.permissions-form .field-authenticated p{width:50%}.permissions-form .field-anonymous .checkboxes,.permissions-form .field-authenticated .checkboxes{float:right;width:50%;padding-left:1em;margin-top:-60px}.permissions-form .field-groups fieldset{clear:left}.permissions-form .field-groups .checkboxes{float:right;width:50%;padding-left:1em;margin-top:-60px}.permissions-form .field-groups fieldset>.field.field-array{clear:right}.permissions-form .field-principals .checkboxes{margin-top:-35px}.permissions-form .field-principal>label{display:none}.quickFilter{margin-bottom:-.5em}.spinner{margin:30px auto 0;width:70px;text-align:center}.spinner>div{width:18px;height:18px;background-color:#337ab7;border-radius:100%;display:inline-block;-webkit-animation:sk-bouncedelay 1.4s infinite ease-in-out both;animation:sk-bouncedelay 1.4s infinite ease-in-out both}.spinner .bounce1{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner .bounce2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes sk-bouncedelay{0%,80%,to{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes sk-bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.notifications>div{top:3em}i.fa{position:relative;top:1px;display:inline-block;font-style:normal;font-weight:400;line-height:1}i.fa:before{display:inline-block;content:"";background-repeat:no-repeat;background-size:24px 24px;width:24px;height:24px}.fa.fa-check:before{background-image:url(~bootstrap-icons/icons/check.svg)}.fa-exclamation-circle:before{background-image:url(~bootstrap-icons/icons/exclamation-circle-fill.svg)}.fa-info:before{background-image:url(~bootstrap-icons/icons/info-circle-fill.svg)}.fa-warning:before{background-image:url(~bootstrap-icons/icons/exclamation-triangle-fill.svg)}.rjsf{margin-bottom:1.25rem}.rjsf pre{padding:9.5px;margin:0 0 10px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.rjsf input[type=radio],.rjsf input[type=checkbox]{margin-right:10px}.rjsf .form-label{font-weight:700}.rjsf h5{font-size:18pt;margin:0 0 0 1pt}.rjsf hr{margin:1px 0 .5em;background-color:#ccc!important}.rjsf .row .align-items-center{align-items:flex-start!important;border-bottom:1px solid #eee}.rjsf .align-items-center button.btn{font-size:14pt}.rjsf .input-group-append button.dropdown-toggle{font-size:12pt}.formWrapper{position:relative}.formWrapper>.spinner{position:absolute;left:-1.25em;right:-1.25em;top:-1.5em;bottom:-2.5em;background-color:#0003;z-index:1;display:flex;justify-content:center;align-items:center;width:auto;margin:0;border-radius:3px}.interactive>.spinner{position:absolute;left:-1.25em;right:-1.25em;top:-.5em;bottom:0;background-color:#0003;z-index:1;display:flex;justify-content:center;align-items:center;width:auto;margin:0;border-radius:3px}.modal{background-color:#0000004d}.modal-dialog>.spinner{position:absolute;left:0;right:0;top:0;bottom:0;background-color:#0003;z-index:1;display:flex;justify-content:center;align-items:center;width:auto;margin:0;border-radius:3px}.informative{filter:grayscale(.8)}.interactive{position:relative}.bs-wizard{margin-top:40px}.progress-steps .row.bs-wizard{border-bottom:0}.bs-wizard{border-bottom:solid 1px #e0e0e0;padding:0 0 10px}.bs-wizard>.bs-wizard-step{padding:0;position:relative}.bs-wizard>.bs-wizard-step .bs-wizard-stepnum{color:#595959;font-size:16px;margin-bottom:5px}.bs-wizard>.bs-wizard-step .bs-wizard-info{color:#999;font-size:14px}.bs-wizard>.bs-wizard-step>.bs-wizard-dot{position:absolute;width:30px;height:30px;display:block;background:#fbe8aa;top:45px;left:50%;margin-top:-15px;margin-left:-15px;border-radius:50%}.bs-wizard>.bs-wizard-step>.bs-wizard-dot:after{content:" ";width:14px;height:14px;background:#fbbd19;border-radius:50px;position:absolute;top:8px;left:8px}.bs-wizard>.bs-wizard-step>.progress{position:relative;border-radius:0;height:8px;box-shadow:none;margin:20px 0}.bs-wizard>.bs-wizard-step>.progress>.progress-bar{width:0px;box-shadow:none;background:#fbe8aa}.bs-wizard>.bs-wizard-step.complete>.progress>.progress-bar{width:100%}.bs-wizard>.bs-wizard-step.active>.progress>.progress-bar{width:50%}.bs-wizard>.bs-wizard-step:first-child.active>.progress>.progress-bar{width:0%}.bs-wizard>.bs-wizard-step:last-child.active>.progress>.progress-bar{width:100%}.bs-wizard>.bs-wizard-step.disabled>.bs-wizard-dot{background-color:#f5f5f5}.bs-wizard>.bs-wizard-step.disabled>.bs-wizard-dot:after{opacity:0}.bs-wizard>.bs-wizard-step:first-child>.progress{left:50%;width:50%}.bs-wizard>.bs-wizard-step:last-child>.progress{width:50%}.bs-wizard>.bs-wizard-step.disabled a.bs-wizard-dot{pointer-events:none}.bs-wizard>.bs-wizard-step .bs-wizard-info li{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:250px;text-align:left}.diffstats{font-weight:600}.diffstats .text-green{color:#55a532}.diffstats .text-red{color:#bd2c00;padding-left:4px;padding-right:4px}.signoff-comment{display:block;overflow:auto;max-height:4em;white-space:pre-line}.rollback-changes{position:absolute;top:152px;right:30px}.breadcrumbs{padding-top:.5em;font-size:1.2em;text-transform:lowercase}/*!
|
|
2
2
|
* Bootstrap v4.6.2 (https://getbootstrap.com/)
|
|
3
3
|
* Copyright 2011-2022 The Bootstrap Authors
|
|
4
4
|
* Copyright 2011-2022 Twitter, Inc.
|