pulpcore 3.22.28__tar.gz → 3.22.30__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.
- {pulpcore-3.22.28 → pulpcore-3.22.30}/CHANGES.md +32 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/PKG-INFO +1 -1
- {pulpcore-3.22.28 → pulpcore-3.22.30}/functest_requirements.txt +0 -2
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/apps.py +1 -1
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/task.py +6 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/templatetags/pulp_urls.py +7 -4
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/task.py +13 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tasking/pulpcore_worker.py +18 -1
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_tasking.py +39 -0
- pulpcore-3.22.30/pulpcore/tests/unit/test_pulp_urls.py +55 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore.egg-info/PKG-INFO +1 -1
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore.egg-info/SOURCES.txt +1 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore.egg-info/requires.txt +2 -2
- {pulpcore-3.22.28 → pulpcore-3.22.30}/requirements.txt +2 -2
- {pulpcore-3.22.28 → pulpcore-3.22.30}/setup.py +1 -1
- {pulpcore-3.22.28 → pulpcore-3.22.30}/CODE_OF_CONDUCT.md +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/COMMITMENT +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/CONTRIBUTING.md +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/COPYRIGHT +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/LICENSE +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/MANIFEST.in +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/README.md +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/bin/pulp-content +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/ci_requirements.txt +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/manage.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/access_policy.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/authentication.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/checks.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/files.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/global_access_conditions.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/importexport.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/loggers.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/manage.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/add-signing-service.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/analyze-publication.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/datarepair-labels.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/dump-permissions.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/handle-artifact-checksums.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/openapi.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/remove-plugin.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/stage-profile-summary.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0001_initial.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0003_remove_upload_completed.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0005_progressreport_code.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0010_pulp_fields.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0011_relative_path.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0013_repository_pulp_type.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0017_remove_task_parent.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0019_add_signing_service_model.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0022_rename_last_version.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0023_change_exporter_models.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0025_task_parent_task.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0026_task_group.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0027_export_backend.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0029_export_delete.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0031_import_export_validate_params.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0032_export_to_chunks.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0034_groupprogressreport.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0035_content_upstream_id.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0036_unprotect_last_export.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0038_repository_remote.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0039_change_download_concurrency.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0041_accesspolicy.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0043_toc_attribute.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0046_task__resource_job_id.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0048_fips_checksums.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0050_namespace_access_policies.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0051_timeoutfields.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0053_remote_headers.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0054_add_public_key.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0055_label.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0056_remote_rate_limit.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0057_add_label_indexes.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0059_proxy_creds.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0063_repository_retained_versions.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0064_repository_user_hidden.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0069_update_json_fields.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0070_rename_retained_versions.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0074_acs.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0075_rbaccontentguard.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0080_proxy_group_model.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0083_alter_group_options.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0086_task_json_fields.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0087_taskschedule.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0090_char_to_text_field.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0091_systemid.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/mime_types.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/modelresource.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/access_policy.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/acs.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/analytics.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/base.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/content.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/exporter.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/fields.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/generic.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/importer.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/progress.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/publication.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/repository.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/role.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/status.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/storage.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/models/upload.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/monkeypatch.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/protobuf/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/pulp_hashlib.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/redis_connection.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/response.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/role_util.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/access_policy.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/acs.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/base.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/content.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/exporter.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/fields.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/importer.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/orphans.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/progress.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/publication.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/purge.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/reclaim.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/repair.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/repository.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/status.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/task.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/upload.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/serializers/user.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/settings.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/tasks/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/tasks/analytics.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/tasks/base.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/tasks/export.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/tasks/importer.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/tasks/orphan.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/tasks/purge.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/tasks/reclaim_space.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/tasks/repository.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/tasks/test.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/tasks/upload.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/templates/rest_framework/api.html +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/templatetags/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/urls.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/util.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/views/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/views/importer.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/views/orphans.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/views/repair.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/views/status.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/access_policy.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/acs.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/base.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/content.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/custom_filters.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/exporter.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/importer.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/orphans.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/publication.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/reclaim.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/repository.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/upload.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/viewsets/user.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/wsgi.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/backends.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/cache/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/cache/cache.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/constants.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/content/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/content/authentication.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/content/handler.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/download/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/download/base.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/download/factory.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/download/file.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/download/http.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/exceptions/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/exceptions/base.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/exceptions/plugin.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/exceptions/validation.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/filters.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/openapi/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/access_policy.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/actions.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/apps.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/authentication/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/cache/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/constants.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/content.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/download/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/exceptions.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/files.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/importexport.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/modelresources.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/models/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/models/role.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/publication_utils.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/pulp_hashlib.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/repo_version_utils.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/responses.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/serializers/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/serializers/content.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/stages/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/stages/api.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/stages/artifact_stages.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/stages/content_stages.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/stages/declarative_version.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/stages/models.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/stages/profiler.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/storage.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/sync.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/tasking.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/util.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/viewsets/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/plugin/viewsets/content.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/responses.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tasking/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tasking/constants.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tasking/entrypoint.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tasking/storage.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tasking/tasks.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tasking/util.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_auth.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_role.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_scoping.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_status.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_upload.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_workers.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/content_with_coverage.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/gpg_ascii_armor_signing_service.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/functional/utils.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/content/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/content/test_handler.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/download/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/download/test_download_base.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/download/test_factory.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/migrations/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/migrations/test_0077_move_remote_url_credentials.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/models/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/models/test_content.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/models/test_remote.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/models/test_repository.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/roles/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/roles/test_roles.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/serializers/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/serializers/test_base.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/stages/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/stages/test_stages.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/test_cache.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/test_content_guard.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/test_files.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/test_import_checks.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/test_settings.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/test_util.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/tests/unit/viewsets/test_base.py +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore.egg-info/dependency_links.txt +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore.egg-info/entry_points.txt +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore.egg-info/top_level.txt +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/pyproject.toml +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/setup.cfg +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/test_requirements.txt +0 -0
- {pulpcore-3.22.28 → pulpcore-3.22.30}/unittest_requirements.txt +0 -0
|
@@ -8,6 +8,38 @@
|
|
|
8
8
|
|
|
9
9
|
[//]: # (towncrier release notes start)
|
|
10
10
|
|
|
11
|
+
# ## 3.22.30 (2024-08-10) {: #3.22.30 }
|
|
12
|
+
|
|
13
|
+
### REST API {: #3.22.30-rest-api }
|
|
14
|
+
|
|
15
|
+
#### Bugfixes {: #3.22.30-rest-api-bugfix }
|
|
16
|
+
|
|
17
|
+
- Fixed RBAC permissions being incorrectly assigned in tasks that create objects.
|
|
18
|
+
https://access.redhat.com/security/cve/cve-2024-7143
|
|
19
|
+
[#5683](https://github.com/pulp/pulpcore/issues/5683)
|
|
20
|
+
|
|
21
|
+
### Plugin API {: #3.22.30-plugin-api }
|
|
22
|
+
|
|
23
|
+
No significant changes.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 3.22.29 (2024-07-16) {: #3.22.29 }
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### REST API {: #3.22.29-rest-api }
|
|
31
|
+
|
|
32
|
+
#### Bugfixes {: #3.22.29-rest-api-bugfix }
|
|
33
|
+
|
|
34
|
+
- Browsable HREFs now have clickable links again.
|
|
35
|
+
[#5563](https://github.com/pulp/pulpcore/issues/5563)
|
|
36
|
+
|
|
37
|
+
### Plugin API {: #3.22.29-plugin-api }
|
|
38
|
+
|
|
39
|
+
No significant changes.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
11
43
|
## 3.22.28 (2024-06-24) {: #3.22.28 }
|
|
12
44
|
|
|
13
45
|
|
|
@@ -14,6 +14,7 @@ from django.contrib.postgres.fields import ArrayField
|
|
|
14
14
|
from django.core.serializers.json import DjangoJSONEncoder
|
|
15
15
|
from django.db import connection, models
|
|
16
16
|
from django.utils import timezone
|
|
17
|
+
from django_lifecycle import hook, AFTER_CREATE
|
|
17
18
|
|
|
18
19
|
from pulpcore.app.models import (
|
|
19
20
|
AutoAddObjPermsMixin,
|
|
@@ -231,6 +232,11 @@ class Task(BaseModel, AutoAddObjPermsMixin):
|
|
|
231
232
|
task = Task.objects.get(pk=task_id)
|
|
232
233
|
return task
|
|
233
234
|
|
|
235
|
+
@hook(AFTER_CREATE)
|
|
236
|
+
def add_role_dispatcher(self):
|
|
237
|
+
"""Set the "core.task_user_dispatcher" role for the current user after creation."""
|
|
238
|
+
self.add_roles_for_object_creator("core.task_user_dispatcher")
|
|
239
|
+
|
|
234
240
|
def set_running(self):
|
|
235
241
|
"""
|
|
236
242
|
Set this Task to the running state, save it, and log output in warning cases.
|
|
@@ -3,7 +3,7 @@ import re
|
|
|
3
3
|
from django import template
|
|
4
4
|
from django.conf import settings
|
|
5
5
|
from django.utils.encoding import force_text
|
|
6
|
-
from django.utils.html import escape
|
|
6
|
+
from django.utils.html import escape, smart_urlquote
|
|
7
7
|
from django.utils.safestring import SafeData, mark_safe
|
|
8
8
|
|
|
9
9
|
register = template.Library()
|
|
@@ -20,6 +20,8 @@ WRAPPING_PUNCTUATION = [
|
|
|
20
20
|
(""", """),
|
|
21
21
|
]
|
|
22
22
|
word_split_re = re.compile(r"(\s+)")
|
|
23
|
+
api_root_prefix = r"^" + settings.V3_API_ROOT.replace("/", r"\/")
|
|
24
|
+
href_re = re.compile(api_root_prefix, re.IGNORECASE)
|
|
23
25
|
|
|
24
26
|
|
|
25
27
|
@register.filter(needs_autoescape=True)
|
|
@@ -57,6 +59,9 @@ def urlize_quoted_hrefs(text, trim_url_limit=None, nofollow=True, autoescape=Tru
|
|
|
57
59
|
url = None
|
|
58
60
|
nofollow_attr = ' rel="nofollow"' if nofollow else ""
|
|
59
61
|
|
|
62
|
+
if href_re.match(middle):
|
|
63
|
+
url = smart_urlquote(middle)
|
|
64
|
+
|
|
60
65
|
# Check if it's a real URL
|
|
61
66
|
if url and ("{" in url or "%7B" in url):
|
|
62
67
|
url = None
|
|
@@ -74,8 +79,6 @@ def urlize_quoted_hrefs(text, trim_url_limit=None, nofollow=True, autoescape=Tru
|
|
|
74
79
|
words[i] = mark_safe(word)
|
|
75
80
|
elif autoescape:
|
|
76
81
|
words[i] = escape(word)
|
|
77
|
-
|
|
78
|
-
words[i] = mark_safe(word)
|
|
79
|
-
elif autoescape:
|
|
82
|
+
else:
|
|
80
83
|
words[i] = escape(word)
|
|
81
84
|
return "".join(words)
|
|
@@ -133,8 +133,21 @@ class TaskViewSet(
|
|
|
133
133
|
],
|
|
134
134
|
},
|
|
135
135
|
"core.task_viewer": ["core.view_task"],
|
|
136
|
+
# This is a special role to designate the user who dispatched the task, it is assigned to
|
|
137
|
+
# the user on the object-level at task creation. It is not meant to be edited or manually
|
|
138
|
+
# added/removed from users.
|
|
139
|
+
"core.task_user_dispatcher": ["core.add_task"],
|
|
136
140
|
}
|
|
137
141
|
|
|
142
|
+
def get_queryset(self):
|
|
143
|
+
qs = super().get_queryset()
|
|
144
|
+
if self.action in ("add_role", "remove_role"):
|
|
145
|
+
if "core.task_user_dispatcher" == self.request.data.get("role"):
|
|
146
|
+
raise ValidationError(
|
|
147
|
+
_("core.task_user_dispatcher can not be added/removed from a task.")
|
|
148
|
+
)
|
|
149
|
+
return qs
|
|
150
|
+
|
|
138
151
|
@extend_schema(
|
|
139
152
|
description="This operation cancels a task.",
|
|
140
153
|
summary="Cancel a task",
|
|
@@ -442,7 +442,24 @@ def _perform_task(task_pk, task_working_dir_rel_path):
|
|
|
442
442
|
task.set_running()
|
|
443
443
|
# Store the task id in the environment for `Task.current()`.
|
|
444
444
|
os.environ["PULP_TASK_ID"] = str(task.pk)
|
|
445
|
-
|
|
445
|
+
# These queries were specifically constructed and ordered this way to ensure we have the highest
|
|
446
|
+
# chance of getting the user who dispatched the task since we don't have a user relation on the
|
|
447
|
+
# task model. The second query acts as a fallback to provide ZDU support. Future changes will
|
|
448
|
+
# require to keep these around till a breaking change release is planned (3.70 the earliest).
|
|
449
|
+
user = (
|
|
450
|
+
get_users_with_perms(
|
|
451
|
+
task,
|
|
452
|
+
only_with_perms_in=["core.add_task"],
|
|
453
|
+
with_group_users=False,
|
|
454
|
+
include_model_permissions=False,
|
|
455
|
+
).first()
|
|
456
|
+
or get_users_with_perms(
|
|
457
|
+
task,
|
|
458
|
+
only_with_perms_in=["core.manage_roles_task"],
|
|
459
|
+
with_group_users=False,
|
|
460
|
+
include_model_permissions=False,
|
|
461
|
+
).first()
|
|
462
|
+
)
|
|
446
463
|
_set_current_user(user)
|
|
447
464
|
set_guid(task.logging_cid)
|
|
448
465
|
|
|
@@ -17,10 +17,16 @@ from pulpcore.tests.functional.utils import download_file
|
|
|
17
17
|
def dispatch_task(pulpcore_client):
|
|
18
18
|
def _dispatch_task(*args, **kwargs):
|
|
19
19
|
cid = pulpcore_client.default_headers.get("Correlation-ID") or str(uuid4())
|
|
20
|
+
username = pulpcore_client.configuration.username
|
|
20
21
|
commands = (
|
|
21
22
|
"from django_guid import set_guid; "
|
|
22
23
|
"from pulpcore.tasking.tasks import dispatch; "
|
|
23
24
|
"from pulpcore.app.util import get_url; "
|
|
25
|
+
"from django.contrib.auth import get_user_model; "
|
|
26
|
+
"from django_currentuser.middleware import _set_current_user; "
|
|
27
|
+
"User = get_user_model(); "
|
|
28
|
+
f"user = User.objects.filter(username='{username}').first(); "
|
|
29
|
+
"_set_current_user(user); "
|
|
24
30
|
f"set_guid({cid!r}); "
|
|
25
31
|
f"task = dispatch(*{args!r}, **{kwargs!r}); "
|
|
26
32
|
"print(get_url(task))"
|
|
@@ -296,3 +302,36 @@ def test_cancel_gooey_task(tasks_api_client, dispatch_task, monitor_task):
|
|
|
296
302
|
task = tasks_api_client.read(task_href)
|
|
297
303
|
|
|
298
304
|
assert task.state == "canceled"
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
@pytest.mark.parallel
|
|
308
|
+
def test_correct_task_ownership(dispatch_task, users_roles_api_client, gen_user):
|
|
309
|
+
"""Test that tasks get the correct ownership when dispatched."""
|
|
310
|
+
alice = gen_user(model_roles=["core.task_viewer"])
|
|
311
|
+
bob = gen_user(model_roles=["file.filerepository_creator"])
|
|
312
|
+
|
|
313
|
+
with alice:
|
|
314
|
+
atask_href = dispatch_task("pulpcore.app.tasks.test.sleep", args=(0,))
|
|
315
|
+
aroles = users_roles_api_client.list(alice.user.pulp_href)
|
|
316
|
+
assert aroles.count == 3
|
|
317
|
+
roles = {r.role: r.content_object for r in aroles.results}
|
|
318
|
+
correct_roles = {
|
|
319
|
+
"core.task_owner": atask_href,
|
|
320
|
+
"core.task_user_dispatcher": atask_href,
|
|
321
|
+
"core.task_viewer": None,
|
|
322
|
+
}
|
|
323
|
+
assert roles == correct_roles
|
|
324
|
+
|
|
325
|
+
with bob:
|
|
326
|
+
btask_href = dispatch_task("pulpcore.app.tasks.test.sleep", args=(0,))
|
|
327
|
+
aroles = users_roles_api_client.list(alice.user.pulp_href)
|
|
328
|
+
assert aroles.count == 3
|
|
329
|
+
broles = users_roles_api_client.list(bob.user.pulp_href)
|
|
330
|
+
assert broles.count == 3
|
|
331
|
+
roles = {r.role: r.content_object for r in broles.results}
|
|
332
|
+
correct_roles = {
|
|
333
|
+
"core.task_owner": btask_href,
|
|
334
|
+
"core.task_user_dispatcher": btask_href,
|
|
335
|
+
"file.filerepository_creator": None,
|
|
336
|
+
}
|
|
337
|
+
assert roles == correct_roles
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
from django.conf import settings
|
|
2
|
+
|
|
3
|
+
from pulpcore.app.templatetags import pulp_urls
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def test_urlize_quoted_hrefs_basic_url():
|
|
7
|
+
"""
|
|
8
|
+
text starts with API_ROOT, defaults. Should be made clickable
|
|
9
|
+
"""
|
|
10
|
+
txt = settings.V3_API_ROOT + "foo/bar/"
|
|
11
|
+
ret = pulp_urls.urlize_quoted_hrefs(txt)
|
|
12
|
+
assert ret == f'<a href="{txt}" rel="nofollow">{txt}</a>'
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def test_urlize_quoted_hrefs_nofollow():
|
|
16
|
+
"""
|
|
17
|
+
text starts with API_ROOT, defaults. Should be made clickable
|
|
18
|
+
"""
|
|
19
|
+
txt = settings.V3_API_ROOT + "foo/bar/"
|
|
20
|
+
ret = pulp_urls.urlize_quoted_hrefs(txt, nofollow=False)
|
|
21
|
+
assert ret == f'<a href="{txt}">{txt}</a>'
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def test_urlize_quoted_hrefs_trim():
|
|
25
|
+
"""
|
|
26
|
+
text starts with API_ROOT, defaults. Should be made clickable
|
|
27
|
+
"""
|
|
28
|
+
txt = settings.V3_API_ROOT + "foo/bar/"
|
|
29
|
+
trim_txt = txt[0] + "..."
|
|
30
|
+
ret = pulp_urls.urlize_quoted_hrefs(txt, trim_url_limit=4)
|
|
31
|
+
assert ret == f'<a href="{txt}" rel="nofollow">{trim_txt}</a>'
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_urlize_quoted_hrefs_basic_url_xss():
|
|
35
|
+
"""
|
|
36
|
+
text starts with API_ROOT, includes XSS, defaults. Should be made clickable, escape XSS
|
|
37
|
+
"""
|
|
38
|
+
txt = settings.V3_API_ROOT + "foo/bar/<script>alert('ALERT!')</script>blech/"
|
|
39
|
+
escapified_linked_text = (
|
|
40
|
+
'<a href="' + settings.V3_API_ROOT + "foo/bar/"
|
|
41
|
+
'%3Cscript%3Ealert('ALERT!')%3C/script%3Eblech/" '
|
|
42
|
+
'rel="nofollow">' + settings.V3_API_ROOT + "foo/bar/<script>"
|
|
43
|
+
"alert('ALERT!')</script>blech/</a>"
|
|
44
|
+
)
|
|
45
|
+
ret = pulp_urls.urlize_quoted_hrefs(txt)
|
|
46
|
+
assert ret == escapified_linked_text
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_urlize_quoted_hrefs_basic_escape():
|
|
50
|
+
"""
|
|
51
|
+
text contains XSS. Expect escaped
|
|
52
|
+
"""
|
|
53
|
+
txt = "foo/bar/<script>alert('ALERT!')</script>blech/"
|
|
54
|
+
ret = pulp_urls.urlize_quoted_hrefs(txt)
|
|
55
|
+
assert ret == "foo/bar/<script>alert('ALERT!')</script>blech/"
|
|
@@ -317,6 +317,7 @@ pulpcore/tests/unit/test_cache.py
|
|
|
317
317
|
pulpcore/tests/unit/test_content_guard.py
|
|
318
318
|
pulpcore/tests/unit/test_files.py
|
|
319
319
|
pulpcore/tests/unit/test_import_checks.py
|
|
320
|
+
pulpcore/tests/unit/test_pulp_urls.py
|
|
320
321
|
pulpcore/tests/unit/test_settings.py
|
|
321
322
|
pulpcore/tests/unit/test_util.py
|
|
322
323
|
pulpcore/tests/unit/content/__init__.py
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
aiodns<=3.1.1,>=3.0
|
|
2
|
-
aiofiles
|
|
2
|
+
aiofiles<23.3.0,>=22.1
|
|
3
3
|
aiohttp<3.9.2,>=3.8.1
|
|
4
4
|
asyncio-throttle<=1.0.2,>=1.0
|
|
5
5
|
backoff<2.2.2,>=2.1.2
|
|
6
6
|
click<=8.1.7,>=8.1.0
|
|
7
|
-
cryptography<42.0
|
|
7
|
+
cryptography<42.0,>=38.0.1
|
|
8
8
|
Django~=3.2.16
|
|
9
9
|
django-currentuser<=0.5.3,>=0.5.3
|
|
10
10
|
django-filter<=22.1,>=22.1
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
aiodns>=3.0,<=3.1.1
|
|
2
|
-
aiofiles>=22.1
|
|
2
|
+
aiofiles>=22.1,<23.3.0
|
|
3
3
|
aiohttp>=3.8.1,<3.9.2
|
|
4
4
|
asyncio-throttle>=1.0,<=1.0.2
|
|
5
5
|
async-timeout>=4.0.3,<4.0.4;python_version<"3.11"
|
|
6
6
|
backoff>=2.1.2,<2.2.2
|
|
7
7
|
click>=8.1.0,<=8.1.7
|
|
8
|
-
cryptography>=38.0.1,<42.0
|
|
8
|
+
cryptography>=38.0.1,<42.0
|
|
9
9
|
Django~=3.2.16 # LTS version, switch only if we have a compelling reason to
|
|
10
10
|
django-currentuser>=0.5.3,<=0.5.3
|
|
11
11
|
django-filter>=22.1,<=22.1
|
|
@@ -8,7 +8,7 @@ with open("requirements.txt") as requirements:
|
|
|
8
8
|
|
|
9
9
|
setup(
|
|
10
10
|
name="pulpcore",
|
|
11
|
-
version="3.22.
|
|
11
|
+
version="3.22.30",
|
|
12
12
|
description="Pulp Django Application and Related Modules",
|
|
13
13
|
long_description=long_description,
|
|
14
14
|
long_description_content_type="text/markdown",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/add-signing-service.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/analyze-publication.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/dump-publications-to-fs.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/handle-artifact-checksums.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/remove-signing-service.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/reset-admin-password.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/management/commands/stage-profile-summary.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0002_increase_artifact_size_field.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0003_remove_upload_completed.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0006_repository_plugin_managed.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0007_delete_progress_proxies.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0008_published_metadata_as_content.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0016_charfield_to_textfield.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0019_add_signing_service_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0023_change_exporter_models.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0031_import_export_validate_params.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0039_change_download_concurrency.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0044_temp_file_artifact_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0050_namespace_access_policies.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0058_accesspolicy_customized.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0063_repository_retained_versions.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0064_add_new_style_task_columns.py
RENAMED
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0064_repository_user_hidden.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulpcore-3.22.28 → pulpcore-3.22.30}/pulpcore/app/migrations/0070_rename_retained_versions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|