diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py index 02f683a2931a62493afd712aee83f294fa3398e0..46bebec5a1bdf3ada7ee4f8d60bdf5a5bd2fc292 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 a7ca167e3582412da90884ab67d15268b59047c7..762877d4554eb30b8623e91e17ee420cbc4b56bb 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, }