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.
- commonground_api_common-1.13.0.data/scripts/patch_content_types → commonground_api_common-2.4.1.data/scripts/generate_schema +2 -4
- {commonground_api_common-1.13.0.dist-info → commonground_api_common-2.4.1.dist-info}/METADATA +45 -37
- {commonground_api_common-1.13.0.dist-info → commonground_api_common-2.4.1.dist-info}/RECORD +45 -50
- {commonground_api_common-1.13.0.dist-info → commonground_api_common-2.4.1.dist-info}/WHEEL +1 -1
- vng_api_common/__init__.py +1 -1
- vng_api_common/admin.py +1 -20
- vng_api_common/api/views.py +1 -0
- vng_api_common/apps.py +44 -26
- vng_api_common/audittrails/utils.py +44 -0
- vng_api_common/authorizations/admin.py +1 -1
- vng_api_common/authorizations/middleware.py +244 -0
- vng_api_common/authorizations/migrations/0016_remove_authorizationsconfig_api_root_and_more.py +76 -0
- vng_api_common/authorizations/models.py +62 -3
- vng_api_common/authorizations/utils.py +17 -0
- vng_api_common/client.py +61 -29
- vng_api_common/conf/api.py +33 -48
- vng_api_common/contrib/setup_configuration/models.py +32 -0
- vng_api_common/contrib/setup_configuration/steps.py +46 -0
- vng_api_common/extensions/file.py +26 -0
- vng_api_common/extensions/gegevensgroep.py +16 -0
- vng_api_common/extensions/geojson.py +270 -0
- vng_api_common/extensions/hyperlink.py +37 -0
- vng_api_common/extensions/polymorphic.py +68 -0
- vng_api_common/extensions/query.py +20 -0
- vng_api_common/filters.py +0 -1
- vng_api_common/generators.py +12 -113
- vng_api_common/middleware.py +1 -227
- vng_api_common/migrations/0006_delete_apicredential.py +120 -0
- vng_api_common/mocks.py +4 -1
- vng_api_common/models.py +10 -111
- vng_api_common/notifications/api/views.py +8 -8
- vng_api_common/notifications/handlers.py +8 -3
- vng_api_common/notifications/migrations/0011_remove_subscription_config_and_more.py +23 -0
- vng_api_common/oas.py +6 -10
- vng_api_common/pagination.py +10 -0
- vng_api_common/routers.py +3 -3
- vng_api_common/schema.py +414 -158
- vng_api_common/tests/schema.py +13 -0
- vng_api_common/utils.py +0 -22
- vng_api_common/validators.py +92 -73
- vng_api_common/views.py +35 -20
- commonground_api_common-1.13.0.data/scripts/generate_schema +0 -39
- commonground_api_common-1.13.0.data/scripts/use_external_components +0 -16
- vng_api_common/inspectors/cache.py +0 -57
- vng_api_common/inspectors/fields.py +0 -126
- vng_api_common/inspectors/files.py +0 -121
- vng_api_common/inspectors/geojson.py +0 -360
- vng_api_common/inspectors/polymorphic.py +0 -72
- vng_api_common/inspectors/query.py +0 -91
- vng_api_common/inspectors/utils.py +0 -40
- vng_api_common/inspectors/view.py +0 -547
- vng_api_common/management/commands/generate_autorisaties.py +0 -43
- vng_api_common/management/commands/generate_notificaties.py +0 -40
- vng_api_common/management/commands/generate_swagger.py +0 -197
- vng_api_common/management/commands/patch_error_contenttypes.py +0 -61
- vng_api_common/management/commands/use_external_components.py +0 -94
- vng_api_common/notifications/constants.py +0 -3
- vng_api_common/notifications/models.py +0 -97
- vng_api_common/templates/vng_api_common/api_schema_to_markdown_table.md +0 -16
- vng_api_common/templates/vng_api_common/autorisaties.md +0 -15
- vng_api_common/templates/vng_api_common/notificaties.md +0 -24
- {commonground_api_common-1.13.0.dist-info → commonground_api_common-2.4.1.dist-info}/top_level.txt +0 -0
- /vng_api_common/{inspectors → contrib}/__init__.py +0 -0
- /vng_api_common/{management → contrib/setup_configuration}/__init__.py +0 -0
- /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
|
-
|
13
|
-
|
14
|
-
|
15
|
-
python $manage patch_error_contenttypes $source_file
|
12
|
+
echo "generate schema"
|
13
|
+
src/manage.py spectacular --file src/openapi.yaml --validate
|
{commonground_api_common-1.13.0.dist-info → commonground_api_common-2.4.1.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: commonground-api-common
|
3
|
-
Version:
|
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
|
26
|
-
Requires-Dist: django-filter
|
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
|
29
|
-
Requires-Dist:
|
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-
|
32
|
-
Requires-Dist: drf-
|
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
|
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
|
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
|
68
|
+
Requires-Dist: pytest-cov; extra == "coverage"
|
43
69
|
Provides-Extra: docs
|
44
|
-
Requires-Dist: psycopg2
|
45
|
-
Requires-Dist: sphinx
|
46
|
-
Requires-Dist: sphinx-rtd-theme
|
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
|
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-
|
2
|
-
|
3
|
-
|
4
|
-
vng_api_common/
|
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=
|
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=
|
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=
|
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=
|
23
|
-
vng_api_common/mocks.py,sha256=
|
24
|
-
vng_api_common/models.py,sha256=
|
25
|
-
vng_api_common/oas.py,sha256=
|
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=
|
29
|
-
vng_api_common/schema.py,sha256=
|
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=
|
35
|
-
vng_api_common/validators.py,sha256=
|
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=
|
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=
|
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=
|
78
|
-
vng_api_common/authorizations/
|
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=
|
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/
|
109
|
-
vng_api_common/
|
110
|
-
vng_api_common/
|
111
|
-
vng_api_common/
|
112
|
-
vng_api_common/
|
113
|
-
vng_api_common/
|
114
|
-
vng_api_common/
|
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/
|
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=
|
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=
|
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-
|
191
|
-
commonground_api_common-
|
192
|
-
commonground_api_common-
|
193
|
-
commonground_api_common-
|
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,,
|
vng_api_common/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "
|
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
|
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
|
-
)
|
vng_api_common/api/views.py
CHANGED
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.
|
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 = ("
|
10
|
+
list_display = ("authorizations_api_service", "component")
|
11
11
|
|
12
12
|
|
13
13
|
@admin.register(Autorisatie)
|