commonground-api-common 2.15.2__tar.gz → 3.0.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.
Files changed (245) hide show
  1. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/CHANGELOG.rst +29 -0
  2. {commonground_api_common-2.15.2/commonground_api_common.egg-info → commonground_api_common-3.0.0}/PKG-INFO +6 -6
  3. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/README.rst +2 -2
  4. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0/commonground_api_common.egg-info}/PKG-INFO +6 -6
  5. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/commonground_api_common.egg-info/SOURCES.txt +0 -3
  6. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/commonground_api_common.egg-info/requires.txt +1 -1
  7. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/pyproject.toml +5 -5
  8. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_utils.py +0 -11
  9. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_views.py +94 -0
  10. commonground_api_common-3.0.0/vng_api_common/__init__.py +1 -0
  11. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/apps.py +0 -2
  12. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/fields.py +1 -84
  13. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/locale/nl/LC_MESSAGES/django.po +1 -1
  14. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/routers.py +0 -10
  15. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/views.py +30 -10
  16. commonground_api_common-2.15.2/tests/test_jwtsecrets.py +0 -39
  17. commonground_api_common-2.15.2/vng_api_common/__init__.py +0 -1
  18. commonground_api_common-2.15.2/vng_api_common/api/urls.py +0 -7
  19. commonground_api_common-2.15.2/vng_api_common/api/views.py +0 -37
  20. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/MANIFEST.in +0 -0
  21. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/commonground_api_common.egg-info/dependency_links.txt +0 -0
  22. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/commonground_api_common.egg-info/not-zip-safe +0 -0
  23. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/commonground_api_common.egg-info/top_level.txt +0 -0
  24. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/setup.cfg +0 -0
  25. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_autorisatie_validation.py +0 -0
  26. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_cache_headers.py +0 -0
  27. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_cached_hyperlinkrelatedfields.py +0 -0
  28. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_check_query_params.py +0 -0
  29. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_checks.py +0 -0
  30. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_choices.py +0 -0
  31. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_configuration_steps_applicaties.py +0 -0
  32. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_configuration_steps_jwtsecrets.py +0 -0
  33. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_content_type_headers.py +0 -0
  34. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_exception_camelize.py +0 -0
  35. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_exception_handler.py +0 -0
  36. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_field_extensions.py +0 -0
  37. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_fields.py +0 -0
  38. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_filter_extension.py +0 -0
  39. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_filters.py +0 -0
  40. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_gegevensgroepen.py +0 -0
  41. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_get_resource.py +0 -0
  42. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_jwt_decoding.py +0 -0
  43. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_migrations.py +0 -0
  44. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_nested_serializer_validation.py +0 -0
  45. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_notes.py +0 -0
  46. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_pagination.py +0 -0
  47. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_permissions.py +0 -0
  48. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_publish_validators.py +0 -0
  49. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_schema.py +0 -0
  50. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_scopes.py +0 -0
  51. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_serializer_extensions.py +0 -0
  52. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_serializer_fields.py +0 -0
  53. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_server_errors.py +0 -0
  54. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/tests/test_validators.py +0 -0
  55. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/admin.py +0 -0
  56. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/api/__init__.py +0 -0
  57. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/api/permissions.py +0 -0
  58. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/api/serializers.py +0 -0
  59. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/__init__.py +0 -0
  60. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/admin.py +0 -0
  61. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/api/__init__.py +0 -0
  62. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/api/scopes.py +0 -0
  63. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/api/serializers.py +0 -0
  64. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/apps.py +0 -0
  65. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/audits.py +0 -0
  66. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0001_initial.py +0 -0
  67. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0002_auto_20190516_0830.py +0 -0
  68. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0003_auto_20190517_0844.py +0 -0
  69. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0004_auto_20190520_1238.py +0 -0
  70. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0005_auto_20190520_1450.py +0 -0
  71. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0006_audittrail_toelichting.py +0 -0
  72. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0007_auto_20190522_0916.py +0 -0
  73. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0008_audittrail_resource_weergave.py +0 -0
  74. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0009_auto_20190712_1643.py +0 -0
  75. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0010_audittrail_request_id.py +0 -0
  76. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0011_auto_20190918_1335.py +0 -0
  77. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0012_auto_20200619_0545.py +0 -0
  78. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0012_remove_audittrail_request_id.py +0 -0
  79. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0013_audittrail_logrecord_id.py +0 -0
  80. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0013_auto_20201207_0846.py +0 -0
  81. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0014_auto_20201221_0905.py +0 -0
  82. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0014_auto_20210323_1654.py +0 -0
  83. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0015_auto_20220318_1608.py +0 -0
  84. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0016_merge_20220607_0517.py +0 -0
  85. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0017_alter_audittrail_bron.py +0 -0
  86. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0018_auto_20221212_0745.py +0 -0
  87. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/0019_alter_audittrail_options.py +0 -0
  88. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/__init__.py +0 -0
  89. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/migrations/_operations.py +0 -0
  90. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/models.py +0 -0
  91. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/utils.py +0 -0
  92. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/audittrails/viewsets.py +0 -0
  93. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/__init__.py +0 -0
  94. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/admin.py +0 -0
  95. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/middleware.py +0 -0
  96. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0001_initial.py +0 -0
  97. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0002_authorizationsconfig.py +0 -0
  98. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0003_auto_20190502_0409.py +0 -0
  99. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0004_auto_20190503_0941.py +0 -0
  100. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0005_auto_20190506_0842.py +0 -0
  101. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0006_auto_20190506_0901.py +0 -0
  102. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0007_auto_20190506_1212.py +0 -0
  103. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0008_auto_20190712_1541.py +0 -0
  104. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0009_update_enums.py +0 -0
  105. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0010_auto_20190712_1643.py +0 -0
  106. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0011_auto_20191114_0728.py +0 -0
  107. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0012_auto_20200619_0545.py +0 -0
  108. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0013_auto_20201207_0846.py +0 -0
  109. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0014_auto_20201221_0905.py +0 -0
  110. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0015_auto_20220318_1608.py +0 -0
  111. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0016_remove_authorizationsconfig_api_root_and_more.py +0 -0
  112. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0017_alter_applicatie_client_ids_and_more.py +0 -0
  113. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/0018_alter_applicatie_options_alter_autorisatie_options.py +0 -0
  114. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/migrations/__init__.py +0 -0
  115. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/models.py +0 -0
  116. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/serializers.py +0 -0
  117. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/utils.py +0 -0
  118. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/authorizations/validators.py +0 -0
  119. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/caching/__init__.py +0 -0
  120. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/caching/decorators.py +0 -0
  121. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/caching/etags.py +0 -0
  122. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/caching/introspection.py +0 -0
  123. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/caching/models.py +0 -0
  124. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/caching/registry.py +0 -0
  125. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/caching/signals.py +0 -0
  126. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/checks.py +0 -0
  127. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/choices.py +0 -0
  128. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/client.py +0 -0
  129. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/compat.py +0 -0
  130. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/conf/__init__.py +0 -0
  131. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/conf/api.py +0 -0
  132. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/constants.py +0 -0
  133. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/contrib/__init__.py +0 -0
  134. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/contrib/setup_configuration/__init__.py +0 -0
  135. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/contrib/setup_configuration/models.py +0 -0
  136. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/contrib/setup_configuration/steps.py +0 -0
  137. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/db/__init__.py +0 -0
  138. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/db/operations.py +0 -0
  139. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/descriptors.py +0 -0
  140. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/diagrams/__init__.py +0 -0
  141. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/diagrams/generate_graphs.py +0 -0
  142. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/diagrams/uml_images.py +0 -0
  143. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/doc.py +0 -0
  144. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/exception_handling.py +0 -0
  145. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/exceptions.py +0 -0
  146. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/extensions/__init__.py +0 -0
  147. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/extensions/file.py +0 -0
  148. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/extensions/gegevensgroep.py +0 -0
  149. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/extensions/geojson.py +0 -0
  150. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/extensions/hyperlink.py +0 -0
  151. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/extensions/polymorphic.py +0 -0
  152. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/extensions/query.py +0 -0
  153. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/filters.py +0 -0
  154. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/filters_backend.py +0 -0
  155. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/filtersets.py +0 -0
  156. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/generators.py +0 -0
  157. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/geo.py +0 -0
  158. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/locale/nl/LC_MESSAGES/django.mo +0 -0
  159. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/middleware.py +0 -0
  160. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/migrations/0001_initial.py +0 -0
  161. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/migrations/0002_apicredential.py +0 -0
  162. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/migrations/0003_auto_20190417_1145.py +0 -0
  163. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/migrations/0004_auto_20190517_0903.py +0 -0
  164. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/migrations/0005_auto_20190614_1346.py +0 -0
  165. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/migrations/0006_delete_apicredential.py +0 -0
  166. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/migrations/0007_alter_jwtsecret_options.py +0 -0
  167. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/migrations/__init__.py +0 -0
  168. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/mocks.py +0 -0
  169. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/models.py +0 -0
  170. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notes/__init__.py +0 -0
  171. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notes/api/__init__.py +0 -0
  172. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notes/api/serializers.py +0 -0
  173. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notes/api/viewsets.py +0 -0
  174. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notes/apps.py +0 -0
  175. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notes/constants.py +0 -0
  176. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notes/models.py +0 -0
  177. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/__init__.py +0 -0
  178. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/api/__init__.py +0 -0
  179. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/api/urls.py +0 -0
  180. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/api/views.py +0 -0
  181. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/apps.py +0 -0
  182. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/handlers.py +0 -0
  183. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/migrations/0001_initial.py +0 -0
  184. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/migrations/0002_subscription__subscription.py +0 -0
  185. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/migrations/0003_auto_20190319_1048.py +0 -0
  186. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/migrations/0004_auto_20190325_1313.py +0 -0
  187. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/migrations/0005_fix_default_nrc.py +0 -0
  188. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/migrations/0006_auto_20190417_1142.py +0 -0
  189. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/migrations/0007_auto_20190429_1442.py +0 -0
  190. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/migrations/0008_auto_20190502_0415.py +0 -0
  191. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/migrations/0009_auto_20190729_0427.py +0 -0
  192. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/migrations/0010_auto_20220704_1419.py +0 -0
  193. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/migrations/0011_remove_subscription_config_and_more.py +0 -0
  194. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/notifications/migrations/__init__.py +0 -0
  195. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/oas.py +0 -0
  196. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/pagination.py +0 -0
  197. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/permissions.py +0 -0
  198. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/polymorphism.py +0 -0
  199. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/schema.py +0 -0
  200. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/scopes.py +0 -0
  201. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/search.py +0 -0
  202. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/serializers.py +0 -0
  203. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/settings.py +0 -0
  204. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/css/admin/admin_overrides.css +0 -0
  205. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/css/screen.css +0 -0
  206. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/ico/favicon.png +0 -0
  207. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/img/vng.svg +0 -0
  208. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/LICENSE.txt +0 -0
  209. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/css/all.css +0 -0
  210. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/css/all.min.css +0 -0
  211. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-brands-400.eot +0 -0
  212. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-brands-400.svg +0 -0
  213. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  214. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-brands-400.woff +0 -0
  215. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  216. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-regular-400.eot +0 -0
  217. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-regular-400.svg +0 -0
  218. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  219. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-regular-400.woff +0 -0
  220. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  221. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-solid-900.eot +0 -0
  222. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-solid-900.svg +0 -0
  223. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  224. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-solid-900.woff +0 -0
  225. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  226. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/templates/vng_api_common/admin/base_site.html +0 -0
  227. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/templates/vng_api_common/includes/kanalen_card.html +0 -0
  228. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/templates/vng_api_common/index.html +0 -0
  229. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/templates/vng_api_common/master.html +0 -0
  230. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/templates/vng_api_common/ref/error_detail.html +0 -0
  231. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/templates/vng_api_common/ref/scopes.html +0 -0
  232. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/templates/vng_api_common/view_config.html +0 -0
  233. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/templatetags/__init__.py +0 -0
  234. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/templatetags/vng_api_common.py +0 -0
  235. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/tests/__init__.py +0 -0
  236. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/tests/auth.py +0 -0
  237. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/tests/caching.py +0 -0
  238. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/tests/schema.py +0 -0
  239. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/tests/urls.py +0 -0
  240. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/tests/utils.py +0 -0
  241. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/urls.py +0 -0
  242. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/utils.py +0 -0
  243. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/validators.py +0 -0
  244. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/version.py +0 -0
  245. {commonground_api_common-2.15.2 → commonground_api_common-3.0.0}/vng_api_common/viewsets.py +0 -0
@@ -2,6 +2,35 @@
2
2
  Change history
3
3
  ==============
4
4
 
5
+ 3.0.0 (2026-10-01)
6
+ -------------------
7
+
8
+ **💥 Breaking changes**
9
+
10
+ * Drop support for python 3.11
11
+ * Remove code that was marked deprecated
12
+
13
+ * ``DaysDurationField``
14
+ * option to specify base_name instead of basename for ``NestedRegisteringMixin``
15
+ * ``CreateJWTSecretView``
16
+
17
+ **Bugfixes**
18
+
19
+ * [#187] Don't crash ViewConfigView on empty ZGW secret
20
+
21
+ **Maintenance**
22
+
23
+ * Confirm support for python 3.14
24
+ * Pin ``django-setup-configuration`` to 0.13.0 or greater
25
+
26
+
27
+ 2.16.0 (2026-09-14)
28
+ -------------------
29
+
30
+ **Deprecations**
31
+
32
+ * [openzaak/open-zaak#2506] Mark ``DaysDurationField`` field as deprecated
33
+
5
34
  2.15.2 (2026-09-10)
6
35
  -------------------
7
36
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: commonground-api-common
3
- Version: 2.15.2
3
+ Version: 3.0.0
4
4
  Summary: Commonground API tooling
5
5
  Author-email: "Maykin Media, VNG-Realisatie" <support@maykinmedia.nl>
6
6
  License-Expression: MIT
@@ -18,11 +18,11 @@ Classifier: Operating System :: MacOS
18
18
  Classifier: Operating System :: Microsoft :: Windows
19
19
  Classifier: Programming Language :: Python :: 3
20
20
  Classifier: Programming Language :: Python :: 3 :: Only
21
- Classifier: Programming Language :: Python :: 3.11
22
21
  Classifier: Programming Language :: Python :: 3.12
23
22
  Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
24
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
- Requires-Python: >=3.11
25
+ Requires-Python: >=3.12
26
26
  Description-Content-Type: text/x-rst
27
27
  Requires-Dist: django>=5.2.0
28
28
  Requires-Dist: django-filter<=25.1,>=23.1
@@ -72,7 +72,7 @@ Requires-Dist: requests-mock; extra == "oas"
72
72
  Provides-Extra: testutils
73
73
  Requires-Dist: zgw-consumers-oas; extra == "testutils"
74
74
  Provides-Extra: setup-configuration
75
- Requires-Dist: django-setup-configuration>=0.7.0; extra == "setup-configuration"
75
+ Requires-Dist: django-setup-configuration>=0.13.0; extra == "setup-configuration"
76
76
  Provides-Extra: notifications
77
77
  Requires-Dist: notifications-api-common>=0.3.1; extra == "notifications"
78
78
  Provides-Extra: coverage
@@ -88,7 +88,7 @@ Commonground-API-common - Tooling voor RESTful APIs
88
88
  ===================================================
89
89
 
90
90
 
91
- :Version: 2.15.2
91
+ :Version: 3.0.0
92
92
  :Source: https://github.com/maykinmedia/commonground-api-common
93
93
  :PythonVersion: 3.12
94
94
 
@@ -143,7 +143,7 @@ Features
143
143
  * ``BSNField``
144
144
  * ``LanguageField``
145
145
  * ``VertrouwelijkheidsAanduidingField``
146
- * ``DaysDurationField``
146
+ * ``DurationField``
147
147
  * Mocks voor de validators die netwerk IO hebben, eenvoudig via
148
148
  ``@override_settings`` toe te passen
149
149
  * Test utilities
@@ -3,7 +3,7 @@ Commonground-API-common - Tooling voor RESTful APIs
3
3
  ===================================================
4
4
 
5
5
 
6
- :Version: 2.15.2
6
+ :Version: 3.0.0
7
7
  :Source: https://github.com/maykinmedia/commonground-api-common
8
8
  :PythonVersion: 3.12
9
9
 
@@ -58,7 +58,7 @@ Features
58
58
  * ``BSNField``
59
59
  * ``LanguageField``
60
60
  * ``VertrouwelijkheidsAanduidingField``
61
- * ``DaysDurationField``
61
+ * ``DurationField``
62
62
  * Mocks voor de validators die netwerk IO hebben, eenvoudig via
63
63
  ``@override_settings`` toe te passen
64
64
  * Test utilities
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: commonground-api-common
3
- Version: 2.15.2
3
+ Version: 3.0.0
4
4
  Summary: Commonground API tooling
5
5
  Author-email: "Maykin Media, VNG-Realisatie" <support@maykinmedia.nl>
6
6
  License-Expression: MIT
@@ -18,11 +18,11 @@ Classifier: Operating System :: MacOS
18
18
  Classifier: Operating System :: Microsoft :: Windows
19
19
  Classifier: Programming Language :: Python :: 3
20
20
  Classifier: Programming Language :: Python :: 3 :: Only
21
- Classifier: Programming Language :: Python :: 3.11
22
21
  Classifier: Programming Language :: Python :: 3.12
23
22
  Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
24
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
- Requires-Python: >=3.11
25
+ Requires-Python: >=3.12
26
26
  Description-Content-Type: text/x-rst
27
27
  Requires-Dist: django>=5.2.0
28
28
  Requires-Dist: django-filter<=25.1,>=23.1
@@ -72,7 +72,7 @@ Requires-Dist: requests-mock; extra == "oas"
72
72
  Provides-Extra: testutils
73
73
  Requires-Dist: zgw-consumers-oas; extra == "testutils"
74
74
  Provides-Extra: setup-configuration
75
- Requires-Dist: django-setup-configuration>=0.7.0; extra == "setup-configuration"
75
+ Requires-Dist: django-setup-configuration>=0.13.0; extra == "setup-configuration"
76
76
  Provides-Extra: notifications
77
77
  Requires-Dist: notifications-api-common>=0.3.1; extra == "notifications"
78
78
  Provides-Extra: coverage
@@ -88,7 +88,7 @@ Commonground-API-common - Tooling voor RESTful APIs
88
88
  ===================================================
89
89
 
90
90
 
91
- :Version: 2.15.2
91
+ :Version: 3.0.0
92
92
  :Source: https://github.com/maykinmedia/commonground-api-common
93
93
  :PythonVersion: 3.12
94
94
 
@@ -143,7 +143,7 @@ Features
143
143
  * ``BSNField``
144
144
  * ``LanguageField``
145
145
  * ``VertrouwelijkheidsAanduidingField``
146
- * ``DaysDurationField``
146
+ * ``DurationField``
147
147
  * Mocks voor de validators die netwerk IO hebben, eenvoudig via
148
148
  ``@override_settings`` toe te passen
149
149
  * Test utilities
@@ -26,7 +26,6 @@ tests/test_filters.py
26
26
  tests/test_gegevensgroepen.py
27
27
  tests/test_get_resource.py
28
28
  tests/test_jwt_decoding.py
29
- tests/test_jwtsecrets.py
30
29
  tests/test_migrations.py
31
30
  tests/test_nested_serializer_validation.py
32
31
  tests/test_notes.py
@@ -81,8 +80,6 @@ vng_api_common/viewsets.py
81
80
  vng_api_common/api/__init__.py
82
81
  vng_api_common/api/permissions.py
83
82
  vng_api_common/api/serializers.py
84
- vng_api_common/api/urls.py
85
- vng_api_common/api/views.py
86
83
  vng_api_common/audittrails/__init__.py
87
84
  vng_api_common/audittrails/admin.py
88
85
  vng_api_common/audittrails/apps.py
@@ -46,7 +46,7 @@ requests-mock
46
46
  bump-my-version
47
47
 
48
48
  [setup-configuration]
49
- django-setup-configuration>=0.7.0
49
+ django-setup-configuration>=0.13.0
50
50
 
51
51
  [tests]
52
52
  psycopg2
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "commonground-api-common"
7
- version = "2.15.2"
7
+ version = "3.0.0"
8
8
  description = "Commonground API tooling"
9
9
  readme = "README.rst"
10
10
  license = "MIT"
@@ -13,7 +13,7 @@ authors = [
13
13
  { name = "Maykin Media, VNG-Realisatie", email = "support@maykinmedia.nl" }
14
14
  ]
15
15
  keywords = ["openapi", "swagger", "django"]
16
- requires-python = ">=3.11"
16
+ requires-python = ">=3.12"
17
17
 
18
18
  classifiers = [
19
19
  "Development Status :: 5 - Production/Stable",
@@ -25,9 +25,9 @@ classifiers = [
25
25
  "Operating System :: Microsoft :: Windows",
26
26
  "Programming Language :: Python :: 3",
27
27
  "Programming Language :: Python :: 3 :: Only",
28
- "Programming Language :: Python :: 3.11",
29
28
  "Programming Language :: Python :: 3.12",
30
29
  "Programming Language :: Python :: 3.13",
30
+ "Programming Language :: Python :: 3.14",
31
31
  "Topic :: Software Development :: Libraries :: Python Modules",
32
32
  ]
33
33
 
@@ -102,7 +102,7 @@ testutils = [
102
102
  ]
103
103
 
104
104
  setup-configuration = [
105
- "django-setup-configuration>=0.7.0",
105
+ "django-setup-configuration>=0.13.0",
106
106
  ]
107
107
 
108
108
  notifications = [
@@ -155,7 +155,7 @@ exclude_also = [
155
155
  ]
156
156
 
157
157
  [tool.bumpversion]
158
- current_version = "2.15.2"
158
+ current_version = "3.0.0"
159
159
  files = [
160
160
  {filename = "pyproject.toml"},
161
161
  {filename = "README.rst"},
@@ -1,4 +1,3 @@
1
- import warnings
2
1
  from datetime import date
3
2
 
4
3
  from django.urls import reverse
@@ -7,7 +6,6 @@ import pytest
7
6
 
8
7
  from testapp.models import Group, Record
9
8
  from testapp.viewsets import GroupViewSet
10
- from vng_api_common.api.views import CreateJWTSecretView
11
9
  from vng_api_common.utils import (
12
10
  generate_unique_identification,
13
11
  get_resources_for_paths,
@@ -92,12 +90,3 @@ def test_generate_unique_identification():
92
90
  id2 = generate_unique_identification(record2, "create_date")
93
91
 
94
92
  assert id2 == "RECORD-2023-0000000002"
95
-
96
-
97
- def test_createjwtsecretview_as_view_emits_deprecation_warning():
98
- with warnings.catch_warnings(record=True) as caught:
99
- warnings.simplefilter("always")
100
-
101
- CreateJWTSecretView.as_view()
102
-
103
- assert any("CreateJWTSecretView" in str(w.message) for w in caught)
@@ -231,3 +231,97 @@ def test_config_view_authorizations_error_response(api_client):
231
231
 
232
232
  notifications_request = request_mocker.request_history[1]
233
233
  assert notifications_request.url == expected_request_notifications_url
234
+
235
+
236
+ @pytest.mark.django_db
237
+ def test_config_view_notifications_empty_secret(api_client):
238
+ """
239
+ regression test for https://github.com/maykinmedia/commonground-api-common/issues/187
240
+ """
241
+ notifications_service = ServiceFactory(
242
+ api_root="https://notificaties-api.vng.cloud/api/v1/",
243
+ client_id="foobar",
244
+ secret="",
245
+ auth_type=AuthTypes.zgw,
246
+ )
247
+ notifications_config = NotificationsConfig.get_solo()
248
+ notifications_config.notifications_api_service = notifications_service
249
+ notifications_config.save()
250
+
251
+ authorizations_service = ServiceFactory(
252
+ api_root="https://autorisaties-api.vng.cloud/api/v1/",
253
+ client_id="foobar",
254
+ secret="super-secret",
255
+ auth_type=AuthTypes.zgw,
256
+ )
257
+ authorizations_config = AuthorizationsConfig.get_solo()
258
+ authorizations_config.authorizations_api_service = authorizations_service
259
+ authorizations_config.save()
260
+
261
+ path = reverse("view-config")
262
+
263
+ expected_request_authorizations_url = (
264
+ f"{authorizations_service.api_root}applicaties?clientIds=foobar"
265
+ )
266
+
267
+ with requests_mock.Mocker() as request_mocker:
268
+ request_mocker.get(expected_request_authorizations_url, status_code=200)
269
+
270
+ response: TemplateResponse = api_client.get(path)
271
+
272
+ response_content = response.content.decode("utf-8")
273
+
274
+ assert response.status_code == status.HTTP_200_OK
275
+ assert notifications_service.api_root in response_content
276
+ assert "HMAC" not in response_content
277
+ assert _("Misconfigured") in response_content
278
+
279
+ # no request to the NRC is attempted
280
+ assert request_mocker.call_count == 1
281
+ assert request_mocker.request_history[0].url == expected_request_authorizations_url
282
+
283
+
284
+ @pytest.mark.django_db
285
+ def test_config_view_authorizations_empty_secret(api_client):
286
+ """
287
+ regression test for https://github.com/maykinmedia/commonground-api-common/issues/187
288
+ """
289
+ notifications_service = ServiceFactory(
290
+ api_root="https://notificaties-api.vng.cloud/api/v1/",
291
+ client_id="foobar",
292
+ secret="super-secret",
293
+ auth_type=AuthTypes.zgw,
294
+ )
295
+ notifications_config = NotificationsConfig.get_solo()
296
+ notifications_config.notifications_api_service = notifications_service
297
+ notifications_config.save()
298
+
299
+ authorizations_service = ServiceFactory(
300
+ api_root="https://autorisaties-api.vng.cloud/api/v1/",
301
+ client_id="foobar",
302
+ secret="",
303
+ auth_type=AuthTypes.zgw,
304
+ )
305
+ authorizations_config = AuthorizationsConfig.get_solo()
306
+ authorizations_config.authorizations_api_service = authorizations_service
307
+ authorizations_config.save()
308
+
309
+ path = reverse("view-config")
310
+
311
+ expected_request_notifications_url = f"{notifications_service.api_root}kanaal"
312
+
313
+ with requests_mock.Mocker() as request_mocker:
314
+ request_mocker.get(expected_request_notifications_url, status_code=200)
315
+
316
+ response: TemplateResponse = api_client.get(path)
317
+
318
+ response_content = response.content.decode("utf-8")
319
+
320
+ assert response.status_code == status.HTTP_200_OK
321
+ assert authorizations_service.api_root in response_content
322
+ assert "HMAC" not in response_content
323
+ assert _("Misconfigured") in response_content
324
+
325
+ # no request to the AC is attempted
326
+ assert request_mocker.call_count == 1
327
+ assert request_mocker.request_history[0].url == expected_request_notifications_url
@@ -0,0 +1 @@
1
+ __version__ = "3.0.0"
@@ -7,7 +7,6 @@ from django.utils.translation import gettext_lazy as _
7
7
  import structlog
8
8
  from rest_framework import serializers
9
9
 
10
- from . import fields
11
10
  from .choices import TextChoicesWithDescriptions, ensure_description_exists
12
11
  from .serializers import DurationField, LengthHyperlinkedRelatedField
13
12
 
@@ -45,7 +44,6 @@ class CommonGroundAPICommonConfig(AppConfig):
45
44
  def register_serializer_field():
46
45
  mapping = serializers.ModelSerializer.serializer_field_mapping
47
46
  mapping[models.DurationField] = DurationField
48
- mapping[fields.DaysDurationField] = DurationField
49
47
 
50
48
  if RelativeDeltaField is not None:
51
49
  mapping[RelativeDeltaField] = DurationField
@@ -1,15 +1,9 @@
1
- from datetime import timedelta
2
- from typing import Any
3
-
4
1
  from django.core import checks
5
2
  from django.core.validators import (
6
- MaxValueValidator,
7
3
  MinLengthValidator,
8
- MinValueValidator,
9
4
  )
10
5
  from django.db import models
11
- from django.forms import ChoiceField, Field
12
- from django.utils.translation import gettext, gettext_lazy as _
6
+ from django.utils.translation import gettext_lazy as _
13
7
 
14
8
  from iso639 import iter_langs
15
9
 
@@ -125,80 +119,3 @@ class VertrouwelijkheidsAanduidingField(models.CharField):
125
119
  )
126
120
  ]
127
121
  return []
128
-
129
-
130
- class DaysDurationField(models.DurationField):
131
- """
132
- Express duration in number of calendar days.
133
-
134
- :param min_duration: minimal duration, in number of calendar days.
135
- Defaults to 1.
136
- :param max_duration: maximal duration, in number of calendar days.
137
- Defaults to 999.
138
- """
139
-
140
- def __init__(self, *args, **kwargs):
141
- kwargs.setdefault("min_duration", 1)
142
- kwargs.setdefault("max_duration", 999) # 999 calendar days
143
-
144
- self.min_duration = kwargs.pop("min_duration")
145
- self.max_duration = kwargs.pop("max_duration")
146
-
147
- self.default_validators = [
148
- MinValueValidator(timedelta(days=self.min_duration)),
149
- MaxValueValidator(timedelta(days=self.max_duration)),
150
- ]
151
-
152
- super().__init__(*args, **kwargs)
153
-
154
- def deconstruct(self) -> tuple:
155
- name, path, args, kwargs = super().deconstruct()
156
- kwargs.update(
157
- {"min_duration": self.min_duration, "max_duration": self.max_duration}
158
- )
159
- return name, path, args, kwargs
160
-
161
- def check(self, **kwargs) -> list:
162
- errors = super().check(**kwargs)
163
- errors.extend(self._check_min_duration(**kwargs))
164
- return errors
165
-
166
- def _check_min_duration(self, **kwargs) -> list[checks.Error]:
167
- errors = []
168
- if self.min_duration < 1:
169
- errors.append(
170
- checks.Error(
171
- "De minimale duur in kalenderdagen moet groter dan of gelijk aan 1 zijn",
172
- obj=self,
173
- id="vng_api_common.fields.E006",
174
- )
175
- )
176
- if self.min_duration > self.max_duration:
177
- errors.append(
178
- checks.Error(
179
- "De minimale duur mag niet langer zijn dan de maximale duur",
180
- obj=self,
181
- id="vng_api_common.fields.E007",
182
- )
183
- )
184
- return errors
185
-
186
- def formfield(
187
- self,
188
- form_class: type[Field] | None = None,
189
- choices_form_class: type[ChoiceField] | None = None,
190
- **kwargs,
191
- ) -> Any:
192
- # add sensible help-text
193
- _help_text = gettext("Specifieer de duur als 'DD 00:00'")
194
- help_text = f"{self.help_text} {_help_text}" if self.help_text else _help_text
195
-
196
- defaults: dict[str, Any] = {"help_text": help_text}
197
- defaults.update(kwargs)
198
- # Ensure form_class and choices_form_class are types, not strings
199
-
200
- return super().formfield(
201
- form_class=form_class,
202
- choices_form_class=choices_form_class,
203
- **defaults,
204
- )
@@ -6,7 +6,7 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: 2.15.2\n"
9
+ "Project-Id-Version: 3.0.0\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
11
  "POT-Creation-Date: 2026-08-17 15:36+0200\n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
@@ -1,5 +1,3 @@
1
- import warnings
2
-
3
1
  from rest_framework.routers import (
4
2
  APIRootView as _APIRootView,
5
3
  DefaultRouter as DRFDefaultRouter,
@@ -31,14 +29,6 @@ class NestedRegisteringMixin(DRFDefaultRouter):
31
29
  if not nested:
32
30
  return
33
31
 
34
- if "base_name" in kwargs:
35
- warnings.warn(
36
- "base_name kwarg is deprecated, use basename instead",
37
- DeprecationWarning,
38
- )
39
- kwargs["basename"] = kwargs["base_name"]
40
- del kwargs["base_name"]
41
-
42
32
  base_name = kwargs.get("basename") or self.get_default_basename(viewset)
43
33
 
44
34
  nested_router = NestedSimpleRouter(
@@ -7,6 +7,7 @@ from django.utils.translation import gettext_lazy as _
7
7
  from django.views.generic import TemplateView
8
8
 
9
9
  import requests
10
+ from jwt import InvalidKeyError
10
11
  from rest_framework import exceptions as drf_exceptions
11
12
 
12
13
  from vng_api_common.client import Client
@@ -94,7 +95,12 @@ def _test_ac_config() -> list[CheckResult]:
94
95
  auth_config = AuthorizationsConfig.get_solo()
95
96
 
96
97
  # check if AC auth is configured
97
- ac_client: Client | None = AuthorizationsConfig.get_client()
98
+ try:
99
+ ac_client: Client | None = AuthorizationsConfig.get_client()
100
+ ac_misconfigured = False
101
+ except InvalidKeyError: # ZGW auth with an empty secret
102
+ ac_client = None
103
+ ac_misconfigured = True
98
104
  has_ac_auth = ac_client.auth is not None if ac_client else False
99
105
 
100
106
  checks: list[CheckResult] = [
@@ -103,14 +109,20 @@ def _test_ac_config() -> list[CheckResult]:
103
109
  _("AC"),
104
110
  (
105
111
  auth_config.authorizations_api_service.api_root
106
- if ac_client
112
+ if auth_config.authorizations_api_service
107
113
  else _("Missing")
108
114
  ),
109
- bool(ac_client),
115
+ bool(auth_config.authorizations_api_service),
110
116
  ),
111
117
  (
112
118
  _("Credentials for AC"),
113
- _("Configured") if has_ac_auth else _("Missing"),
119
+ (
120
+ _("Misconfigured")
121
+ if ac_misconfigured
122
+ else _("Configured")
123
+ if has_ac_auth
124
+ else _("Missing")
125
+ ),
114
126
  has_ac_auth,
115
127
  ),
116
128
  ]
@@ -148,10 +160,12 @@ def _test_nrc_config(
148
160
  from notifications_api_common.models import NotificationsConfig, Subscription
149
161
 
150
162
  nrc_config = NotificationsConfig.get_solo()
151
- nrc_client = NotificationsConfig.get_client()
152
-
153
- if not nrc_client:
154
- return [(_("NRC"), _("Missing"), False)]
163
+ try:
164
+ nrc_client = NotificationsConfig.get_client()
165
+ nrc_misconfigured = False
166
+ except InvalidKeyError: # ZGW auth with an empty secret
167
+ nrc_client = None
168
+ nrc_misconfigured = True
155
169
 
156
170
  has_nrc_auth = nrc_client.auth is not None if nrc_client else False
157
171
 
@@ -167,7 +181,13 @@ def _test_nrc_config(
167
181
  ),
168
182
  (
169
183
  _("Credentials for NRC"),
170
- _("Configured") if has_nrc_auth else _("Missing"),
184
+ (
185
+ _("Misconfigured")
186
+ if nrc_misconfigured
187
+ else _("Configured")
188
+ if has_nrc_auth
189
+ else _("Missing")
190
+ ),
171
191
  has_nrc_auth,
172
192
  ),
173
193
  ]
@@ -177,7 +197,7 @@ def _test_nrc_config(
177
197
  error = False
178
198
 
179
199
  try:
180
- response: requests.Response = nrc_client.get("kanaal")
200
+ response: requests.Response = nrc_client.get("kanaal") # type: ignore
181
201
  response.raise_for_status()
182
202
  except requests.ConnectionError:
183
203
  error = True
@@ -1,39 +0,0 @@
1
- import pytest
2
- from rest_framework import status
3
- from rest_framework.reverse import reverse
4
- from rest_framework.test import APIClient
5
-
6
- from vng_api_common.authorizations.models import Applicatie, Autorisatie
7
- from vng_api_common.authorizations.utils import generate_jwt
8
- from vng_api_common.constants import ComponentTypes
9
- from vng_api_common.models import JWTSecret
10
-
11
-
12
- @pytest.mark.django_db
13
- def test_unauthorized_jwtsecret_create_forbidden():
14
- url = reverse("jwtsecret-create")
15
- client = APIClient()
16
-
17
- response = client.post(url, {"identifier": "foo", "secret": "bar"})
18
-
19
- assert response.status_code == status.HTTP_403_FORBIDDEN
20
-
21
-
22
- @pytest.mark.django_db
23
- def test_authorized_jwtsecret_create_ok():
24
- url = reverse("jwtsecret-create")
25
- client = APIClient()
26
- # set up auth
27
- JWTSecret.objects.create(identifier="pytest", secret="sekrit")
28
- app = Applicatie.objects.create(client_ids=["pytest"], label="tests")
29
- Autorisatie.objects.create(
30
- applicatie=app,
31
- component=ComponentTypes.ac,
32
- scopes=["autorisaties.credentials-registreren"],
33
- )
34
- token = generate_jwt("pytest", "sekrit", "pytest", "pytest")
35
- client.credentials(HTTP_AUTHORIZATION=token)
36
-
37
- response = client.post(url, {"identifier": "foo", "secret": "bar"})
38
-
39
- assert response.status_code == status.HTTP_201_CREATED
@@ -1 +0,0 @@
1
- __version__ = "2.15.2"
@@ -1,7 +0,0 @@
1
- from django.urls import path
2
-
3
- from .views import CreateJWTSecretView
4
-
5
- urlpatterns = [
6
- path("jwtsecret/", CreateJWTSecretView.as_view(), name="jwtsecret-create")
7
- ]
@@ -1,37 +0,0 @@
1
- import warnings
2
-
3
- from rest_framework.generics import CreateAPIView
4
-
5
- from ..models import JWTSecret
6
- from ..scopes import Scope
7
- from .permissions import JWTCreatePermission
8
- from .serializers import JWTSecretSerializer
9
-
10
-
11
- class CreateJWTSecretView(CreateAPIView):
12
- """
13
- XXX: deprecated, scheduled for removal in 3.0.
14
-
15
- The zds-token-issuer is no longer used, and maintained implementations
16
- no longer rely on this view.
17
- """
18
-
19
- action = "create"
20
- swagger_schema = None
21
-
22
- model = JWTSecret
23
- serializer_class = JWTSecretSerializer
24
- permission_classes = (JWTCreatePermission,)
25
- required_scopes = {
26
- "create": Scope("autorisaties.credentials-registreren", private=True)
27
- }
28
-
29
- @classmethod
30
- def as_view(cls, **initkwargs):
31
- warnings.warn(
32
- "The 'jwtsecret/' endpoint and CreateJWTSecretView are deprecated "
33
- "and scheduled for removal in 3.0.",
34
- category=DeprecationWarning,
35
- stacklevel=2,
36
- )
37
- return super().as_view(**initkwargs)