From f51e07e1f9e2ce62ef043e35f287905809dc68f8 Mon Sep 17 00:00:00 2001 From: Sergei Maertens Date: Mon, 16 Sep 2024 17:29:15 +0200 Subject: [PATCH 1/6] :pushpin: [#4663] Pin bundled SDK to 2.4.0-beta.0 --- .sdk-release | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.sdk-release b/.sdk-release index 125c35fe11..3bd478bbbc 100644 --- a/.sdk-release +++ b/.sdk-release @@ -1 +1 @@ -2.4.0-alpha.0 +2.4.0-beta.0 From a35e5dfad08d6904401742ebc6ef3d7301ff7a41 Mon Sep 17 00:00:00 2001 From: Sergei Maertens Date: Mon, 16 Sep 2024 17:33:13 +0200 Subject: [PATCH 2/6] :bookmark: [#4663] Bump API version to 2.8.0 We're feature complete and don't expect to modify the API schema anymore between now and stable. --- docs/developers/versioning.rst | 4 ++++ src/openapi.yaml | 2 +- src/openforms/conf/base.py | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/developers/versioning.rst b/docs/developers/versioning.rst index f10443789e..b044ffad30 100644 --- a/docs/developers/versioning.rst +++ b/docs/developers/versioning.rst @@ -46,6 +46,7 @@ experimental feature changes (see :ref:`developers_versioning_api`). 2.1.0 2.4.0 n/a 2.2.0 2.4.0 2.6.x 2.3.0 2.7.0 n/a + 2.4.0 2.8.0 n/a =========== =================== =================== End-of-life versions are not listed in this table. @@ -73,6 +74,8 @@ Version Release date API specification ============== ============== ============================= latest n/a `ReDoc `__, `Swagger `__ +2.8.0 2024-09-16 `ReDoc `__, + `Swagger `__ 2.7.0 2024-07-09 `ReDoc `__, `Swagger `__ 2.6.0 2024-03-25 `ReDoc `__, @@ -142,6 +145,7 @@ backend version. =============== =========== Backend version API version =============== =========== + 2.8.x 2.8.y 2.7.x 2.7.y 2.6.x 2.6.y 2.5.x 2.5.y diff --git a/src/openapi.yaml b/src/openapi.yaml index 3b52f1afda..6559baa1c7 100644 --- a/src/openapi.yaml +++ b/src/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.0.3 info: title: Open Forms API - version: 2.8.0-alpha.0 + version: 2.8.0 description: |2 Open Forms provides an API to manage multi-page or multi-step forms. diff --git a/src/openforms/conf/base.py b/src/openforms/conf/base.py index 70cec28102..c1cfbb3962 100644 --- a/src/openforms/conf/base.py +++ b/src/openforms/conf/base.py @@ -956,7 +956,7 @@ and it plays nice with other available components. """ -API_VERSION = "2.8.0-alpha.0" +API_VERSION = "2.8.0" SPECTACULAR_SETTINGS = { "SCHEMA_PATH_PREFIX": "/api/v2", From 194fc10d4873e096efec7b033163d62f88e14b47 Mon Sep 17 00:00:00 2001 From: Sergei Maertens Date: Mon, 16 Sep 2024 19:17:38 +0200 Subject: [PATCH 3/6] :fire: [#4663] Remove obsoleted upgrade paths for 2.7.x and 2.6.x The check scripts and version constraints are no longer relevant once we're on the 2.8 release cycle. --- Dockerfile | 2 - bin/check_objecttype_urls.py | 100 ------------------------ bin/check_zgw_groups.py | 78 ------------------ src/openforms/upgrades/upgrade_paths.py | 15 ---- 4 files changed, 195 deletions(-) delete mode 100644 bin/check_objecttype_urls.py delete mode 100644 bin/check_zgw_groups.py diff --git a/Dockerfile b/Dockerfile index 0f480e0fcb..9f0aff9394 100644 --- a/Dockerfile +++ b/Dockerfile @@ -90,8 +90,6 @@ RUN mkdir /app/bin /app/log /app/media /app/private_media /app/certifi_ca_bundle COPY \ ./bin/check_celery_worker_liveness.py \ ./bin/report_component_problems.py \ - ./bin/check_objecttype_urls.py \ - ./bin/check_zgw_groups.py \ ./bin/ # prevent writing to the container layer, which would degrade performance. diff --git a/bin/check_objecttype_urls.py b/bin/check_objecttype_urls.py deleted file mode 100644 index 1beddb2576..0000000000 --- a/bin/check_objecttype_urls.py +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env python -from __future__ import annotations - -import sys -from pathlib import Path -from uuid import UUID - -import django -from django.db import connections -from django.db.migrations.recorder import MigrationRecorder - -import click -from tabulate import tabulate - -SRC_DIR = Path(__file__).parent.parent / "src" -sys.path.insert(0, str(SRC_DIR.resolve())) - - -def check_objecttype_urls() -> bool: - from openforms.forms.models import FormRegistrationBackend - - problems: list[list[str]] = [] - - for backend in FormRegistrationBackend.objects.filter(backend="objects_api"): - objecttype_url = backend.options.get("objecttype") - if not objecttype_url: - problems.append( - [ - backend.form.admin_name, - backend.name, - backend.key, - "No objecttype URL present", - ] - ) - continue - - try: - UUID(objecttype_url.rsplit("/", 1)[1]) - except (IndexError, ValueError): - problems.append( - [ - backend.form.admin_name, - backend.name, - backend.key, - f"Invalid objecttype URL: {objecttype_url}", - ] - ) - - if not problems: - click.echo(click.style("No problems found.", fg="green")) - return True - - click.echo(click.style("Found problems in form registration backends.", fg="red")) - click.echo("") - click.echo( - tabulate( - problems, - headers=( - "Form", - "Registration backend name", - "Regisration backend key", - "Problem", - ), - ) - ) - - return False - - -def get_applied_migrations(database="default"): - connection = connections[database] - recorder = MigrationRecorder(connection) - applied_migrations = recorder.applied_migrations() - return applied_migrations - - -def main(skip_setup: bool = False) -> bool: - from openforms.setup import setup_env - - if not skip_setup: - setup_env() - django.setup() - - # a data migration converts from URLs to UUIDs, if it's been executed, no point - # in checking for valid URLs as a UUID will never be a valid URL - applied_migrations = get_applied_migrations() - target_migration = ("registrations_objects_api", "0020_objecttype_url_to_uuid") - if target_migration in applied_migrations: - return True - - return check_objecttype_urls() - - -@click.command() -def cli(): - return main() - - -if __name__ == "__main__": - cli() diff --git a/bin/check_zgw_groups.py b/bin/check_zgw_groups.py deleted file mode 100644 index 82c1472e02..0000000000 --- a/bin/check_zgw_groups.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python -from __future__ import annotations - -import sys -from pathlib import Path - -import django - -import click -from tabulate import tabulate - -SRC_DIR = Path(__file__).parent.parent / "src" -sys.path.insert(0, str(SRC_DIR.resolve())) - - -def check_zgw_groups() -> bool: - from openforms.forms.models import FormRegistrationBackend - from openforms.registrations.contrib.zgw_apis.models import ZgwConfig - - # hack to allow using the model in upgrade checks but preventing usage otherwise - ZgwConfig.BLOCK_USAGE = False - - zgw_config = ZgwConfig.get_solo() - default_group = zgw_config.default_zgw_api_group - - problems: list[list[str]] = [] - - for backend in FormRegistrationBackend.objects.filter(backend="zgw-create-zaak"): - zgw_api_group = backend.options.get("zgw_api_group") - if zgw_api_group is None and default_group is None: - problems.append( - [ - backend.form.admin_name, - backend.name, - backend.key, - "No ZGW API group set and no default group available", - ] - ) - continue - - if not problems: - click.echo(click.style("No problems found.", fg="green")) - return True - - click.echo(click.style("Found problems in form registration backends.", fg="red")) - click.echo("") - click.echo( - tabulate( - problems, - headers=( - "Form", - "Registration backend name", - "Regisration backend key", - "Problem", - ), - ) - ) - - return False - - -def main(skip_setup: bool = False) -> bool: - from openforms.setup import setup_env - - if not skip_setup: - setup_env() - django.setup() - - return check_zgw_groups() - - -@click.command() -def cli(): - return main() - - -if __name__ == "__main__": - cli() diff --git a/src/openforms/upgrades/upgrade_paths.py b/src/openforms/upgrades/upgrade_paths.py index 4bc1ed1f36..3e2674af20 100644 --- a/src/openforms/upgrades/upgrade_paths.py +++ b/src/openforms/upgrades/upgrade_paths.py @@ -81,21 +81,6 @@ def run_checks(self) -> bool: VersionRange(minimum="2.7.4"), }, ), - "2.7": UpgradeConstraint( - valid_ranges={ - # 2.6.x: more migration squashing and removing squashed sources - # 2.6.7: patch release with new migrations, easiest is to force people to - # have executed that one - VersionRange(minimum="2.6.7"), - }, - scripts={"check_objecttype_urls", "check_zgw_groups"}, - ), - "2.6": UpgradeConstraint( - valid_ranges={ - # more migration squashing and removing squashed sources - VersionRange(minimum="2.5.2"), - }, - ), } From 4825dcd4915ccb3a2146e30b147497b6b3e16ec7 Mon Sep 17 00:00:00 2001 From: Sergei Maertens Date: Tue, 17 Sep 2024 09:22:00 +0200 Subject: [PATCH 4/6] :pencil: [#4663] Added changelog entries for 2.8.0 beta --- CHANGELOG.rst | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index fb3d753ee1..efe8873ef5 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,6 +2,72 @@ Changelog ========= +2.8.0-beta.0 (2024-09-17) +========================= + +The (first) beta version for 2.8.0 is available for testing now. + +.. warning:: We encourage you to test out this beta version on non-production + environments and report your findings back to use. This release is not suitable for + production yet though. + +Upgrade notes +------------- + +Nothing to remark - all migrations and upgrades are automatic. + +Detailed changes +---------------- + +**New features** + +* [:backend:`4577`] We improved the user experience when configuring the Objects API + registration plugin. Copy-pasting URLs is being phased out - you can now select the + relevant configurations in dropdowns. +* [:backend:`4606`] Improved the user experience of the ZGW APIs registration plugin. + We're making this consistent with the Objects API. More improvements will be done in + the future. +* [:backend:`4542`] Email components now support optional verification - when enabled, + users must verify their email address before they can continue submitting the form. +* [:backend:`4582`] The SAML metadata for the DigiD/eHerkenning identity providers is + now automatically refreshed on a weekly basis. +* [:backend:`4380`] The StUF-ZDS registration plugin now supports sending payment + details in the ``extraElementen`` data. For 2.7 this was available in an extension, + which has been merged in core - migrating is automatic. +* [:backend:`4545`] You can now optionally configure an introduction page, which is + displayed before the start of the form. +* [:backend:`4543`] You can now optionally enable a short progress summary showing the + current step number and the total number of steps in a form. + +.. note:: The ``addressNL`` component is not yet a fully capable replacement for + individual address fields. Currently, it's only recommended for BRK-validation + purposes. + +**Bugfixes** + +* [:backend:`4597`] Revert message for not-filled-in-fields in confirmation PDF back to + just empty space. +* Fixed processing of empty file upload components in the Objects API registration plugin. +* Fixed an upgrade check incorrectly reporting problems. +* [:backend:`4627`] Fixed a crash in the eHerkenning-via-OIDC plugin if no ActingSubjectID + claim is present. +* [:backend:`4602`] Fixed missing Dutch translation for minimum required checked items + error message in the selectboxes component. +* [:backend:`4587`] Fixed the product not being copied along when copying a form. + +**Project maintenance** + +* Addressed broken test isolation in CI leading to flaky tests. +* Upgraded a number of dependencies to their latest (security) releases. +* Improved the static type annotations in the codebase. +* Failing end-to-end tests now produce Playwright traces in CI to help debug the problem. +* Added a utility script to find VCR cassette directories. +* [:backend:`4646`, :backend:`4396`] Restructured the Objects API configuration to be + in a shared code package, which can be used by the registration and prefill plugins. +* [:backend:`4648`] Corrected the documentation about the minimum PostgreSQL version + (v12) and confirmed support for PostgreSQL 15. +* Squashed migrations. + 2.7.6 (2024-09-05) ================== From dd512e838e8f7a7b5ef75b778d921ddf48b771ed Mon Sep 17 00:00:00 2001 From: Sergei Maertens Date: Tue, 17 Sep 2024 12:42:37 +0200 Subject: [PATCH 5/6] :pencil: [#4663] Clarify ZGW API's + Objects API behaviour --- CHANGELOG.rst | 8 +++++++- src/openforms/contrib/objects_api/admin.py | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index efe8873ef5..669cd72744 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,7 +14,13 @@ The (first) beta version for 2.8.0 is available for testing now. Upgrade notes ------------- -Nothing to remark - all migrations and upgrades are automatic. +There are no manual actions required - all upgrades and migrations are automatic. + +.. note:: The UX rework in the ZGW APIs registration plugin is not entirely finished + yet. The Objects API integration in particular can be a bit confusing since it's not + possible yet to select which Objects API should be used. The plugin now uses the API + group that's listed first in the admin interface (**Admin** > **Miscellaneous** > + **Objects API Groups**). Detailed changes ---------------- diff --git a/src/openforms/contrib/objects_api/admin.py b/src/openforms/contrib/objects_api/admin.py index 1f754e95c0..ba891a3e82 100644 --- a/src/openforms/contrib/objects_api/admin.py +++ b/src/openforms/contrib/objects_api/admin.py @@ -28,7 +28,10 @@ class ObjectsAPIGroupConfigAdmin(admin.ModelAdmin): "drc_service", "catalogi_service", ) - ordering = ("name",) + ordering = ( + "id", + "name", + ) fieldsets = [ (None, {"fields": ["name"]}), ( From 2aa4812812ea79daeb8a496aa5708af6b3b140f1 Mon Sep 17 00:00:00 2001 From: Sergei Maertens Date: Tue, 17 Sep 2024 09:26:19 +0200 Subject: [PATCH 6/6] :bookmark: [#4663] Bump version to 2.8.0-beta.0 --- .bumpversion.cfg | 2 +- README.NL.rst | 2 +- README.rst | 2 +- package-lock.json | 4 ++-- package.json | 2 +- publiccode.yaml | 2 +- src/openforms/__init__.py | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 8cbb2baf06..5013d616ea 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = False tag = False -current_version = 2.8.0-alpha.0 +current_version = 2.8.0-beta.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P
[a-z]+)\.(?P\d+))?
 serialize = 
 	{major}.{minor}.{patch}-{pre}.{build}
diff --git a/README.NL.rst b/README.NL.rst
index a4004ecb2d..031fef3e03 100644
--- a/README.NL.rst
+++ b/README.NL.rst
@@ -2,7 +2,7 @@
 Open Formulieren
 ================
 
-:Version: 2.8.0-alpha.0
+:Version: 2.8.0-beta.0
 :Source: https://github.com/open-formulieren/open-forms
 :Keywords: e-Formulieren, Common Ground, FormIO, API
 
diff --git a/README.rst b/README.rst
index 9c24e7cdbf..3e3b8c9286 100644
--- a/README.rst
+++ b/README.rst
@@ -2,7 +2,7 @@
 Open Forms
 ==========
 
-:Version: 2.8.0-alpha.0
+:Version: 2.8.0-beta.0
 :Source: https://github.com/open-formulieren/open-forms
 :Keywords: e-Formulieren, Common Ground, FormIO, API
 
diff --git a/package-lock.json b/package-lock.json
index 876ed5b6d5..cd74cfe04c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "openforms",
-  "version": "2.8.0-alpha.0",
+  "version": "2.8.0-beta.0",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "openforms",
-      "version": "2.8.0-alpha.0",
+      "version": "2.8.0-beta.0",
       "license": "UNLICENSED",
       "dependencies": {
         "@fortawesome/fontawesome-free": "^6.1.1",
diff --git a/package.json b/package.json
index dfe3a0ad98..5f6616cbc1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "openforms",
-  "version": "2.8.0-alpha.0",
+  "version": "2.8.0-beta.0",
   "description": "Open Forms",
   "main": "src/static/openforms/js/openforms.js",
   "directories": {
diff --git a/publiccode.yaml b/publiccode.yaml
index b0d9b271fc..b186b75f1a 100644
--- a/publiccode.yaml
+++ b/publiccode.yaml
@@ -7,7 +7,7 @@ publiccodeYmlVersion: '0.2'
 name: Open Forms Builder and API
 url: 'http://github.com/open-formulieren/open-forms.git'
 softwareType: standalone/backend
-softwareVersion: 2.8.0-alpha.0
+softwareVersion: 2.8.0-beta.0
 releaseDate: '2022-03-10'
 logo: 'https://github.com/open-formulieren/open-forms/blob/master/docs/logo.svg'
 platforms:
diff --git a/src/openforms/__init__.py b/src/openforms/__init__.py
index 2e104e5bec..d50ed34fc7 100644
--- a/src/openforms/__init__.py
+++ b/src/openforms/__init__.py
@@ -1,6 +1,6 @@
 from .celery import app as celery_app
 
 __all__ = ("celery_app",)
-__version__ = "2.8.0-alpha.0"
+__version__ = "2.8.0-beta.0"
 __author__ = "Maykin Media"
 __homepage__ = "https://github.com/open-formulieren/open-forms"