From 41d868843c22803082ea9229e9655443f57cd7f4 Mon Sep 17 00:00:00 2001 From: Alexander Watzinger Date: Tue, 14 May 2024 15:39:03 +0200 Subject: [PATCH 1/2] Fix for broken dynamic add for single type (#2280) --- openatlas/forms/add_fields.py | 2 +- openatlas/forms/field.py | 2 ++ openatlas/views/imports.py | 20 ++++++++++---------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/openatlas/forms/add_fields.py b/openatlas/forms/add_fields.py index 1ac0ccefe..d2efed0ab 100644 --- a/openatlas/forms/add_fields.py +++ b/openatlas/forms/add_fields.py @@ -261,4 +261,4 @@ class AddDynamicType(FlaskForm): setattr( manager.form_class, str(type_.id), - TreeField(str(type_.id), validators)) + TreeField(str(type_.id), validators, form=form)) diff --git a/openatlas/forms/field.py b/openatlas/forms/field.py index 979edd82a..92e0f048a 100644 --- a/openatlas/forms/field.py +++ b/openatlas/forms/field.py @@ -394,8 +394,10 @@ def __init__( type_id: str = '', filter_ids: Optional[list[int]] = None, is_type_form: Optional[bool] = False, + form: Any = None, **kwargs: Any) -> None: super().__init__(label, validators, **kwargs) + self.form = form self.type_id = type_id or self.id self.filters_ids = filter_ids self.is_type_form = is_type_form diff --git a/openatlas/views/imports.py b/openatlas/views/imports.py index f08169bb0..450df3ac0 100644 --- a/openatlas/views/imports.py +++ b/openatlas/views/imports.py @@ -295,16 +295,16 @@ def import_data(project_id: int, class_: str) -> str: if not form.preview.data and checked_data and ( not file_data['backup_too_old'] or app.testing): Transaction.begin() - #try: - Import.import_data(project, class_, checked_data) - Transaction.commit() - g.logger.log('info', 'import', f'import: {len(checked_data)}') - flash(f"{_('import of')}: {len(checked_data)}", 'info') - imported = True - # except Exception as e: # pragma: no cover - # Transaction.rollback() - # g.logger.log('error', 'import', 'import failed', e) - # flash(_('error transaction'), 'error') + try: + Import.import_data(project, class_, checked_data) + Transaction.commit() + g.logger.log('info', 'import', f'import: {len(checked_data)}') + flash(f"{_('import of')}: {len(checked_data)}", 'info') + imported = True + except Exception as e: # pragma: no cover + Transaction.rollback() + g.logger.log('error', 'import', 'import failed', e) + flash(_('error transaction'), 'error') return render_template( 'import_data.html', form=form, From 3d81d63dcb8ab8aff21b5cef3842d66a703d7ca9 Mon Sep 17 00:00:00 2001 From: Alexander Watzinger Date: Tue, 14 May 2024 15:44:18 +0200 Subject: [PATCH 2/2] Update changelog and upgrade notes --- config/default.py | 2 +- install/upgrade/upgrade.md | 3 +++ openatlas/views/changelog.py | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/config/default.py b/config/default.py index 321ddfa96..47bdf4d93 100644 --- a/config/default.py +++ b/config/default.py @@ -3,7 +3,7 @@ from config.database_versions import DATABASE_VERSIONS -VERSION = '8.4.0' +VERSION = '8.4.1' DATABASE_VERSION = DATABASE_VERSIONS[0] DEMO_MODE = False # If activated some options are disabled, login is prefilled DEBUG = False diff --git a/install/upgrade/upgrade.md b/install/upgrade/upgrade.md index 5f30224dc..0a7b5e141 100644 --- a/install/upgrade/upgrade.md +++ b/install/upgrade/upgrade.md @@ -17,6 +17,9 @@ then run the database upgrade script, then restart Apache: sudo python3 install/upgrade/database_upgrade.py sudo service apache2 restart +### 8.4.0 to 8.4.1 +A code base update (e.g. with git pull) and a webserver restart is sufficient. + ### 8.3.0 to 8.4.0 8.4.0.sql is needed but will be taken care of by the database upgrade script. diff --git a/openatlas/views/changelog.py b/openatlas/views/changelog.py index 174b5a7a4..582db81f4 100644 --- a/openatlas/views/changelog.py +++ b/openatlas/views/changelog.py @@ -15,6 +15,9 @@ def index_changelog() -> str: versions = { + '8.4.1': ['2024-05-14', { + 'fix': { + '2280': 'Dynamic type add not working for single types'}}], '8.4.0': ['2024-05-05', { 'feature': { '2261': 'Option to prevent selection of a type',