From d2d237a1c7869674cfea6fb34a466283644435ca Mon Sep 17 00:00:00 2001
From: Jesper Zedlitz <jesper.zedlitz@melund.landsh.de>
Date: Thu, 9 Jun 2022 09:10:49 +0200
Subject: [PATCH] =?UTF-8?q?Pr=C3=BCfung=20der=20Formatangabe=20geben=20die?=
 =?UTF-8?q?=20Liste=20der=20EU?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ckanext/odsh/plugin.py     | 2 +-
 ckanext/odsh/validation.py | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py
index 02f683a2..46bebec5 100644
--- a/ckanext/odsh/plugin.py
+++ b/ckanext/odsh/plugin.py
@@ -106,7 +106,7 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
 
         schema['resources'].update({
             'url': [toolkit.get_converter('not_empty')],
-            'format': [toolkit.get_converter('not_empty')],
+            'format': [toolkit.get_converter('odsh_validate_format')],
         })
 
         schema['extras'].update({
diff --git a/ckanext/odsh/validation.py b/ckanext/odsh/validation.py
index a7ca167e..762877d4 100644
--- a/ckanext/odsh/validation.py
+++ b/ckanext/odsh/validation.py
@@ -354,6 +354,12 @@ def validate_relatedPackage(data):
         except logic.NotFound:
             raise toolkit.Invalid("relatedPackage: package '{}' not found".format(data))
 
+def validate_formats(data, errors):
+    if not data in ['7Z','AAB','AAC','AKN4EU','AKN4EU_ZIP','APK','APPX','ARC','ARC_GZ','ARCINFO_COV','ARJ','ATOM','AZW','BIN','BITS','BMP','BWF','BZIP2','CSS','CSV','DBF','DCR','DEB','DGN','DMG','DMP','DOC','DOCX','DTD_SGML','DTD_XML','DWG','DXF','E00','EAR','ECW','EPS','EPUB','ETSI_XML','EXE','FMX2','FMX3','FMX4','FMX4_ZIP','GDB','GEOJSON','GEOTIFF','GIF','GML','GMZ','GPKG','GRID','GRID_ASCII','GZIP','HDF','HDT','HTML','HTML5','HTML_SIMPL','ICS','IMMC_XML','INDD','IPA','ISO','ISO_ZIP','JAR','JATS','JPEG','JPEG2000','JS','JSON','JSON_LD','KML','KMZ','LAS','LAZ','LEG','LHA','LPK','LZIP','LZMA','LZO','MAP_PRVW','MAP_SRVC','MBOX','MDB','METS','METS_ZIP','MHTML','MIF_MID','MOBI','MOP','MPEG2','MPEG4','MPEG4_AVC','MRSID','MSG_HTTP','MSI','MXD','N3','NETCDF','OCTET','ODB','ODC','ODF','ODG','ODP','ODS','ODT','OP_DATPRO','OVF','OWL','PDF','PDF1X','PDFA1A','PDFA1B','PDFA2A','PDFA2B','PDFA3','PDFUA','PDFX','PDFX1A','PDFX2A','PDFX4','PL','PNG','PPS','PPSX','PPT','PPTX','PS','PSD','PWP','QGS','RAR','RDF','RDFA','RDF_N_QUADS','RDF_N_TRIPLES','RDF_TRIG','RDF_TRIX','RDF_TURTLE','RDF_XML','REST','RPM','RSS','RTF','SB3','SCHEMA_XML','SDMX','SGML','SHP','SKOS_XML','SPARQLQ','SPARQLQRES','SQL','STL','SVG','SWM','TAB','TAB_RSTR','TAR','TAR_GZ','TAR_XZ','TIFF','TIFF_FX','TMX','TSV','TXT','UNGEN','WAR','WARC','WARC_GZ','WCS_SRVC','WFS_SRVC','WIM','WMS_SRVC','WORLD','XHTML','XHTML_SIMPL','XLIFF','XLS','XLSB','XLSM','XLSX','XML','XSLFO','XSLT','XYZ','XZ','Z','ZIP']:
+        raise toolkit.Invalid(_('Only formats on the list of the EU Publications Office are allowed.'))
+
+    return data
+
 def get_validators():
     return {
         'known_spatial_uri': known_spatial_uri,
@@ -362,4 +368,5 @@ def get_validators():
         'validate_licenseAttributionByText': validate_licenseAttributionByText,
         'tpsh_validate_subject': validate_subject,
 	'tpsh_validate_relatedPackage': validate_relatedPackage,
+        'odsh_validate_format': validate_formats,
     }
-- 
GitLab