Skip to content

Commit b593f66

Browse files
committed
simplified blueprint & adapt tests
1 parent c41ab44 commit b593f66

File tree

2 files changed

+39
-89
lines changed

2 files changed

+39
-89
lines changed

src/opengeodeweb_back/routes/blueprint_routes.py

Lines changed: 18 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -76,31 +76,10 @@ def upload_file():
7676
UPLOAD_FOLDER = flask.current_app.config["UPLOAD_FOLDER"]
7777
if not os.path.exists(UPLOAD_FOLDER):
7878
os.mkdir(UPLOAD_FOLDER)
79-
8079
file = flask.request.files["file"]
8180
filename = werkzeug.utils.secure_filename(os.path.basename(file.filename))
82-
file_path = os.path.join(UPLOAD_FOLDER, filename)
83-
84-
# Vérifier si le fichier existe déjà
85-
file_existed = os.path.exists(file_path)
86-
if file_existed:
87-
replace_if_exists = flask.request.form.get('replace_if_exists', 'false').lower() == 'true'
88-
if not replace_if_exists:
89-
return flask.make_response({
90-
"error": "File already exists",
91-
"message": f"Le fichier '{filename}' existe déjà. Utilisez 'replace_if_exists=true' pour le remplacer.",
92-
"existing_file": filename
93-
}, 409) # 409 Conflict
94-
95-
file.save(file_path)
96-
97-
response_data = {
98-
"message": "File uploaded",
99-
"filename": filename,
100-
"replaced": file_existed
101-
}
102-
103-
return flask.make_response(response_data, 201)
81+
file.save(os.path.join(UPLOAD_FOLDER, filename))
82+
return flask.make_response({"message": "File uploaded"}, 201)
10483

10584

10685
with open(
@@ -140,30 +119,28 @@ def allowed_objects():
140119
methods=missing_files_json["methods"],
141120
)
142121
def missing_files():
143-
UPLOAD_FOLDER = flask.current_app.config["UPLOAD_FOLDER"]
144122
utils_functions.validate_request(flask.request, missing_files_json)
145-
missing_files = geode_functions.missing_files(
123+
file_path = geode_functions.upload_file_path(flask.request.json["filename"])
124+
125+
additional = geode_functions.additional_files(
146126
flask.request.json["input_geode_object"],
147-
os.path.join(UPLOAD_FOLDER, flask.request.json["filename"]),
127+
file_path,
148128
)
149-
has_missing_files = missing_files.has_missing_files()
150-
151-
mandatory_files = []
152-
for mf in missing_files.mandatory_files:
153-
mandatory_files.append({
154-
"filename": os.path.basename(mf.path),
155-
"is_missing": mf.is_missing,
156-
})
157-
158-
additional_files = []
159-
for af in missing_files.additional_files:
160-
additional_files.append({
161-
"filename": os.path.basename(af.path),
162-
"is_missing": af.is_missing,
163-
})
129+
130+
has_missing_files = any(
131+
f.is_missing for f in additional.mandatory_files + additional.optional_files
132+
)
133+
134+
mandatory_files = [
135+
os.path.basename(f.filename) for f in additional.mandatory_files if f.is_missing
136+
]
137+
additional_files = [
138+
os.path.basename(f.filename) for f in additional.optional_files if f.is_missing
139+
]
164140

165141
return flask.make_response(
166142
{
143+
"has_missing_files": has_missing_files,
167144
"mandatory_files": mandatory_files,
168145
"additional_files": additional_files,
169146
},

tests/test_geode_functions.py

Lines changed: 21 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -48,19 +48,13 @@ def test_missing_files():
4848
input_extensions = geode_functions.geode_object_input_extensions(geode_object)
4949
for input_extension in input_extensions:
5050
file_absolute_path = os.path.join(data_folder, f"test.{input_extension}")
51-
try:
52-
additional = geode_functions.additional_files(
53-
geode_object, file_absolute_path
54-
)
55-
except RuntimeError as e:
56-
print(f"Skipping {file_absolute_path} due to error: {e}")
57-
continue
58-
has_missing = any(
59-
f.is_missing for f in additional.mandatory_files + additional.optional_files
51+
missing_files = geode_functions.additional_files(
52+
geode_object, file_absolute_path
6053
)
61-
assert type(has_missing) is bool
62-
assert isinstance(additional.mandatory_files, list)
63-
assert isinstance(additional.optional_files, list)
54+
mandatory_files = missing_files.mandatory_files
55+
additional_files = missing_files.optional_files
56+
assert type(mandatory_files) is list
57+
assert type(additional_files) is list
6458

6559

6660
def test_is_loadable():
@@ -79,23 +73,6 @@ def test_load():
7973
for input_extension in input_extensions:
8074
print(f"\t{input_extension=}")
8175
file_absolute_path = os.path.join(data_folder, f"test.{input_extension}")
82-
try:
83-
additional = geode_functions.additional_files(
84-
geode_object, file_absolute_path
85-
)
86-
except RuntimeError as e:
87-
print(f"Skipping {file_absolute_path} due to error in additional_files: {e}")
88-
continue
89-
90-
has_missing = any(
91-
f.is_missing for f in additional.mandatory_files + additional.optional_files
92-
)
93-
94-
if has_missing:
95-
print(f"\t\tMissing mandatory: {[f.filename for f in additional.mandatory_files if f.is_missing]}")
96-
print(f"\t\tMissing optional: {[f.filename for f in additional.optional_files if f.is_missing]}")
97-
continue
98-
9976
if geode_functions.is_loadable(geode_object, file_absolute_path):
10077
data = geode_functions.load(geode_object, file_absolute_path)
10178
data_name = data.name()
@@ -180,23 +157,20 @@ def test_geode_object_output_extensions():
180157
for input_extension in input_extensions:
181158
print(f"\t{input_extension=}")
182159
file_absolute_path = os.path.join(data_folder, f"test.{input_extension}")
183-
missing_files = geode_functions.missing_files(
184-
geode_object, file_absolute_path
160+
additional = geode_functions.additional_files(geode_object, file_absolute_path)
161+
has_missing_files = any(
162+
f.is_missing for f in additional.mandatory_files + additional.optional_files
185163
)
186-
has_missing_files = missing_files.has_missing_files()
187164
if has_missing_files:
188-
mandatory_files = missing_files.mandatory_files
189-
print(f"\t\t{mandatory_files=}")
190-
additional_files = missing_files.additional_files
191-
print(f"\t\t{additional_files=}")
192-
file_absolute_path = os.path.join(data_folder, f"test.{input_extension}")
165+
print(f"\t\tMandatory files: {[f.filename for f in additional.mandatory_files]}")
166+
print(f"\t\tAdditional files: {[f.filename for f in additional.optional_files]}")
193167
if geode_functions.is_loadable(geode_object, file_absolute_path):
194168
data = geode_functions.load(geode_object, file_absolute_path)
195169
geode_objets_and_output_extensions = (
196170
geode_functions.geode_objects_output_extensions(geode_object, data)
197171
)
198172
data_name = data.name()
199-
assert type(geode_objets_and_output_extensions) is dict
173+
assert isinstance(geode_objets_and_output_extensions, dict)
200174
for (
201175
output_geode_object,
202176
output_geode_object_value,
@@ -205,8 +179,8 @@ def test_geode_object_output_extensions():
205179
output_extension,
206180
output_extension_value,
207181
) in output_geode_object_value.items():
208-
assert type(output_extension) is str
209-
assert type(output_extension_value["is_saveable"]) is bool
182+
assert isinstance(output_extension, str)
183+
assert isinstance(output_extension_value["is_saveable"], bool)
210184

211185

212186
def test_get_inspector_children():
@@ -221,18 +195,17 @@ def test_get_inspector_children():
221195
file_absolute_path = os.path.join(
222196
data_folder, f"test.{input_extension}"
223197
)
224-
missing_files = geode_functions.missing_files(
198+
additional = geode_functions.additional_files(
225199
geode_object, file_absolute_path
226200
)
227-
has_missing_files = missing_files.has_missing_files()
201+
has_missing_files = any(
202+
f.is_missing for f in additional.mandatory_files + additional.optional_files
203+
)
228204
if has_missing_files:
229-
mandatory_files = missing_files.mandatory_files
205+
mandatory_files = [f.filename for f in additional.mandatory_files]
230206
print(f"\t\t{mandatory_files=}", flush=True)
231-
additional_files = missing_files.additional_files
207+
additional_files = [f.filename for f in additional.optional_files]
232208
print(f"\t\t{additional_files=}", flush=True)
233-
file_absolute_path = os.path.join(
234-
data_folder, f"test.{input_extension}"
235-
)
236209
if geode_functions.is_loadable(geode_object, file_absolute_path):
237210
data = geode_functions.load(geode_object, file_absolute_path)
238211
class_inspector = geode_functions.inspect(geode_object, data)
@@ -242,7 +215,7 @@ def test_get_inspector_children():
242215
)
243216

244217
print(f"\t\t{inspection_result=}", flush=True)
245-
assert type(inspection_result) is dict
218+
assert isinstance(inspection_result, dict)
246219

247220

248221
def test_filter_geode_objects():

0 commit comments

Comments
 (0)