pulpcore 3.28.28__tar.gz → 3.28.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.
Files changed (373) hide show
  1. {pulpcore-3.28.28 → pulpcore-3.28.30}/CHANGES.md +32 -0
  2. {pulpcore-3.28.28 → pulpcore-3.28.30}/PKG-INFO +1 -1
  3. {pulpcore-3.28.28 → pulpcore-3.28.30}/functest_requirements.txt +0 -2
  4. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/apps.py +1 -1
  5. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/checks.py +1 -1
  6. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/settings.py +2 -0
  7. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/templatetags/pulp_urls.py +7 -4
  8. pulpcore-3.28.30/pulpcore/tests/unit/test_pulp_urls.py +58 -0
  9. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore.egg-info/PKG-INFO +1 -1
  10. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore.egg-info/SOURCES.txt +1 -0
  11. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore.egg-info/requires.txt +1 -1
  12. {pulpcore-3.28.28 → pulpcore-3.28.30}/requirements.txt +1 -1
  13. {pulpcore-3.28.28 → pulpcore-3.28.30}/setup.py +1 -1
  14. {pulpcore-3.28.28 → pulpcore-3.28.30}/CODE_OF_CONDUCT.md +0 -0
  15. {pulpcore-3.28.28 → pulpcore-3.28.30}/COMMITMENT +0 -0
  16. {pulpcore-3.28.28 → pulpcore-3.28.30}/CONTRIBUTING.md +0 -0
  17. {pulpcore-3.28.28 → pulpcore-3.28.30}/COPYRIGHT +0 -0
  18. {pulpcore-3.28.28 → pulpcore-3.28.30}/LICENSE +0 -0
  19. {pulpcore-3.28.28 → pulpcore-3.28.30}/MANIFEST.in +0 -0
  20. {pulpcore-3.28.28 → pulpcore-3.28.30}/README.md +0 -0
  21. {pulpcore-3.28.28 → pulpcore-3.28.30}/bin/pulp-content +0 -0
  22. {pulpcore-3.28.28 → pulpcore-3.28.30}/ci_requirements.txt +0 -0
  23. {pulpcore-3.28.28 → pulpcore-3.28.30}/manage.py +0 -0
  24. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/__init__.py +0 -0
  25. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/__init__.py +0 -0
  26. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/access_policy.py +0 -0
  27. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/authentication.py +0 -0
  28. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/files.py +0 -0
  29. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/global_access_conditions.py +0 -0
  30. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/importexport.py +0 -0
  31. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/loggers.py +0 -0
  32. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/manage.py +0 -0
  33. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/__init__.py +0 -0
  34. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/commands/__init__.py +0 -0
  35. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/commands/add-signing-service.py +0 -0
  36. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/commands/analyze-publication.py +0 -0
  37. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
  38. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/commands/dump-permissions.py +0 -0
  39. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
  40. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/commands/handle-artifact-checksums.py +0 -0
  41. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/commands/openapi.py +0 -0
  42. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/commands/remove-plugin.py +0 -0
  43. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
  44. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
  45. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/management/commands/rotate-db-key.py +0 -0
  46. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0001_initial.py +0 -0
  47. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -0
  48. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0003_remove_upload_completed.py +0 -0
  49. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -0
  50. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0005_progressreport_code.py +0 -0
  51. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -0
  52. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -0
  53. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -0
  54. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -0
  55. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0010_pulp_fields.py +0 -0
  56. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0011_relative_path.py +0 -0
  57. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -0
  58. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0013_repository_pulp_type.py +0 -0
  59. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -0
  60. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -0
  61. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -0
  62. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0017_remove_task_parent.py +0 -0
  63. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -0
  64. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0019_add_signing_service_model.py +0 -0
  65. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -0
  66. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -0
  67. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0022_rename_last_version.py +0 -0
  68. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0023_change_exporter_models.py +0 -0
  69. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -0
  70. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0025_task_parent_task.py +0 -0
  71. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0026_task_group.py +0 -0
  72. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0027_export_backend.py +0 -0
  73. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -0
  74. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0029_export_delete.py +0 -0
  75. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -0
  76. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0031_import_export_validate_params.py +0 -0
  77. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0032_export_to_chunks.py +0 -0
  78. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -0
  79. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0034_groupprogressreport.py +0 -0
  80. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0035_content_upstream_id.py +0 -0
  81. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0036_unprotect_last_export.py +0 -0
  82. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -0
  83. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0038_repository_remote.py +0 -0
  84. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0039_change_download_concurrency.py +0 -0
  85. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -0
  86. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0041_accesspolicy.py +0 -0
  87. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -0
  88. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0043_toc_attribute.py +0 -0
  89. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -0
  90. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -0
  91. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0046_task__resource_job_id.py +0 -0
  92. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -0
  93. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0048_fips_checksums.py +0 -0
  94. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -0
  95. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0050_namespace_access_policies.py +0 -0
  96. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0051_timeoutfields.py +0 -0
  97. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -0
  98. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0053_remote_headers.py +0 -0
  99. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0054_add_public_key.py +0 -0
  100. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0055_label.py +0 -0
  101. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0056_remote_rate_limit.py +0 -0
  102. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0057_add_label_indexes.py +0 -0
  103. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -0
  104. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0059_proxy_creds.py +0 -0
  105. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -0
  106. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -0
  107. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -0
  108. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0063_repository_retained_versions.py +0 -0
  109. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -0
  110. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0064_repository_user_hidden.py +0 -0
  111. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -0
  112. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -0
  113. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -0
  114. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -0
  115. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0069_update_json_fields.py +0 -0
  116. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0070_rename_retained_versions.py +0 -0
  117. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -0
  118. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -0
  119. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -0
  120. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0074_acs.py +0 -0
  121. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0075_rbaccontentguard.py +0 -0
  122. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -0
  123. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -0
  124. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -0
  125. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -0
  126. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0080_proxy_group_model.py +0 -0
  127. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -0
  128. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -0
  129. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0083_alter_group_options.py +0 -0
  130. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -0
  131. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -0
  132. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0086_task_json_fields.py +0 -0
  133. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0087_taskschedule.py +0 -0
  134. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -0
  135. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -0
  136. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0090_char_to_text_field.py +0 -0
  137. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0091_systemid.py +0 -0
  138. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
  139. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
  140. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
  141. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
  142. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
  143. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
  144. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
  145. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0099_versions_field.py +0 -0
  146. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
  147. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0101_add_domain.py +0 -0
  148. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
  149. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
  150. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0104_delete_label.py +0 -0
  151. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
  152. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
  153. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
  154. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/migrations/__init__.py +0 -0
  155. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/mime_types.py +0 -0
  156. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/modelresource.py +0 -0
  157. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/__init__.py +0 -0
  158. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/access_policy.py +0 -0
  159. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/acs.py +0 -0
  160. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/analytics.py +0 -0
  161. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/base.py +0 -0
  162. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/content.py +0 -0
  163. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/domain.py +0 -0
  164. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/exporter.py +0 -0
  165. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/fields.py +0 -0
  166. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/generic.py +0 -0
  167. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/importer.py +0 -0
  168. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/progress.py +0 -0
  169. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/publication.py +0 -0
  170. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/replica.py +0 -0
  171. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/repository.py +0 -0
  172. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/role.py +0 -0
  173. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/status.py +0 -0
  174. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/storage.py +0 -0
  175. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/task.py +0 -0
  176. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/models/upload.py +0 -0
  177. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/monkeypatch.py +0 -0
  178. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/protobuf/__init__.py +0 -0
  179. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
  180. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/pulp_hashlib.py +0 -0
  181. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/redis_connection.py +0 -0
  182. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/replica.py +0 -0
  183. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/response.py +0 -0
  184. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/role_util.py +0 -0
  185. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/__init__.py +0 -0
  186. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/access_policy.py +0 -0
  187. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/acs.py +0 -0
  188. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/base.py +0 -0
  189. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/content.py +0 -0
  190. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/domain.py +0 -0
  191. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/exporter.py +0 -0
  192. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/fields.py +0 -0
  193. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/importer.py +0 -0
  194. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/orphans.py +0 -0
  195. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/progress.py +0 -0
  196. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/publication.py +0 -0
  197. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/purge.py +0 -0
  198. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/reclaim.py +0 -0
  199. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/repair.py +0 -0
  200. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/replica.py +0 -0
  201. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/repository.py +0 -0
  202. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/status.py +0 -0
  203. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/task.py +0 -0
  204. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/upload.py +0 -0
  205. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/serializers/user.py +0 -0
  206. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/tasks/__init__.py +0 -0
  207. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/tasks/analytics.py +0 -0
  208. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/tasks/base.py +0 -0
  209. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/tasks/export.py +0 -0
  210. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/tasks/importer.py +0 -0
  211. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/tasks/orphan.py +0 -0
  212. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/tasks/purge.py +0 -0
  213. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/tasks/reclaim_space.py +0 -0
  214. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/tasks/replica.py +0 -0
  215. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/tasks/repository.py +0 -0
  216. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/tasks/test.py +0 -0
  217. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/tasks/upload.py +0 -0
  218. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/templates/rest_framework/api.html +0 -0
  219. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/templatetags/__init__.py +0 -0
  220. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/urls.py +0 -0
  221. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/util.py +0 -0
  222. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/views/__init__.py +0 -0
  223. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/views/importer.py +0 -0
  224. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/views/orphans.py +0 -0
  225. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/views/repair.py +0 -0
  226. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/views/status.py +0 -0
  227. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/__init__.py +0 -0
  228. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/access_policy.py +0 -0
  229. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/acs.py +0 -0
  230. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/base.py +0 -0
  231. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/content.py +0 -0
  232. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/custom_filters.py +0 -0
  233. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/domain.py +0 -0
  234. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/exporter.py +0 -0
  235. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/importer.py +0 -0
  236. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/orphans.py +0 -0
  237. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/publication.py +0 -0
  238. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/reclaim.py +0 -0
  239. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/replica.py +0 -0
  240. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/repository.py +0 -0
  241. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/task.py +0 -0
  242. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/upload.py +0 -0
  243. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/viewsets/user.py +0 -0
  244. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/app/wsgi.py +0 -0
  245. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/backends.py +0 -0
  246. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/cache/__init__.py +0 -0
  247. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/cache/cache.py +0 -0
  248. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/constants.py +0 -0
  249. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/content/__init__.py +0 -0
  250. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/content/authentication.py +0 -0
  251. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/content/handler.py +0 -0
  252. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/download/__init__.py +0 -0
  253. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/download/base.py +0 -0
  254. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/download/factory.py +0 -0
  255. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/download/file.py +0 -0
  256. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/download/http.py +0 -0
  257. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/exceptions/__init__.py +0 -0
  258. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/exceptions/base.py +0 -0
  259. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/exceptions/plugin.py +0 -0
  260. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/exceptions/validation.py +0 -0
  261. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/filters.py +0 -0
  262. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/middleware.py +0 -0
  263. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/openapi/__init__.py +0 -0
  264. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/__init__.py +0 -0
  265. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/access_policy.py +0 -0
  266. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/actions.py +0 -0
  267. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/apps.py +0 -0
  268. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/authentication/__init__.py +0 -0
  269. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/cache/__init__.py +0 -0
  270. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/constants.py +0 -0
  271. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/content.py +0 -0
  272. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/download/__init__.py +0 -0
  273. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/exceptions.py +0 -0
  274. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/files.py +0 -0
  275. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/importexport.py +0 -0
  276. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/modelresources.py +0 -0
  277. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/models/__init__.py +0 -0
  278. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/models/role.py +0 -0
  279. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/publication_utils.py +0 -0
  280. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/pulp_hashlib.py +0 -0
  281. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/replica.py +0 -0
  282. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/repo_version_utils.py +0 -0
  283. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/responses.py +0 -0
  284. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/serializers/__init__.py +0 -0
  285. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/serializers/content.py +0 -0
  286. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/stages/__init__.py +0 -0
  287. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/stages/api.py +0 -0
  288. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/stages/artifact_stages.py +0 -0
  289. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/stages/content_stages.py +0 -0
  290. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/stages/declarative_version.py +0 -0
  291. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/stages/models.py +0 -0
  292. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/storage.py +0 -0
  293. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/sync.py +0 -0
  294. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/tasking.py +0 -0
  295. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/util.py +0 -0
  296. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/viewsets/__init__.py +0 -0
  297. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/plugin/viewsets/content.py +0 -0
  298. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/responses.py +0 -0
  299. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tasking/__init__.py +0 -0
  300. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tasking/constants.py +0 -0
  301. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tasking/entrypoint.py +0 -0
  302. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tasking/pulpcore_worker.py +0 -0
  303. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tasking/storage.py +0 -0
  304. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tasking/tasks.py +0 -0
  305. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tasking/util.py +0 -0
  306. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/__init__.py +0 -0
  307. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/__init__.py +0 -0
  308. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/__init__.py +0 -0
  309. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
  310. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
  311. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
  312. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_auth.py +0 -0
  313. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
  314. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
  315. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_crud_domains.py +0 -0
  316. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_filter.py +0 -0
  317. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
  318. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_replication.py +0 -0
  319. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_repos.py +0 -0
  320. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_role.py +0 -0
  321. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
  322. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_scoping.py +0 -0
  323. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
  324. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_status.py +0 -0
  325. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_tasking.py +0 -0
  326. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_upload.py +0 -0
  327. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
  328. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/test_workers.py +0 -0
  329. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
  330. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
  331. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/content_with_coverage.py +0 -0
  332. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/gpg_ascii_armor_signing_service.py +0 -0
  333. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/functional/utils.py +0 -0
  334. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/__init__.py +0 -0
  335. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/conftest.py +0 -0
  336. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/content/__init__.py +0 -0
  337. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/content/test_handler.py +0 -0
  338. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
  339. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/download/__init__.py +0 -0
  340. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
  341. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
  342. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/migration/__init__.py +0 -0
  343. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/migration/test_0077_move_remote_url_credentials.py +0 -0
  344. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/models/__init__.py +0 -0
  345. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/models/test_base.py +0 -0
  346. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/models/test_content.py +0 -0
  347. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/models/test_remote.py +0 -0
  348. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/models/test_repository.py +0 -0
  349. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/roles/__init__.py +0 -0
  350. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/roles/test_roles.py +0 -0
  351. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/serializers/__init__.py +0 -0
  352. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/serializers/test_base.py +0 -0
  353. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/serializers/test_domain.py +0 -0
  354. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
  355. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
  356. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/stages/__init__.py +0 -0
  357. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
  358. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/stages/test_stages.py +0 -0
  359. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/test_cache.py +0 -0
  360. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/test_content_guard.py +0 -0
  361. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/test_files.py +0 -0
  362. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/test_import_checks.py +0 -0
  363. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/test_settings.py +0 -0
  364. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/test_util.py +0 -0
  365. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
  366. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore/tests/unit/viewsets/test_viewset_base.py +0 -0
  367. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore.egg-info/dependency_links.txt +0 -0
  368. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore.egg-info/entry_points.txt +0 -0
  369. {pulpcore-3.28.28 → pulpcore-3.28.30}/pulpcore.egg-info/top_level.txt +0 -0
  370. {pulpcore-3.28.28 → pulpcore-3.28.30}/pyproject.toml +0 -0
  371. {pulpcore-3.28.28 → pulpcore-3.28.30}/setup.cfg +0 -0
  372. {pulpcore-3.28.28 → pulpcore-3.28.30}/test_requirements.txt +0 -0
  373. {pulpcore-3.28.28 → pulpcore-3.28.30}/unittest_requirements.txt +0 -0
@@ -8,6 +8,38 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ ## 3.28.30 (2024-07-16) {: #3.28.30 }
12
+
13
+
14
+ ### REST API {: #3.28.30-rest-api }
15
+
16
+ #### Bugfixes {: #3.28.30-rest-api-bugfix }
17
+
18
+ - Browsable HREFs now have clickable links again.
19
+ [#5563](https://github.com/pulp/pulpcore/issues/5563)
20
+
21
+ ### Plugin API {: #3.28.30-plugin-api }
22
+
23
+ No significant changes.
24
+
25
+ ---
26
+
27
+ ## 3.28.29 (2024-06-24) {: #3.28.29 }
28
+
29
+
30
+ ### REST API {: #3.28.29-rest-api }
31
+
32
+ #### Bugfixes {: #3.28.29-rest-api-bugfix }
33
+
34
+ - Fixed openapi command where plugins relied on CONTENT_ORIGIN to be set.
35
+ [#5510](https://github.com/pulp/pulpcore/issues/5510)
36
+
37
+ ### Plugin API {: #3.28.29-plugin-api }
38
+
39
+ No significant changes.
40
+
41
+ ---
42
+
11
43
  ## 3.28.28 (2024-06-18) {: #3.28.28 }
12
44
 
13
45
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulpcore
3
- Version: 3.28.28
3
+ Version: 3.28.30
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Home-page: https://pulpproject.org
6
6
  Author: Pulp Team
@@ -3,8 +3,6 @@ django
3
3
  dynaconf
4
4
  drf-spectacular
5
5
  pulp-smash @ git+https://github.com/pulp/pulp-smash.git
6
- pulpcore-client
7
- pulp-file-client
8
6
  pytest<8
9
7
  python-gnupg
10
8
  proxy.py~=2.4.3
@@ -234,7 +234,7 @@ class PulpAppConfig(PulpPluginAppConfig):
234
234
  label = "core"
235
235
 
236
236
  # The version of this app
237
- version = "3.28.28"
237
+ version = "3.28.30"
238
238
 
239
239
  # The python package name providing this app
240
240
  python_package_name = "pulpcore"
@@ -7,7 +7,7 @@ from django.core.checks import Error as CheckError, Warning as CheckWarning, reg
7
7
  @register(deploy=True)
8
8
  def content_origin_check(app_configs, **kwargs):
9
9
  messages = []
10
- if not getattr(settings, "CONTENT_ORIGIN", None):
10
+ if getattr(settings, "CONTENT_ORIGIN", "UNREACHABLE") == "UNREACHABLE":
11
11
  messages.append(
12
12
  CheckError(
13
13
  "CONTENT_ORIGIN is a required setting but it was not configured. This may be "
@@ -235,6 +235,8 @@ LOGGING = {
235
235
 
236
236
  DRF_ACCESS_POLICY = {"reusable_conditions": ["pulpcore.app.global_access_conditions"]}
237
237
 
238
+ # This is a sentinal value for deploy checks, since we don't want to set a default one.
239
+ CONTENT_ORIGIN = "UNREACHABLE"
238
240
  CONTENT_PATH_PREFIX = "/pulp/content/"
239
241
  CONTENT_APP_TTL = 30
240
242
 
@@ -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_str
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
  ("&quot;", "&quot;"),
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
- elif safe_input:
78
- words[i] = mark_safe(word)
79
- elif autoescape:
82
+ else:
80
83
  words[i] = escape(word)
81
84
  return "".join(words)
@@ -0,0 +1,58 @@
1
+ import pytest
2
+ from django.conf import settings
3
+
4
+ from pulpcore.app.templatetags import pulp_urls
5
+
6
+ pytestmark = pytest.mark.usefixtures("fake_domain")
7
+
8
+
9
+ def test_urlize_quoted_hrefs_basic_url():
10
+ """
11
+ text starts with API_ROOT, defaults. Should be made clickable
12
+ """
13
+ txt = settings.V3_API_ROOT + "foo/bar/"
14
+ ret = pulp_urls.urlize_quoted_hrefs(txt)
15
+ assert ret == f'<a href="{txt}" rel="nofollow">{txt}</a>'
16
+
17
+
18
+ def test_urlize_quoted_hrefs_nofollow():
19
+ """
20
+ text starts with API_ROOT, defaults. Should be made clickable
21
+ """
22
+ txt = settings.V3_API_ROOT + "foo/bar/"
23
+ ret = pulp_urls.urlize_quoted_hrefs(txt, nofollow=False)
24
+ assert ret == f'<a href="{txt}">{txt}</a>'
25
+
26
+
27
+ def test_urlize_quoted_hrefs_trim():
28
+ """
29
+ text starts with API_ROOT, defaults. Should be made clickable
30
+ """
31
+ txt = settings.V3_API_ROOT + "foo/bar/"
32
+ trim_txt = txt[0] + "..."
33
+ ret = pulp_urls.urlize_quoted_hrefs(txt, trim_url_limit=4)
34
+ assert ret == f'<a href="{txt}" rel="nofollow">{trim_txt}</a>'
35
+
36
+
37
+ def test_urlize_quoted_hrefs_basic_url_xss():
38
+ """
39
+ text starts with API_ROOT, includes XSS, defaults. Should be made clickable, escape XSS
40
+ """
41
+ txt = settings.V3_API_ROOT + "foo/bar/<script>alert('ALERT!')</script>blech/"
42
+ escapified_linked_text = (
43
+ '<a href="' + settings.V3_API_ROOT + "foo/bar/"
44
+ '%3Cscript%3Ealert(&#x27;ALERT!&#x27;)%3C/script%3Eblech/" '
45
+ 'rel="nofollow">' + settings.V3_API_ROOT + "foo/bar/&lt;script&gt;"
46
+ "alert(&#x27;ALERT!&#x27;)&lt;/script&gt;blech/</a>"
47
+ )
48
+ ret = pulp_urls.urlize_quoted_hrefs(txt)
49
+ assert ret == escapified_linked_text
50
+
51
+
52
+ def test_urlize_quoted_hrefs_basic_escape():
53
+ """
54
+ text contains XSS. Expect escaped
55
+ """
56
+ txt = "foo/bar/<script>alert('ALERT!')</script>blech/"
57
+ ret = pulp_urls.urlize_quoted_hrefs(txt)
58
+ assert ret == "foo/bar/&lt;script&gt;alert(&#x27;ALERT!&#x27;)&lt;/script&gt;blech/"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulpcore
3
- Version: 3.28.28
3
+ Version: 3.28.30
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Home-page: https://pulpproject.org
6
6
  Author: Pulp Team
@@ -341,6 +341,7 @@ pulpcore/tests/unit/test_cache.py
341
341
  pulpcore/tests/unit/test_content_guard.py
342
342
  pulpcore/tests/unit/test_files.py
343
343
  pulpcore/tests/unit/test_import_checks.py
344
+ pulpcore/tests/unit/test_pulp_urls.py
344
345
  pulpcore/tests/unit/test_settings.py
345
346
  pulpcore/tests/unit/test_util.py
346
347
  pulpcore/tests/unit/content/__init__.py
@@ -4,7 +4,7 @@ aiohttp<3.9.6,>=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.8,>=38.0.1
7
+ cryptography<41.0.8,>=38.0.1
8
8
  Django~=4.2.0
9
9
  django-filter<=23.5,>=23.1
10
10
  django-guid<=3.4.0,>=3.3
@@ -5,7 +5,7 @@ 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
8
+ cryptography>=38.0.1,<41.0.8
9
9
  Django~=4.2.0 # LTS version, switch only if we have a compelling reason to
10
10
  django-filter>=23.1,<=23.5
11
11
  django-guid>=3.3,<=3.4.0
@@ -8,7 +8,7 @@ with open("requirements.txt") as requirements:
8
8
 
9
9
  setup(
10
10
  name="pulpcore",
11
- version="3.28.28",
11
+ version="3.28.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