diff --git a/app/stac_api/migrations/0068_alter_asset_media_type_and_more.py b/app/stac_api/migrations/0068_alter_asset_media_type_and_more.py new file mode 100644 index 00000000..7ffc3d9e --- /dev/null +++ b/app/stac_api/migrations/0068_alter_asset_media_type_and_more.py @@ -0,0 +1,250 @@ +# Generated by Django 5.0.11 on 2025-08-14 14:19 + +from django.db import migrations +from django.db import models + + +class Migration(migrations.Migration): + + dependencies = [ + ('stac_api', '0067_update_conformance'), + ] + + operations = [ + migrations.AlterField( + model_name='asset', + name='media_type', + field=models.CharField( + choices= + [( + 'application/vnd.apache.parquet', + 'Apache Parquet column-oriented data file format (application/vnd.apache.parquet)' + ), + ( + 'application/x.ascii-grid+zip', + 'Zipped ESRI ASCII raster format (.asc) (application/x.ascii-grid+zip)' + ), + ('application/x.ascii-xyz+zip', 'Zipped XYZ (.xyz) (application/x.ascii-xyz+zip)'), + ('application/x.e00+zip', 'Zipped e00 (application/x.e00+zip)'), + ('application/x.geotiff+zip', 'Zipped GeoTIFF (application/x.geotiff+zip)'), + ('image/tiff; application=geotiff', 'GeoTIFF (image/tiff; application=geotiff)'), + ('application/x.tiff+zip', 'Zipped TIFF (application/x.tiff+zip)'), + ('application/x.png+zip', 'Zipped PNG (application/x.png+zip)'), + ('application/x.jpeg+zip', 'Zipped JPEG (application/x.jpeg+zip)'), + ( + 'application/vnd.google-earth.kml+xml', + 'KML (application/vnd.google-earth.kml+xml)' + ), + ( + 'application/vnd.google-earth.kmz', + 'Zipped KML (application/vnd.google-earth.kmz)' + ), ('application/x.dxf+zip', 'Zipped DXF (application/x.dxf+zip)'), + ('application/gml+xml', 'GML (application/gml+xml)'), + ('application/x.gml+zip', 'Zipped GML (application/x.gml+zip)'), + ('application/vnd.las', 'LIDAR (application/vnd.las)'), + ('application/vnd.laszip', 'Zipped LIDAR (application/vnd.laszip)'), + ('application/x.vnd.las+zip', 'Zipped LAS (application/x.vnd.las+zip)'), + ( + 'application/vnd.laszip+copc', + 'Cloud Optimized Point Cloud (COPC) (application/vnd.laszip+copc)' + ), + ('application/x.shapefile+zip', + 'Zipped Shapefile (application/x.shapefile+zip)'), ( + 'application/x.filegdb+zip', + 'Zipped File Geodatabase (application/x.filegdb+zip)' + ), + ( + 'application/x.filegdbp+zip', + 'Zipped File Geodatabase (ArcGIS Pro) (application/x.filegdbp+zip)' + ), + ( + 'application/x.ms-access+zip', + 'Zipped Personal Geodatabase (application/x.ms-access+zip)' + ), ('application/x.ms-excel+zip', 'Zipped Excel (application/x.ms-excel+zip)'), + ('application/x.tab+zip', 'Zipped Mapinfo-TAB (application/x.tab+zip)'), + ( + 'application/x.tab-raster+zip', + 'Zipped Mapinfo-Raster-TAB (application/x.tab-raster+zip)' + ), ('application/x.csv+zip', + 'Zipped CSV (application/x.csv+zip)'), ('text/csv', 'CSV (text/csv)'), + ('application/geopackage+sqlite3', + 'Geopackage (application/geopackage+sqlite3)'), ( + 'application/x.geopackage+zip', + 'Zipped Geopackage (application/x.geopackage+zip)' + ), ('application/geo+json', 'GeoJSON (application/geo+json)'), + ('application/x.geojson+zip', 'Zipped GeoJSON (application/x.geojson+zip)'), + ( + 'application/x.interlis; version=2.3', + 'Interlis 2 (application/x.interlis; version=2.3)' + ), + ( + 'application/x.interlis+zip; version=2.3', + 'Zipped XTF (2.3) (application/x.interlis+zip; version=2.3)' + ), + ( + 'application/x.interlis; version=2.4', + 'Interlis 2 (application/x.interlis; version=2.4)' + ), + ( + 'application/x.interlis+zip; version=2.4', + 'Zipped XTF (2.4) (application/x.interlis+zip; version=2.4)' + ), + ( + 'application/x.interlis; version=1', + 'Interlis 1 (application/x.interlis; version=1)' + ), + ( + 'application/x.interlis+zip; version=1', + 'Zipped ITF (application/x.interlis+zip; version=1)' + ), + ( + 'image/tiff; application=geotiff; profile=cloud-optimized', + 'Cloud Optimized GeoTIFF (COG) (image/tiff; application=geotiff; profile=cloud-optimized)' + ), ('application/pdf', 'PDF (application/pdf)'), + ('application/x.pdf+zip', 'Zipped PDF (application/x.pdf+zip)'), + ('application/json', 'JSON (application/json)'), + ('application/x.json+zip', 'Zipped JSON (application/x.json+zip)'), + ('application/x-netcdf', 'NetCDF (application/x-netcdf)'), + ('application/x.netcdf+zip', 'Zipped NetCDF (application/x.netcdf+zip)'), + ('application/xml', 'XML (application/xml)'), + ('application/x.xml+zip', 'Zipped XML (application/x.xml+zip)'), + ( + 'application/vnd.mapbox-vector-tile', + 'mbtiles (application/vnd.mapbox-vector-tile)' + ), ('text/plain', + 'Text (text/plain)'), ('text/x.plain+zip', 'Zipped text (text/x.plain+zip)'), + ('application/x.dwg+zip', 'Zipped DWG (application/x.dwg+zip)'), + ('application/zip', + 'Generic Zip File (application/zip)'), ('image/tiff', 'TIFF (image/tiff)'), + ('image/jpeg', 'JPEG (image/jpeg)'), ('image/png', 'PNG (image/png)'), + ('application/vnd.sqlite3', 'sqlite (application/vnd.sqlite3)'), + ('application/grib', 'GRIB/GRIB2 (application/grib)'), + ('application/x-hdf5', 'HDF5 (application/x-hdf5)')], + help_text= + "This media type will be used as Content-Type header for the asset's object upon upload.", + max_length=200 + ), + ), + migrations.AlterField( + model_name='collectionasset', + name='media_type', + field=models.CharField( + choices=[ + ( + 'application/vnd.apache.parquet', + 'Apache Parquet column-oriented data file format (application/vnd.apache.parquet)' + ), + ( + 'application/x.ascii-grid+zip', + 'Zipped ESRI ASCII raster format (.asc) (application/x.ascii-grid+zip)' + ), + ( + 'application/x.ascii-xyz+zip', + 'Zipped XYZ (.xyz) (application/x.ascii-xyz+zip)' + ), ('application/x.e00+zip', 'Zipped e00 (application/x.e00+zip)'), + ('application/x.geotiff+zip', 'Zipped GeoTIFF (application/x.geotiff+zip)'), ( + 'image/tiff; application=geotiff', + 'GeoTIFF (image/tiff; application=geotiff)' + ), ('application/x.tiff+zip', 'Zipped TIFF (application/x.tiff+zip)'), + ('application/x.png+zip', 'Zipped PNG (application/x.png+zip)'), + ('application/x.jpeg+zip', 'Zipped JPEG (application/x.jpeg+zip)'), + ( + 'application/vnd.google-earth.kml+xml', + 'KML (application/vnd.google-earth.kml+xml)' + ), + ( + 'application/vnd.google-earth.kmz', + 'Zipped KML (application/vnd.google-earth.kmz)' + ), ('application/x.dxf+zip', 'Zipped DXF (application/x.dxf+zip)'), + ('application/gml+xml', 'GML (application/gml+xml)'), + ('application/x.gml+zip', 'Zipped GML (application/x.gml+zip)'), + ('application/vnd.las', 'LIDAR (application/vnd.las)'), + ('application/vnd.laszip', 'Zipped LIDAR (application/vnd.laszip)'), + ('application/x.vnd.las+zip', 'Zipped LAS (application/x.vnd.las+zip)'), + ( + 'application/vnd.laszip+copc', + 'Cloud Optimized Point Cloud (COPC) (application/vnd.laszip+copc)' + ), ( + 'application/x.shapefile+zip', + 'Zipped Shapefile (application/x.shapefile+zip)' + ), + ( + 'application/x.filegdb+zip', + 'Zipped File Geodatabase (application/x.filegdb+zip)' + ), + ( + 'application/x.filegdbp+zip', + 'Zipped File Geodatabase (ArcGIS Pro) (application/x.filegdbp+zip)' + ), + ( + 'application/x.ms-access+zip', + 'Zipped Personal Geodatabase (application/x.ms-access+zip)' + ), ('application/x.ms-excel+zip', 'Zipped Excel (application/x.ms-excel+zip)'), + ('application/x.tab+zip', 'Zipped Mapinfo-TAB (application/x.tab+zip)'), + ( + 'application/x.tab-raster+zip', + 'Zipped Mapinfo-Raster-TAB (application/x.tab-raster+zip)' + ), ('application/x.csv+zip', + 'Zipped CSV (application/x.csv+zip)'), ('text/csv', 'CSV (text/csv)'), ( + 'application/geopackage+sqlite3', + 'Geopackage (application/geopackage+sqlite3)' + ), + ( + 'application/x.geopackage+zip', + 'Zipped Geopackage (application/x.geopackage+zip)' + ), ('application/geo+json', 'GeoJSON (application/geo+json)'), + ('application/x.geojson+zip', 'Zipped GeoJSON (application/x.geojson+zip)'), + ( + 'application/x.interlis; version=2.3', + 'Interlis 2 (application/x.interlis; version=2.3)' + ), + ( + 'application/x.interlis+zip; version=2.3', + 'Zipped XTF (2.3) (application/x.interlis+zip; version=2.3)' + ), + ( + 'application/x.interlis; version=2.4', + 'Interlis 2 (application/x.interlis; version=2.4)' + ), + ( + 'application/x.interlis+zip; version=2.4', + 'Zipped XTF (2.4) (application/x.interlis+zip; version=2.4)' + ), + ( + 'application/x.interlis; version=1', + 'Interlis 1 (application/x.interlis; version=1)' + ), + ( + 'application/x.interlis+zip; version=1', + 'Zipped ITF (application/x.interlis+zip; version=1)' + ), + ( + 'image/tiff; application=geotiff; profile=cloud-optimized', + 'Cloud Optimized GeoTIFF (COG) (image/tiff; application=geotiff; profile=cloud-optimized)' + ), ('application/pdf', 'PDF (application/pdf)'), + ('application/x.pdf+zip', 'Zipped PDF (application/x.pdf+zip)'), + ('application/json', 'JSON (application/json)'), + ('application/x.json+zip', 'Zipped JSON (application/x.json+zip)'), + ('application/x-netcdf', 'NetCDF (application/x-netcdf)'), + ('application/x.netcdf+zip', 'Zipped NetCDF (application/x.netcdf+zip)'), + ('application/xml', 'XML (application/xml)'), + ('application/x.xml+zip', 'Zipped XML (application/x.xml+zip)'), + ( + 'application/vnd.mapbox-vector-tile', + 'mbtiles (application/vnd.mapbox-vector-tile)' + ), ('text/plain', 'Text (text/plain)'), + ('text/x.plain+zip', 'Zipped text (text/x.plain+zip)'), + ('application/x.dwg+zip', 'Zipped DWG (application/x.dwg+zip)'), + ('application/zip', + 'Generic Zip File (application/zip)'), ('image/tiff', 'TIFF (image/tiff)'), + ('image/jpeg', 'JPEG (image/jpeg)'), ('image/png', 'PNG (image/png)'), + ('application/vnd.sqlite3', 'sqlite (application/vnd.sqlite3)'), + ('application/grib', 'GRIB/GRIB2 (application/grib)'), + ('application/x-hdf5', 'HDF5 (application/x-hdf5)') + ], + help_text= + "This media type will be used as Content-Type header for the asset's object upon upload.", + max_length=200 + ), + ), + ] diff --git a/app/stac_api/validators.py b/app/stac_api/validators.py index 609e551f..b73f0537 100644 --- a/app/stac_api/validators.py +++ b/app/stac_api/validators.py @@ -104,7 +104,8 @@ MediaType('image/jpeg', 'JPEG', ['.jpeg', '.jpg']), MediaType('image/png', 'PNG', ['.png']), MediaType('application/vnd.sqlite3', 'sqlite', ['.sqlite']), - MediaType('application/grib', 'GRIB/GRIB2', ['.grib', '.grib2']) + MediaType('application/grib', 'GRIB/GRIB2', ['.grib', '.grib2']), + MediaType('application/x-hdf5', 'HDF5', ['.h5']) ] MT_VAR = "[0-9A-Za-z!#$%&'*+.^_`|~-]+"