From 76959513dd20ca3c266fd6bf5dc10f315bb3028f Mon Sep 17 00:00:00 2001 From: "Toavina A." Date: Wed, 2 Oct 2024 16:04:29 +0300 Subject: [PATCH] 174 - Add mandatory check box about personally identifiable information (#40) * added a multi checkbox in schema * added a new preset * added a new preset * Updated preset * Invalidate this change * Small update to display_snippet * Small fix to schema * More update * More update * Changed default values * Small id change * invalidate changes on react files * invalidate changes on react files --- ckanext/zarr/plugin.py | 3 +- ckanext/zarr/presets.json | 23 +++------- ckanext/zarr/schemas/dcat_dublin.yaml | 7 +++ .../scheming/display_snippets/confirm.html | 6 +++ .../scheming/form_snippets/confirm.html | 43 +++++++++++++++++++ ckanext/zarr/validators.py | 9 ++++ 6 files changed, 73 insertions(+), 18 deletions(-) create mode 100644 ckanext/zarr/templates/scheming/display_snippets/confirm.html create mode 100644 ckanext/zarr/templates/scheming/form_snippets/confirm.html diff --git a/ckanext/zarr/plugin.py b/ckanext/zarr/plugin.py index 02b1642..330b2d1 100644 --- a/ckanext/zarr/plugin.py +++ b/ckanext/zarr/plugin.py @@ -76,7 +76,8 @@ def get_validators(self): 'autofill': zarr_validators.autofill, 'autogenerate': zarr_validators.autogenerate, 'isomonth': zarr_validators.isomonth, - 'date_validator': zarr_validators.date_validator + 'date_validator': zarr_validators.date_validator, + 'approval_required': zarr_validators.approval_required } # IPackageContoller diff --git a/ckanext/zarr/presets.json b/ckanext/zarr/presets.json index 6c5a4e3..68a2699 100644 --- a/ckanext/zarr/presets.json +++ b/ckanext/zarr/presets.json @@ -1,26 +1,15 @@ { "scheming_presets_version": 1, - "about": "These are Scheming presets specific to WHO AFRO", + "about": "These are Scheming presets specific to ZaRR", "about_url": "http://github.com/ckan/ckanext-scheming#preset", "presets": [ { - "preset_name": "resource_giftless_upload", + "preset_name": "approval", "values": { - "form_snippet": "resource_upload.html" - } - }, { - "preset_name": "preset_value", - "values": { - "form_snippet": "no_input.html", - "validators": "autofill" - } - }, { - "preset_name": "month", - "values": { - "form_snippet": "month.html", - "display_snippet": "month.html", - "validators": "isomonth" + "form_snippet": "confirm.html", + "display_snippet": "confirm.html", + "validators": "approval_required" } } ] - } +} diff --git a/ckanext/zarr/schemas/dcat_dublin.yaml b/ckanext/zarr/schemas/dcat_dublin.yaml index 641c2b2..4f55be0 100644 --- a/ckanext/zarr/schemas/dcat_dublin.yaml +++ b/ckanext/zarr/schemas/dcat_dublin.yaml @@ -49,6 +49,13 @@ dataset_fields: required: true display_group: Overview +- field_name: no_pii_confirmation + label: No PII Confirmation + form_placeholder: I confirm that this dataset contains no personally identifiable information. + preset: approval + required: true + display_group: Overview + - start_form_page: title: Metadata diff --git a/ckanext/zarr/templates/scheming/display_snippets/confirm.html b/ckanext/zarr/templates/scheming/display_snippets/confirm.html new file mode 100644 index 0000000..c9d0152 --- /dev/null +++ b/ckanext/zarr/templates/scheming/display_snippets/confirm.html @@ -0,0 +1,6 @@ +{% set value = data[field.field_name] %} +{% if value == '1' %} + {{ _('Yes') }} +{% else %} + {{ _('No') }} +{% endif %} diff --git a/ckanext/zarr/templates/scheming/form_snippets/confirm.html b/ckanext/zarr/templates/scheming/form_snippets/confirm.html new file mode 100644 index 0000000..e94bb0c --- /dev/null +++ b/ckanext/zarr/templates/scheming/form_snippets/confirm.html @@ -0,0 +1,43 @@ +{% import 'macros/form.html' as form %} + + + +{%- call form.input_block( + label=h.scheming_language_text(field.label), + classes=field.classes if 'classes' in field else ['control-medium'], + error=errors[field.field_name], + is_required=h.scheming_field_required(field)) -%} + + {% set placeholder = h.scheming_language_text(field.form_placeholder) %} + + +
+ + +
+ + {%- snippet 'scheming/form_snippets/help_text.html', field=field -%} +{%- endcall -%} diff --git a/ckanext/zarr/validators.py b/ckanext/zarr/validators.py index d52e1df..7b8d087 100644 --- a/ckanext/zarr/validators.py +++ b/ckanext/zarr/validators.py @@ -116,3 +116,12 @@ def validator(key, data, errors, context): except ValueError: errors[key].append(_("Invalid date format. Please use YYYY-MM-DD")) return validator + + +@scheming_validator +def approval_required(field, schema): + def validator(key, data, errors, context): + value = data.get(key) + if value != "1": + errors[key].append(_(f"This field is mandatory.")) + return validator