commonground-api-common 1.13.0__py3-none-any.whl → 2.4.1__py3-none-any.whl

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 (65) hide show
  1. commonground_api_common-1.13.0.data/scripts/patch_content_types → commonground_api_common-2.4.1.data/scripts/generate_schema +2 -4
  2. {commonground_api_common-1.13.0.dist-info → commonground_api_common-2.4.1.dist-info}/METADATA +45 -37
  3. {commonground_api_common-1.13.0.dist-info → commonground_api_common-2.4.1.dist-info}/RECORD +45 -50
  4. {commonground_api_common-1.13.0.dist-info → commonground_api_common-2.4.1.dist-info}/WHEEL +1 -1
  5. vng_api_common/__init__.py +1 -1
  6. vng_api_common/admin.py +1 -20
  7. vng_api_common/api/views.py +1 -0
  8. vng_api_common/apps.py +44 -26
  9. vng_api_common/audittrails/utils.py +44 -0
  10. vng_api_common/authorizations/admin.py +1 -1
  11. vng_api_common/authorizations/middleware.py +244 -0
  12. vng_api_common/authorizations/migrations/0016_remove_authorizationsconfig_api_root_and_more.py +76 -0
  13. vng_api_common/authorizations/models.py +62 -3
  14. vng_api_common/authorizations/utils.py +17 -0
  15. vng_api_common/client.py +61 -29
  16. vng_api_common/conf/api.py +33 -48
  17. vng_api_common/contrib/setup_configuration/models.py +32 -0
  18. vng_api_common/contrib/setup_configuration/steps.py +46 -0
  19. vng_api_common/extensions/file.py +26 -0
  20. vng_api_common/extensions/gegevensgroep.py +16 -0
  21. vng_api_common/extensions/geojson.py +270 -0
  22. vng_api_common/extensions/hyperlink.py +37 -0
  23. vng_api_common/extensions/polymorphic.py +68 -0
  24. vng_api_common/extensions/query.py +20 -0
  25. vng_api_common/filters.py +0 -1
  26. vng_api_common/generators.py +12 -113
  27. vng_api_common/middleware.py +1 -227
  28. vng_api_common/migrations/0006_delete_apicredential.py +120 -0
  29. vng_api_common/mocks.py +4 -1
  30. vng_api_common/models.py +10 -111
  31. vng_api_common/notifications/api/views.py +8 -8
  32. vng_api_common/notifications/handlers.py +8 -3
  33. vng_api_common/notifications/migrations/0011_remove_subscription_config_and_more.py +23 -0
  34. vng_api_common/oas.py +6 -10
  35. vng_api_common/pagination.py +10 -0
  36. vng_api_common/routers.py +3 -3
  37. vng_api_common/schema.py +414 -158
  38. vng_api_common/tests/schema.py +13 -0
  39. vng_api_common/utils.py +0 -22
  40. vng_api_common/validators.py +92 -73
  41. vng_api_common/views.py +35 -20
  42. commonground_api_common-1.13.0.data/scripts/generate_schema +0 -39
  43. commonground_api_common-1.13.0.data/scripts/use_external_components +0 -16
  44. vng_api_common/inspectors/cache.py +0 -57
  45. vng_api_common/inspectors/fields.py +0 -126
  46. vng_api_common/inspectors/files.py +0 -121
  47. vng_api_common/inspectors/geojson.py +0 -360
  48. vng_api_common/inspectors/polymorphic.py +0 -72
  49. vng_api_common/inspectors/query.py +0 -91
  50. vng_api_common/inspectors/utils.py +0 -40
  51. vng_api_common/inspectors/view.py +0 -547
  52. vng_api_common/management/commands/generate_autorisaties.py +0 -43
  53. vng_api_common/management/commands/generate_notificaties.py +0 -40
  54. vng_api_common/management/commands/generate_swagger.py +0 -197
  55. vng_api_common/management/commands/patch_error_contenttypes.py +0 -61
  56. vng_api_common/management/commands/use_external_components.py +0 -94
  57. vng_api_common/notifications/constants.py +0 -3
  58. vng_api_common/notifications/models.py +0 -97
  59. vng_api_common/templates/vng_api_common/api_schema_to_markdown_table.md +0 -16
  60. vng_api_common/templates/vng_api_common/autorisaties.md +0 -15
  61. vng_api_common/templates/vng_api_common/notificaties.md +0 -24
  62. {commonground_api_common-1.13.0.dist-info → commonground_api_common-2.4.1.dist-info}/top_level.txt +0 -0
  63. /vng_api_common/{inspectors → contrib}/__init__.py +0 -0
  64. /vng_api_common/{management → contrib/setup_configuration}/__init__.py +0 -0
  65. /vng_api_common/{management/commands → extensions}/__init__.py +0 -0
@@ -9,7 +9,5 @@ if [[ -z "$VIRTUAL_ENV" ]]; then
9
9
  exit 1
10
10
  fi
11
11
 
12
- source_file=${1:-./src/openapi.yaml}
13
- manage=${MANAGE:-src/manage.py}
14
-
15
- python $manage patch_error_contenttypes $source_file
12
+ echo "generate schema"
13
+ src/manage.py spectacular --file src/openapi.yaml --validate
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: commonground-api-common
3
- Version: 1.13.0
3
+ Version: 2.4.1
4
4
  Summary: Commonground API tooling
5
5
  Home-page: https://github.com/maykinmedia/commonground-api-common
6
6
  Author: Maykin Media, VNG-Realisatie
@@ -9,7 +9,6 @@ License: EUPL 1.2
9
9
  Keywords: openapi,swagger,django
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Framework :: Django
12
- Classifier: Framework :: Django :: 3.2
13
12
  Classifier: Framework :: Django :: 4.2
14
13
  Classifier: Intended Audience :: Developers
15
14
  Classifier: Operating System :: Unix
@@ -17,50 +16,62 @@ Classifier: Operating System :: MacOS
17
16
  Classifier: Operating System :: Microsoft :: Windows
18
17
  Classifier: Programming Language :: Python :: 3
19
18
  Classifier: Programming Language :: Python :: 3 :: Only
20
- Classifier: Programming Language :: Python :: 3.8
21
- Classifier: Programming Language :: Python :: 3.9
22
19
  Classifier: Programming Language :: Python :: 3.10
23
20
  Classifier: Programming Language :: Python :: 3.11
24
21
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
- Requires-Dist: django >=3.2.0
26
- Requires-Dist: django-filter >=2.0
22
+ Requires-Dist: django>=4.2.0
23
+ Requires-Dist: django-filter<=25.1,>=23.1
27
24
  Requires-Dist: django-solo
28
- Requires-Dist: djangorestframework >=3.11.0
29
- Requires-Dist: djangorestframework-camel-case >=1.2.0
25
+ Requires-Dist: djangorestframework>=3.15.0
26
+ Requires-Dist: djangorestframework_camel_case>=1.2.0
30
27
  Requires-Dist: django-rest-framework-condition
31
- Requires-Dist: drf-yasg >=1.20.0
32
- Requires-Dist: drf-nested-routers >=0.93.3
33
- Requires-Dist: gemma-zds-client >=0.14.0
28
+ Requires-Dist: drf-nested-routers>=0.94.1
29
+ Requires-Dist: drf-spectacular
34
30
  Requires-Dist: iso-639
35
31
  Requires-Dist: isodate
36
- Requires-Dist: notifications-api-common >=0.2.2
32
+ Requires-Dist: notifications-api-common>=0.3.1
33
+ Requires-Dist: zgw-consumers>=0.35.1
37
34
  Requires-Dist: oyaml
38
- Requires-Dist: PyJWT >=2.0.0
35
+ Requires-Dist: PyJWT>=2.1.1
39
36
  Requires-Dist: requests
37
+ Requires-Dist: requests-mock
40
38
  Requires-Dist: coreapi
39
+ Requires-Dist: ape-pie
40
+ Provides-Extra: markdown-docs
41
+ Requires-Dist: django-markup<=1.3; extra == "markdown-docs"
42
+ Requires-Dist: markdown; extra == "markdown-docs"
43
+ Provides-Extra: djangorestframework-gis
44
+ Requires-Dist: djangorestframework-gis>=1.0; extra == "djangorestframework-gis"
45
+ Provides-Extra: drf-extra-fields
46
+ Requires-Dist: drf-extra-fields>=3.7.0; extra == "drf-extra-fields"
47
+ Provides-Extra: tests
48
+ Requires-Dist: psycopg2; extra == "tests"
49
+ Requires-Dist: pytest; extra == "tests"
50
+ Requires-Dist: pytest-django; extra == "tests"
51
+ Requires-Dist: pytest-dotenv; extra == "tests"
52
+ Requires-Dist: pytest-factoryboy; extra == "tests"
53
+ Requires-Dist: tox; extra == "tests"
54
+ Requires-Dist: isort; extra == "tests"
55
+ Requires-Dist: black; extra == "tests"
56
+ Requires-Dist: requests-mock; extra == "tests"
57
+ Requires-Dist: freezegun; extra == "tests"
58
+ Requires-Dist: zgw-consumers-oas; extra == "tests"
59
+ Requires-Dist: djangorestframework-gis; extra == "tests"
60
+ Requires-Dist: drf-extra-fields; extra == "tests"
61
+ Provides-Extra: testutils
62
+ Requires-Dist: zgw-consumers-oas; extra == "testutils"
63
+ Provides-Extra: setup-configuration
64
+ Requires-Dist: django-setup-configuration>=0.4.0; extra == "setup-configuration"
65
+ Provides-Extra: pep8
66
+ Requires-Dist: flake8; extra == "pep8"
41
67
  Provides-Extra: coverage
42
- Requires-Dist: pytest-cov ; extra == 'coverage'
68
+ Requires-Dist: pytest-cov; extra == "coverage"
43
69
  Provides-Extra: docs
44
- Requires-Dist: psycopg2 ; extra == 'docs'
45
- Requires-Dist: sphinx ; extra == 'docs'
46
- Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
47
- Provides-Extra: markdown_docs
48
- Requires-Dist: django-markup <=1.3 ; extra == 'markdown_docs'
49
- Requires-Dist: markdown ; extra == 'markdown_docs'
50
- Provides-Extra: pep8
51
- Requires-Dist: flake8 ; extra == 'pep8'
70
+ Requires-Dist: psycopg2; extra == "docs"
71
+ Requires-Dist: sphinx; extra == "docs"
72
+ Requires-Dist: sphinx-rtd-theme; extra == "docs"
52
73
  Provides-Extra: release
53
- Requires-Dist: bump2version ; extra == 'release'
54
- Provides-Extra: tests
55
- Requires-Dist: psycopg2 ; extra == 'tests'
56
- Requires-Dist: pytest ; extra == 'tests'
57
- Requires-Dist: pytest-django ; extra == 'tests'
58
- Requires-Dist: pytest-factoryboy ; extra == 'tests'
59
- Requires-Dist: tox ; extra == 'tests'
60
- Requires-Dist: isort ; extra == 'tests'
61
- Requires-Dist: black ; extra == 'tests'
62
- Requires-Dist: requests-mock ; extra == 'tests'
63
- Requires-Dist: freezegun ; extra == 'tests'
74
+ Requires-Dist: bump2version; extra == "release"
64
75
 
65
76
  ===================================================
66
77
  Commonground-API-common - Tooling voor RESTful APIs
@@ -99,9 +110,6 @@ Features
99
110
  * ``UniekeIdentificatieValidator`` (in combinatie met organisatie)
100
111
  * ``InformatieObjectUniqueValidator`` om te valideren dat M2M entries
101
112
  slechts eenmalig voorkomen
102
- * ``ObjectInformatieObjectValidator`` om te valideren dat de synchronisatie
103
- van een object-informatieobject relatie pas kan nadat deze relatie in het
104
- DRC gemaakt is
105
113
  * ``IsImmutableValidator`` - valideer dat bepaalde velden niet gewijzigd
106
114
  worden bij een (partial) update, maar wel mogen gezet worden bij een create
107
115
  * ``ResourceValidator`` - valideer dat een URL een bepaalde resource ontsluit
@@ -1,12 +1,10 @@
1
- commonground_api_common-1.13.0.data/scripts/generate_schema,sha256=UKhznmbHX1zUjPx8G3XtxUPQiqnyd3TOIXs27Tnjl7U,952
2
- commonground_api_common-1.13.0.data/scripts/patch_content_types,sha256=dpGpYrZOZe8O5CHWd0F0QnP6Wk_7lK6DyuVZpBPr4mY,319
3
- commonground_api_common-1.13.0.data/scripts/use_external_components,sha256=xvvbngO2aDUagVXv4xRUqPaVtH_eOaVMWLQ8lyAPhEA,369
4
- vng_api_common/__init__.py,sha256=qyRV1Az4m5yhA_Nx1r_oZmIwZAZJpLTJdDw9oDJaqr8,23
5
- vng_api_common/admin.py,sha256=oWKpUl5yjeYOIsh60ruCmBDyPURGq4ALle4zGhlUQsE,902
6
- vng_api_common/apps.py,sha256=wOQuxUImMpH39R0JrDdCZp5ADaUM8jU8vFPFW9froSs,3458
1
+ commonground_api_common-2.4.1.data/scripts/generate_schema,sha256=OpKgzlFc_uzA3TVW_vHSYXAD_feLaCdTEnkWjIcxVzA,280
2
+ vng_api_common/__init__.py,sha256=LgDSW5laOqA_7i2VW0cZ9QumZREigUxs3ZCBzJ1EG0o,22
3
+ vng_api_common/admin.py,sha256=iFtUPGf-ha0I-bXgq8QIFrP23Kzk_H3FlgAjt0U-ip0,259
4
+ vng_api_common/apps.py,sha256=QQiJXRmjX9Q91oh0P9fvVnHe3NSYd1cEcUUBw0HLBCA,3690
7
5
  vng_api_common/checks.py,sha256=tOyfV7MMLGh4anrd_W30LvJCxiyQ4sFs1mGd9mtrEc0,1175
8
6
  vng_api_common/choices.py,sha256=dboFRoM34GpRUpxB9WexexccopcQSogu1QIyY4B9ACY,541
9
- vng_api_common/client.py,sha256=IChAkSlxmu0_ZHLmfCo_lGH8MMnbahCkcYXm3_ujUAo,1203
7
+ vng_api_common/client.py,sha256=HNLc86RwczAudPBDgH_zQncE19OUaLyhSnacQRxJO0c,1972
10
8
  vng_api_common/compat.py,sha256=n4jDFSPzXnh-D_VXjftKMCJYj_q_t6eJrUTWLayl8jQ,768
11
9
  vng_api_common/constants.py,sha256=yYtnYId9alRuhGBoqaO8lkXYi_ATi2FW-wEDGRpiRuQ,10948
12
10
  vng_api_common/decorators.py,sha256=_p-mAyi5Na_-ll00ErcQ3mRoZNCsJzYDAliXn50Bmes,278
@@ -15,37 +13,39 @@ vng_api_common/doc.py,sha256=a4Wm6Y-Va-tBsLwZFjPX_oA4PppkDR4wpIiw9q7NLd4,1167
15
13
  vng_api_common/exception_handling.py,sha256=Z8Si1-GPWaTtsgaFI_zLOvlnLVLM8jqfgFIimX8eo-8,4759
16
14
  vng_api_common/exceptions.py,sha256=7Qk5dlETjoQjZeGRKei4PkeLACLoZOMrMiuyi-yn6Kk,615
17
15
  vng_api_common/fields.py,sha256=1911m0CKEU-5-2t_h5P-D2YjC8BGosx8t8FQ-SGfgFw,6335
18
- vng_api_common/filters.py,sha256=77m9s3V6woMqE7uOQoqzit7w1AQpWcGqZozzQFdKAYs,5681
16
+ vng_api_common/filters.py,sha256=oPivwrES1BQgSUg1jD9hJab7dyoO3VbZDVbbRRiW2SQ,5618
19
17
  vng_api_common/filtersets.py,sha256=Ioarp5t_cz6Hf3iIcP2Rc0D7tGYhcMQPVdIJJ2dvtv8,867
20
- vng_api_common/generators.py,sha256=tD7ZyyFgCQ3KiktpBFtn5YiVdl3jioGxzyvkEZFYdQQ,4911
18
+ vng_api_common/generators.py,sha256=88yQN5-vRFUegfzQcsZtlpbtQyn_zZQwvs20OidPK7M,1239
21
19
  vng_api_common/geo.py,sha256=AZbrw0rwGYOmaSUk8JJSkx-4_tVrfT_cgggh9omRwhU,1862
22
- vng_api_common/middleware.py,sha256=DhdGA_9_bk7bYr-keHEt4F_VS6IkYJmzzAhkjqnzeYw,8857
23
- vng_api_common/mocks.py,sha256=JjpJyVmHReRUXbwDi2cnmuq4NYI1hLRr_W962TIhN6Y,6118
24
- vng_api_common/models.py,sha256=XXNpoOjSuA_9Ep2hIAm3jEELj6i66QFWHqdJbt5v4do,4810
25
- vng_api_common/oas.py,sha256=FiqBZ3n36q-fPRZEgpmLDxjnqmoAKmaTKZ-FlFcuRp0,2712
20
+ vng_api_common/middleware.py,sha256=2DRw0hPpvUMqwoH1Ze8S7tDB16lmj4Bnd6vN5ijkGM8,875
21
+ vng_api_common/mocks.py,sha256=0sELLs-uy2ndu29m5P6FN_p1ehNhYv7IoRayYPs379Y,6200
22
+ vng_api_common/models.py,sha256=3WgpCWQpkCOrMCtqp7EbnP681II43Sg_cch8ZOm4EcU,1707
23
+ vng_api_common/oas.py,sha256=ATqqNM7zkDMoK3E-cxNh_c65n6YCrP96KxCFYfkEVK0,2523
24
+ vng_api_common/pagination.py,sha256=sI6VJ5AHDBhtNRQ8OFrD2heQK-NxaL_6n73ijiqWDLc,255
26
25
  vng_api_common/permissions.py,sha256=ayDxk9Wt8j0yO57FhZ8XaRkPET4lAqd8SSw3m4o3EGs,7562
27
26
  vng_api_common/polymorphism.py,sha256=N-x39pG2unD4N0ZbxFvuhE8ibPaJ0eKeqfvAJW3NnEU,6623
28
- vng_api_common/routers.py,sha256=Tq_V-ewibFfcMl-0TS91_jvel6SxQGF-649GSKqlexE,1906
29
- vng_api_common/schema.py,sha256=1Bt9dH67AOLpfPNF7Q4IH1cXJeaIevSamZQzJ8DJ7ks,6144
27
+ vng_api_common/routers.py,sha256=hEnhBulkgMM-7W_lYaykKTgTBj3-avl7DGsR9P7BbTU,1897
28
+ vng_api_common/schema.py,sha256=axs2Q8IXwpHNd5WscQg5xOErL6bWhP8WFItTt4xCFO4,16305
30
29
  vng_api_common/scopes.py,sha256=PGs6CkXorAAdWXGFY1bSy-jmsPn122Njen9aFFOpFIQ,2351
31
30
  vng_api_common/search.py,sha256=yehS6boCOk1JXLCqAMU-B62hWtbTBSf_WKIVGPgp0Mg,1045
32
31
  vng_api_common/serializers.py,sha256=7_7IotlRfVb0woe6Wy79l_el3sPzrSY8-bfiYLbEUqs,10162
33
32
  vng_api_common/urls.py,sha256=9IWHYLlEIIHNaZ_Zq02qNQ2HJpETb7o-89r7yBM_tQs,270
34
- vng_api_common/utils.py,sha256=CFmG4xVabUA4GcWiOEbGSaL5mdFi8njsspTXRl8yjCY,9057
35
- vng_api_common/validators.py,sha256=T93C2rdNA4vFBi33mGlE2Cb5cQZaMPTsMvcFRz3igYU,12009
33
+ vng_api_common/utils.py,sha256=zrtpssOA-NcJHhAlxioBiXeY3G2R_uf0l8oWkDD_EiE,8511
34
+ vng_api_common/validators.py,sha256=ejaFZvFXFaBlqxjA2_07NSHKHlG5pejrfC_GHjwCj6E,12852
36
35
  vng_api_common/version.py,sha256=yJV9_yTM7Qnzg0zGNkJQkN9Uai3I_ZUkcyseJRPRk5I,129
37
- vng_api_common/views.py,sha256=2fraDBtq9x2hMauRuOKkn6cDUw0IYdzfPKTxFFRRFXk,7309
36
+ vng_api_common/views.py,sha256=VnvlpDmzBeSkDB9a-pBUkqBncKO7TT-6bY5zbYP4QOk,7607
38
37
  vng_api_common/viewsets.py,sha256=z5pzvSymFiiuCjP_-uuW-3OJKZY_psPAt8fWeWySU0c,2278
39
38
  vng_api_common/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
39
  vng_api_common/api/permissions.py,sha256=okbwiscxlAtbQWTCRDLL2reOxgj0rRDZeDcrtXAYq00,739
41
40
  vng_api_common/api/serializers.py,sha256=F1od8SZxgIlGVTSd_x5eTxacL6x8HbNn35O9z1zjio4,213
42
41
  vng_api_common/api/urls.py,sha256=Ei-bpoGhZQvcSYx9dY_vh3ESYDaSt0Uqlr6fS0MU46M,167
43
- vng_api_common/api/views.py,sha256=m9wbLVb4oPX-LJWor9oHkZCfxIJjNqpVG43aXeyQ2j4,491
42
+ vng_api_common/api/views.py,sha256=qtgcSFg5oXdaELFT70g6jGkVmBhCcsVoKoItOroi02k,513
44
43
  vng_api_common/audittrails/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
44
  vng_api_common/audittrails/admin.py,sha256=mrRK9KhvFlRWcmsq-DM9cJdwtpBUciMa4DvtEIYfirQ,301
46
45
  vng_api_common/audittrails/apps.py,sha256=eM4RMMgqXq_Hm1Il-dUlO0rtXJVP0DgAFQBW25epzdw,111
47
46
  vng_api_common/audittrails/audits.py,sha256=44_vry_9XPZoyKUJeMhhf4xr0OsCndgzGGxRqa65_d0,337
48
47
  vng_api_common/audittrails/models.py,sha256=O1GhyJlZaDYPTwKcZE45J2Fl1q02BGtYciu-QdjzBsQ,3596
48
+ vng_api_common/audittrails/utils.py,sha256=fhDQ-iaSGE8mWkcE9LXySI_pYfn7Xpao-n1m699h_hk,1316
49
49
  vng_api_common/audittrails/viewsets.py,sha256=K0AMPHYU6w_Z1cAww_itzfHjeqzZhIAi1m3cUHcXp30,8105
50
50
  vng_api_common/audittrails/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  vng_api_common/audittrails/api/scopes.py,sha256=fL3PlX284g-mGFlcIzc2UWcyFBNZI6apnnhbFulZN2I,206
@@ -74,9 +74,11 @@ vng_api_common/audittrails/migrations/0018_auto_20221212_0745.py,sha256=pf4NBYI0
74
74
  vng_api_common/audittrails/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
75
  vng_api_common/audittrails/migrations/_operations.py,sha256=UOMv0zAK8CIQ73cSu6wwQG_hkW46Isdy7JCnljn8GII,3280
76
76
  vng_api_common/authorizations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
- vng_api_common/authorizations/admin.py,sha256=BmJQgNH7KlDB3flAXrSMm_w0NowpJrDYWDY61RZcKCI,795
78
- vng_api_common/authorizations/models.py,sha256=n1hJci5dQQ_TmcPTAD34QVrBoHR9_z-hloQ0VXi2bzI,3657
77
+ vng_api_common/authorizations/admin.py,sha256=Tk0yYKbb005E0XZaYYWbucMf_K5M8Hhz62wSBDi8rhM,813
78
+ vng_api_common/authorizations/middleware.py,sha256=KJ3znCXPRMOVqSur62SmBjvC6RcKxtcWq1rzaHdYR98,8416
79
+ vng_api_common/authorizations/models.py,sha256=0bcZwRc0ntIlPzUM7I8R5yhQRrnXvAZ_l9FpTnpbnxk,5207
79
80
  vng_api_common/authorizations/serializers.py,sha256=3HeKWEqhI3UWwI8SttC4rEID-Epbk7SWsC-bEjolbaw,5151
81
+ vng_api_common/authorizations/utils.py,sha256=VCXdU4q3CQ1cvuYkg1dPWSbZym1Ufoz5gSmbHYkQcgw,521
80
82
  vng_api_common/authorizations/validators.py,sha256=u7fKm0QgGy8fiAeYmIEB9Gy-yIE9C-tC2ZpnNQBXPso,2816
81
83
  vng_api_common/authorizations/migrations/0001_initial.py,sha256=ooAZtQeDtWgDxXzAP-KnSyyFYLRPM-PMrK5RgOnTPjQ,4360
82
84
  vng_api_common/authorizations/migrations/0002_authorizationsconfig.py,sha256=m4taH6ClHI-YHYGGOKaq_qYXGx9lq1InXOGLQKg9MSw,1364
@@ -93,6 +95,7 @@ vng_api_common/authorizations/migrations/0012_auto_20200619_0545.py,sha256=ECvJJ
93
95
  vng_api_common/authorizations/migrations/0013_auto_20201207_0846.py,sha256=fyJ0HpQMM0d1UyK9AK5_c7S_as_NejzrOdbMYiIogOA,1788
94
96
  vng_api_common/authorizations/migrations/0014_auto_20201221_0905.py,sha256=pkg7Y9yvUIY-QB9elvCxfR7OZJ3xMBIha_4WSZeDlwY,1659
95
97
  vng_api_common/authorizations/migrations/0015_auto_20220318_1608.py,sha256=jR1MDuqapBZU4bYVx0V3MRauRpDk_DtCVcBSe7gmtUA,1751
98
+ vng_api_common/authorizations/migrations/0016_remove_authorizationsconfig_api_root_and_more.py,sha256=-UbTWExHaPL0O8585mm4_OFCm8xJXAmfwmU7V0ysSgg,2407
96
99
  vng_api_common/authorizations/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
100
  vng_api_common/caching/__init__.py,sha256=v_FC6HaHESwr_J94TWzaQBKtIjDLnsQADvqHylEW7g8,687
98
101
  vng_api_common/caching/decorators.py,sha256=lU5dnBjD9aHjoYaV32FlYxY7VFZPdMZe26fVDa_h3Q4,1804
@@ -102,41 +105,35 @@ vng_api_common/caching/models.py,sha256=RroS9HFiKNXDV59Odh0x8BO8Az8E81v4gwuprF1A
102
105
  vng_api_common/caching/registry.py,sha256=mY1r99x7m0DQ1BN9lZF2zMjFj_oDNq7urxDkOH7-8Yg,6205
103
106
  vng_api_common/caching/signals.py,sha256=78ej5cVan-JpNHKzZNAfs0m2ON_TXKphe8ZKtP-6FVY,4615
104
107
  vng_api_common/conf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
- vng_api_common/conf/api.py,sha256=m7ITWOQTZL0_4gh7f0K_MYcFp8KcoT-IxyhzZGrBS_8,4436
108
+ vng_api_common/conf/api.py,sha256=Lx3Kk7S7mKxeaUr0dm6jbKrEh4WI2gye4i7QxN2x69E,3150
109
+ vng_api_common/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
+ vng_api_common/contrib/setup_configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
+ vng_api_common/contrib/setup_configuration/models.py,sha256=ztev7KDGW0ESLl6jSuLx0tlNV58IOL3ibYEfVmjfv2Y,920
112
+ vng_api_common/contrib/setup_configuration/steps.py,sha256=3jYRdHFlPq5zR-T-SPYTDp_Aipy0JK1HaJFrSgH4Vd0,1680
106
113
  vng_api_common/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
114
  vng_api_common/db/operations.py,sha256=3vj9zD4EntMSmYsNGN1pRDjAcVM68MESDdoAk9wl0U0,3333
108
- vng_api_common/inspectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
- vng_api_common/inspectors/cache.py,sha256=6h2ckYd6RGxluPhdXZbxehOQNsb5yrWTMiLknTbZx-E,1890
110
- vng_api_common/inspectors/fields.py,sha256=XgD6K-KKzWVbxKb0kG92bNOsqLuuS_ywjidP359VWDU,3980
111
- vng_api_common/inspectors/files.py,sha256=kedBFCLS0H8lopVgIa7SpBrwXgk6E7Hd8xZT65P0TOE,4385
112
- vng_api_common/inspectors/geojson.py,sha256=Vs6PsY5hY_zlkEko-5nvj_QIO0UKuoSlu2ONpW5Z65s,12575
113
- vng_api_common/inspectors/polymorphic.py,sha256=4U_wjmcBwWCbTPvd0ojFCdmtuyJShy7ORChO2JqKjvs,2627
114
- vng_api_common/inspectors/query.py,sha256=pl_M84BCtgVtBbc_5YtmsImU8c416hYOuDTo91ApFX4,3802
115
- vng_api_common/inspectors/utils.py,sha256=uLyB_Giw7B2flMiBB_HwCpxOs-QcTUIHjHkE0xUmPfo,1481
116
- vng_api_common/inspectors/view.py,sha256=f28MFNqHUE3LSWgYHuJB2PwjRszIAqPU_fBk75Utl3w,20425
115
+ vng_api_common/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
+ vng_api_common/extensions/file.py,sha256=tvOiSYbu0CrVKefgO_nOj1af1L0JjShec3VkR-i-IWE,950
117
+ vng_api_common/extensions/gegevensgroep.py,sha256=mfwXpQ8Zq8Tevv_bt28OZqv8a9u6L3yJEKQqXerKzBI,518
118
+ vng_api_common/extensions/geojson.py,sha256=mVqry8F7RQm0YIK3m5scazePB7KprffQy02RNA1FOIE,9217
119
+ vng_api_common/extensions/hyperlink.py,sha256=jadfiQ2vdJ78q-dXo3YOuDgv54zZWm8Y0nzg21aB_HE,1360
120
+ vng_api_common/extensions/polymorphic.py,sha256=Hjzn1VAx3E0Eafb7NctkNQuDYJeh6ln0KHgVNRjHG1s,2768
121
+ vng_api_common/extensions/query.py,sha256=mXxv2aiyP-kHmXUrszHqxEKhAedUugwVJZljQ5nPLcY,585
117
122
  vng_api_common/locale/nl/LC_MESSAGES/django.mo,sha256=w1sFqpNIcpHWbNOFpKjVUmA3idit-Q1SH2wE5h0nXPU,6211
118
123
  vng_api_common/locale/nl/LC_MESSAGES/django.po,sha256=UVAmaSTntaUC73IY4rAN-iT3FoIpLSh4bj-8DyqcwPw,19495
119
- vng_api_common/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
- vng_api_common/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
- vng_api_common/management/commands/generate_autorisaties.py,sha256=kMaZQo6e6vCXA9y0e6P2PlxObyjHMyNynRcM4WtzVZI,1130
122
- vng_api_common/management/commands/generate_notificaties.py,sha256=0p7CkLkQo-BeV2IljGv0rcRNw2aWY_HwlvybjggZ_gs,1090
123
- vng_api_common/management/commands/generate_swagger.py,sha256=t9_w2cEEa8ibMzFgg6Nl-8amgVj3qOc4hD44R89arHk,6134
124
- vng_api_common/management/commands/patch_error_contenttypes.py,sha256=xyFIQ4JRutLZCTcLrWqon0FDeAJCw1bkVg4jM8-EM24,2025
125
- vng_api_common/management/commands/use_external_components.py,sha256=FLkhZ5jAIZoAXQWwxqu4yT94LiBJ4GRr6g4ZRp7b_Eg,2936
126
124
  vng_api_common/migrations/0001_initial.py,sha256=frE83rux6uVHK4v-1fsb_1C00TBQQ6koFBA3DoVPHmk,895
127
125
  vng_api_common/migrations/0002_apicredential.py,sha256=AYgkLMizI0g-Ogth8j_FVJHTDDI3bWzQgZzuQeABzaU,1083
128
126
  vng_api_common/migrations/0003_auto_20190417_1145.py,sha256=0ABqDggAdjmZxhSsLrMb2ZBwTcR1BOWo1Tn8StfiG0A,1001
129
127
  vng_api_common/migrations/0004_auto_20190517_0903.py,sha256=-Qcei-AJx4SXbEYMojmYInhV74uKtDncGP1PLs6hn0M,707
130
128
  vng_api_common/migrations/0005_auto_20190614_1346.py,sha256=5n8SVpbEJzLrSx-7d446Vy1--SaDfO05hAltrSRQx6o,2949
129
+ vng_api_common/migrations/0006_delete_apicredential.py,sha256=lN9NFSbwMGlrREe_5LtqxiPk74_1iCbeoMhY5B7pXjc,3681
131
130
  vng_api_common/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
131
  vng_api_common/notifications/__init__.py,sha256=UvHr_M8s-dZjCQOp60rLDqP_T3D0CgRIqc8ry5bIM8c,229
133
132
  vng_api_common/notifications/apps.py,sha256=7grk1hxQn5usAWV-sWATmNJ4TwSvT3izXVvV-L-zb_s,208
134
- vng_api_common/notifications/constants.py,sha256=R9c0Ejzw2nt-PRk0dCFbC8ugP_mTdgNJHnZ7gvzrTVE,156
135
- vng_api_common/notifications/handlers.py,sha256=-r52nIKbHdFUxE7hob9PiFRe0D3cizhkxbW8qhpK-Ks,2005
136
- vng_api_common/notifications/models.py,sha256=Ez3JYeM7BNSiFYtxAtVxWUWDc8t7jOFQlRTjrtE6SlI,2942
133
+ vng_api_common/notifications/handlers.py,sha256=xjuE_qn5h4gbRNGMsTaCTrHIjXTBcF8na6oMURGAuUU,2089
137
134
  vng_api_common/notifications/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
135
  vng_api_common/notifications/api/urls.py,sha256=c1T_6tuRpgN0V80Xg_ehZzGGlF1FNMmHdBEPAjR736I,164
139
- vng_api_common/notifications/api/views.py,sha256=nUqqAANsxzWx5zDbW0Mbi5CONRdeAirvPrwjSXiP6ao,2312
136
+ vng_api_common/notifications/api/views.py,sha256=DmeDAJCY-jlwTNZ_YwBSjud04x2ZzAcKMNgCib93IAg,2313
140
137
  vng_api_common/notifications/migrations/0001_initial.py,sha256=zEIVIB--6FStaTl3r9GCXxHL1cSCWRO3T90rEpJr3hY,3049
141
138
  vng_api_common/notifications/migrations/0002_subscription__subscription.py,sha256=eqaj6-FAl7vuCswdvin9Lf8nzjP8U6WqVQO4opNKKCc,550
142
139
  vng_api_common/notifications/migrations/0003_auto_20190319_1048.py,sha256=C-ccYUwQPNCjTctpDDFhnQbm_OcpAlTjYQbEuiEi-ys,987
@@ -147,6 +144,7 @@ vng_api_common/notifications/migrations/0007_auto_20190429_1442.py,sha256=S9Q_WC
147
144
  vng_api_common/notifications/migrations/0008_auto_20190502_0415.py,sha256=Wwh3BsSg0r1I7HZZmrcCHEQMLmaeWEjbqYKapVafb2s,523
148
145
  vng_api_common/notifications/migrations/0009_auto_20190729_0427.py,sha256=Bfw-Axr9lNiXL8Ghns3RK33Dmjvpd_E5MWC740WJlb8,529
149
146
  vng_api_common/notifications/migrations/0010_auto_20220704_1419.py,sha256=Y57o91fbzWZyQO4tgg9Tn4r99hRErRlcrzpLii9Tm3I,1593
147
+ vng_api_common/notifications/migrations/0011_remove_subscription_config_and_more.py,sha256=3FA3rlpRDp8FB8Azl22pv7C4i1oUAQkRHHK9PRpNeJU,499
150
148
  vng_api_common/notifications/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
149
  vng_api_common/static/vng_api_common/css/screen.css,sha256=1Zt-yVFbm8qR9LakcYTF5x8p_91r8dMA-VRjIadYeP0,4674
152
150
  vng_api_common/static/vng_api_common/css/admin/admin_overrides.css,sha256=81xuIyYfiTgq8O9h5NsSf-v8Sx885ICSEx1f-5fWy4U,1748
@@ -170,11 +168,8 @@ vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-solid-900.svg,
170
168
  vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-solid-900.ttf,sha256=elj3Qf9TmvlHmP9WHJGOWEHX5hZOkMvle-_exKFvak4,186444
171
169
  vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-solid-900.woff,sha256=IEZK67_1TMF3dkl85BEsM3SlSzj3ul9Y7sEhdBSdZ0I,96256
172
170
  vng_api_common/static/vng_api_common/libs/fontawesome/webfonts/fa-solid-900.woff2,sha256=8YxIaoAXXPAv7g4FwrSs2GwEzbrs7GHB75H5IFCbXv4,74256
173
- vng_api_common/templates/vng_api_common/api_schema_to_markdown_table.md,sha256=XKs4D32SC4HRdths3jdeloqwfLi3hO2DuLsFDv6-25w,598
174
- vng_api_common/templates/vng_api_common/autorisaties.md,sha256=yGZVwIQwyJ3W3-LqHHUm6vwdSiAxVovtH5WYJVPktvs,402
175
171
  vng_api_common/templates/vng_api_common/index.html,sha256=jZyzxHnZABoTxNFPKbUJGoU6ZJuSeuM8xt2fVr7-hSw,1684
176
172
  vng_api_common/templates/vng_api_common/master.html,sha256=p7xZSpuTaf0cyKU31N5o_1BWwiwEZhLxvte60KMo5v8,3417
177
- vng_api_common/templates/vng_api_common/notificaties.md,sha256=VNQz_CtYGDw24QJxdfkUfOvHvgv9__O072gmQCqh_Pg,856
178
173
  vng_api_common/templates/vng_api_common/view_config.html,sha256=_8OhafH-Y3b_gOl3GukqYbh2G7XXizUdaOrudGWa36U,881
179
174
  vng_api_common/templates/vng_api_common/admin/base_site.html,sha256=mMr_9L7dugHEvULZE0CB18mKdeXs92oPLi1CDgXyqnw,1739
180
175
  vng_api_common/templates/vng_api_common/includes/kanalen_card.html,sha256=jPKpms8cP4MZaHO7_NgBJEhFvvBsGQ3s23x1EUxSw5c,330
@@ -185,9 +180,9 @@ vng_api_common/templatetags/vng_api_common.py,sha256=j4Fu4rNErLcXStBbuZ9Zd_xD_ft
185
180
  vng_api_common/tests/__init__.py,sha256=zBI2etwu2lEkKkIN1_cPuugJgPcoohQuJbdiUGtoceU,426
186
181
  vng_api_common/tests/auth.py,sha256=IKDWTEFv4Bign4F70-ibsFcnJqRxEJaXvqaPQJWa1xY,4544
187
182
  vng_api_common/tests/caching.py,sha256=zfIw5cRRvO9cekHZZKfRqZc8cx5IfJUYNmcH6cuIMg4,624
188
- vng_api_common/tests/schema.py,sha256=9LFgEXzcYGkHZtlpCiHNCWywR5lF7Pl0S43cwlwKDgQ,1954
183
+ vng_api_common/tests/schema.py,sha256=WDvifDQQiKqIpQijpeQ7rYkFroJmuPuHe7zNhl1Bigk,2293
189
184
  vng_api_common/tests/urls.py,sha256=PFrYzQbBC0TFPMEn3uPhcBG0IQs9JsEPqckicJT1UA4,2159
190
- commonground_api_common-1.13.0.dist-info/METADATA,sha256=0VY1-6hGQCu0ynbXF9Q_PCZBNrJcPopNgNlvDrzjr54,6656
191
- commonground_api_common-1.13.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
192
- commonground_api_common-1.13.0.dist-info/top_level.txt,sha256=vPismc83zPzWXTmlNCCwfDlFV9iygJYxNJW5iDjKTgw,15
193
- commonground_api_common-1.13.0.dist-info/RECORD,,
185
+ commonground_api_common-2.4.1.dist-info/METADATA,sha256=4ycNVljxoK6rd_ozoYpx0f_l07i4JnZsiUihMscJwK0,6988
186
+ commonground_api_common-2.4.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
187
+ commonground_api_common-2.4.1.dist-info/top_level.txt,sha256=vPismc83zPzWXTmlNCCwfDlFV9iygJYxNJW5iDjKTgw,15
188
+ commonground_api_common-2.4.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1 +1 @@
1
- __version__ = "1.13.0"
1
+ __version__ = "2.4.1"
vng_api_common/admin.py CHANGED
@@ -1,29 +1,10 @@
1
1
  from django.contrib import admin
2
2
  from django.utils.translation import gettext_lazy as _
3
3
 
4
- from .models import APICredential, JWTSecret
4
+ from .models import JWTSecret
5
5
 
6
6
 
7
7
  @admin.register(JWTSecret)
8
8
  class JWTSecretAdmin(admin.ModelAdmin):
9
9
  list_display = ("identifier",)
10
10
  search_fields = ("identifier",)
11
-
12
-
13
- @admin.register(APICredential)
14
- class APICredentialAdmin(admin.ModelAdmin):
15
- list_display = ("label", "api_root", "client_id", "user_id")
16
- search_fields = ("label", "api_root")
17
- fieldsets = (
18
- (_("external API"), {"fields": ["api_root", "label"]}),
19
- (
20
- _("credentials"),
21
- {
22
- "description": _(
23
- "Credentials that indicate how this API or application identifies itself at the external "
24
- "API."
25
- ),
26
- "fields": ["client_id", "secret", "user_id", "user_representation"],
27
- },
28
- ),
29
- )
@@ -7,6 +7,7 @@ from .serializers import JWTSecretSerializer
7
7
 
8
8
 
9
9
  class CreateJWTSecretView(CreateAPIView):
10
+ action = "create"
10
11
  swagger_schema = None
11
12
 
12
13
  model = JWTSecret
vng_api_common/apps.py CHANGED
@@ -1,14 +1,11 @@
1
+ import logging
2
+
1
3
  from django.apps import AppConfig
4
+ from django.core.exceptions import ImproperlyConfigured
2
5
  from django.db import models
3
6
  from django.forms.fields import CharField
4
7
  from django.utils.translation import gettext_lazy as _
5
8
 
6
- from drf_yasg import openapi
7
- from drf_yasg.inspectors.field import (
8
- basic_type_info,
9
- model_field_to_basic_type,
10
- serializer_field_to_basic_type,
11
- )
12
9
  from rest_framework import serializers
13
10
 
14
11
  from . import fields
@@ -25,6 +22,8 @@ except ImportError:
25
22
  # is collected somewhere so there's precedent
26
23
  FORMAT_DURATION = "duration"
27
24
 
25
+ logger = logging.getLogger(__name__)
26
+
28
27
 
29
28
  class CommonGroundAPICommonConfig(AppConfig):
30
29
  name = "vng_api_common"
@@ -32,36 +31,21 @@ class CommonGroundAPICommonConfig(AppConfig):
32
31
 
33
32
  def ready(self):
34
33
  from . import checks # noqa
34
+ from . import schema # noqa
35
35
  from .caching import signals # noqa
36
+ from .extensions import gegevensgroep, hyperlink, polymorphic, query # noqa
36
37
 
37
- patch_duration_type()
38
38
  register_serializer_field()
39
39
  set_custom_hyperlinkedmodelserializer_field()
40
40
  set_charfield_error_messages()
41
41
  ensure_text_choice_descriptions(TextChoicesWithDescriptions)
42
-
43
-
44
- def patch_duration_type():
45
- def _patch(basic_types, _field_cls, format=None):
46
- for index, (field_cls, basic_type) in enumerate(basic_types):
47
- if field_cls is _field_cls:
48
- basic_types[index] = (_field_cls, (openapi.TYPE_STRING, format))
49
- break
50
-
51
- _patch(model_field_to_basic_type, models.DurationField, FORMAT_DURATION)
52
- _patch(basic_type_info, models.DurationField, FORMAT_DURATION)
53
- _patch(serializer_field_to_basic_type, serializers.DurationField, FORMAT_DURATION)
54
- _patch(basic_type_info, serializers.DurationField, FORMAT_DURATION)
55
-
56
- # best-effort support for relativedeltafield
57
- if RelativeDeltaField is not None:
58
- _patch(model_field_to_basic_type, RelativeDeltaField, FORMAT_DURATION)
59
- _patch(basic_type_info, RelativeDeltaField, FORMAT_DURATION)
42
+ register_geojson_field_extension()
43
+ register_base64_field_extension()
60
44
 
61
45
 
62
46
  def register_serializer_field():
63
47
  mapping = serializers.ModelSerializer.serializer_field_mapping
64
- mapping[models.fields.DurationField] = DurationField
48
+ mapping[models.DurationField] = DurationField
65
49
  mapping[fields.DaysDurationField] = DurationField
66
50
 
67
51
  if RelativeDeltaField is not None:
@@ -97,3 +81,37 @@ def ensure_text_choice_descriptions(text_choice_class):
97
81
 
98
82
  for cls in text_choice_class.__subclasses__():
99
83
  ensure_text_choice_descriptions(cls)
84
+
85
+
86
+ def register_geojson_field_extension() -> None:
87
+ """
88
+ register GeoJSONGeometry extension only if rest_framework_gis is
89
+ installed
90
+ """
91
+ try:
92
+ from rest_framework_gis.fields import GeometryField # noqa
93
+ except (ImportError, ImproperlyConfigured):
94
+ logger.debug(
95
+ "Could not import djangorestframework-gis, skipping "
96
+ "GeometryFieldExtension registration."
97
+ )
98
+ return
99
+
100
+ from .extensions import geojson # noqa
101
+
102
+
103
+ def register_base64_field_extension() -> None:
104
+ """
105
+ register Base64FileFileFieldExtension extension only if drf_extra_fields is
106
+ installed
107
+ """
108
+ try:
109
+ from drf_extra_fields.fields import Base64FileField # noqa
110
+ except ImportError:
111
+ logger.debug(
112
+ "Could not import drf-extra-fields, skipping "
113
+ "Base64FileFileFieldExtension registration."
114
+ )
115
+ return
116
+
117
+ from .extensions import file # noqa
@@ -0,0 +1,44 @@
1
+ import inspect
2
+ import logging
3
+
4
+ from django.apps import apps
5
+
6
+ from rest_framework import viewsets
7
+
8
+ logger = logging.getLogger(__name__)
9
+
10
+
11
+ AUDIT_TRAIL_ENABLED = apps.is_installed("vng_api_common.audittrails")
12
+
13
+
14
+ def _view_supports_audittrail(view: viewsets.ViewSet) -> bool:
15
+ # moved from vng_api_common.inspectors
16
+ if not AUDIT_TRAIL_ENABLED:
17
+ return False
18
+
19
+ if not hasattr(view, "action"):
20
+ logger.debug("Could not determine view action for view %r", view)
21
+ return False
22
+
23
+ # local imports, since you get errors if you try to import non-installed app
24
+ # models
25
+ from vng_api_common.audittrails.viewsets import AuditTrailMixin
26
+
27
+ relevant_bases = [
28
+ base for base in view.__class__.__bases__ if issubclass(base, AuditTrailMixin)
29
+ ]
30
+ if not relevant_bases:
31
+ return False
32
+
33
+ # check if the view action is listed in any of the audit trail mixins
34
+ action = view.action
35
+ if action == "partial_update": # partial update is self.update(partial=True)
36
+ action = "update"
37
+
38
+ # if the current view action is not provided by any of the audit trail
39
+ # related bases, then it's not audit trail enabled
40
+ action_in_audit_bases = any(
41
+ action in dict(inspect.getmembers(base)) for base in relevant_bases
42
+ )
43
+
44
+ return action_in_audit_bases
@@ -7,7 +7,7 @@ from .models import Applicatie, AuthorizationsConfig, Autorisatie
7
7
 
8
8
  @admin.register(AuthorizationsConfig)
9
9
  class AuthorizationsConfigAdmin(SingletonModelAdmin):
10
- list_display = ("api_root", "component")
10
+ list_display = ("authorizations_api_service", "component")
11
11
 
12
12
 
13
13
  @admin.register(Autorisatie)