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