diff --git a/requirements.in b/requirements.in index f2a7cdef..d92be69f 100644 --- a/requirements.in +++ b/requirements.in @@ -1,10 +1,10 @@ -opengeode-core==16.3.2 -opengeode-io==7.4.9 -opengeode-inspector==6.8.18 -opengeode-geosciences==9.5.11 -opengeode-geosciencesio==5.8.11 -geode-common==33.20.0 -geode-viewables==3.3.5 +opengeode-core==17.0.1 +opengeode-io==7.6.2 +opengeode-inspector==6.8.21 +opengeode-geosciences==9.5.14 +opengeode-geosciencesio==5.8.14 +geode-common==33.21.5 +geode-viewables==3.3.8 flask[async]==3.1.2 -flask-cors==6.0.1 -werkzeug==3.1.2 +flask-cors==6.0.2 +werkzeug==3.1.8 diff --git a/requirements.txt b/requirements.txt index 0e5c74cf..3a4eb2d3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,13 +14,13 @@ flask[async]>=3 # via # -r requirements.in # flask-cors -flask-cors==6.0.1 +flask-cors==6.0.2 # via -r requirements.in -geode-common==33.20.0 +geode-common==33.21.5 # via # -r requirements.in # geode-viewables -geode-viewables==3.3.5 +geode-viewables==3.3.8 # via -r requirements.in itsdangerous>=2 # via flask @@ -31,7 +31,7 @@ markupsafe>=3 # flask # jinja2 # werkzeug -opengeode-core==16.3.2 +opengeode-core==17.0.1 # via # -r requirements.in # geode-common @@ -40,24 +40,23 @@ opengeode-core==16.3.2 # opengeode-geosciencesio # opengeode-inspector # opengeode-io -opengeode-geosciences==9.5.11 +opengeode-geosciences==9.5.14 # via # -r requirements.in # geode-viewables # opengeode-geosciencesio -opengeode-geosciencesio==5.8.11 +opengeode-geosciencesio==5.8.14 # via -r requirements.in -opengeode-inspector==6.8.18 +opengeode-inspector==6.8.21 # via -r requirements.in -opengeode-io==7.4.9 +opengeode-io==7.6.2 # via # -r requirements.in # geode-viewables # opengeode-geosciencesio -werkzeug==3.1.2 +werkzeug==3.1.8 # via # -r requirements.in # flask # flask-cors -opengeodeweb-microservice==1.*,>=1.1.3 diff --git a/src/opengeodeweb_back/routes/blueprint_routes.py b/src/opengeodeweb_back/routes/blueprint_routes.py index ae6cf496..83b3c905 100644 --- a/src/opengeodeweb_back/routes/blueprint_routes.py +++ b/src/opengeodeweb_back/routes/blueprint_routes.py @@ -64,7 +64,10 @@ def upload_file() -> flask.Response: flask.abort(400, "Filename is required") filename = werkzeug.utils.secure_filename(os.path.basename(file.filename)) print(f"{filename=}", flush=True) - file.save(os.path.join(UPLOAD_FOLDER, filename)) + file_path = os.path.join(UPLOAD_FOLDER, filename) + file.save(file_path) + if filename.lower().endswith(".csv.json"): + shutil.copyfile(file_path, os.path.join(UPLOAD_FOLDER, filename[:-9] + ".json")) return flask.make_response({"message": "File uploaded"}, 201) @@ -432,10 +435,11 @@ def export_project() -> flask.Response: for data_id, native_file in rows: base_dir = os.path.join(project_folder, data_id) - - native_path = os.path.join(base_dir, str(native_file)) - if os.path.isfile(native_path): - zip_file.write(native_path, os.path.join(data_id, str(native_file))) + if os.path.isdir(base_dir): + for f_name in os.listdir(base_dir): + file_path = os.path.join(base_dir, f_name) + if os.path.isfile(file_path): + zip_file.write(file_path, os.path.join(data_id, f_name)) zip_file.writestr("snapshot.json", flask.json.dumps(params.snapshot)) diff --git a/tests/data/test.csv b/tests/data/test.csv new file mode 100644 index 00000000..f745cd00 --- /dev/null +++ b/tests/data/test.csv @@ -0,0 +1,5 @@ +X,Y,Z +0.0,0.0,0.0 +1.0,0.0,0.0 +0.0,1.0,0.0 +0.0,0.0,1.0 diff --git a/tests/data/test.csv.json b/tests/data/test.csv.json new file mode 100644 index 00000000..182e3c0b --- /dev/null +++ b/tests/data/test.csv.json @@ -0,0 +1,13 @@ +{ + "separator": ",", + "header_row": 0, + "first_row": 1, + "x_column": 0, + "y_column": 1, + "z_column": 2, + "headerRow": 0, + "firstRow": 1, + "xColumn": 0, + "yColumn": 1, + "zColumn": 2 +} diff --git a/tests/data/test.json b/tests/data/test.json new file mode 100644 index 00000000..182e3c0b --- /dev/null +++ b/tests/data/test.json @@ -0,0 +1,13 @@ +{ + "separator": ",", + "header_row": 0, + "first_row": 1, + "x_column": 0, + "y_column": 1, + "z_column": 2, + "headerRow": 0, + "firstRow": 1, + "xColumn": 0, + "yColumn": 1, + "zColumn": 2 +}