OpenGeodeWeb-Back 5.11.0__py3-none-any.whl → 5.11.1rc1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of OpenGeodeWeb-Back might be problematic. Click here for more details.

Files changed (33) hide show
  1. opengeodeweb_back/geode_functions.py +2 -2
  2. opengeodeweb_back/routes/blueprint_routes.py +92 -182
  3. opengeodeweb_back/routes/create/blueprint_create.py +24 -70
  4. opengeodeweb_back/routes/create/schemas/__init__.py +2 -0
  5. opengeodeweb_back/routes/create/schemas/create_aoi.py +19 -0
  6. opengeodeweb_back/routes/create/schemas/create_point.py +10 -0
  7. opengeodeweb_back/routes/models/blueprint_models.py +22 -27
  8. opengeodeweb_back/routes/models/schemas/__init__.py +2 -0
  9. opengeodeweb_back/routes/models/schemas/mesh_components.py +7 -0
  10. opengeodeweb_back/routes/models/schemas/vtm_component_indices.py +7 -0
  11. opengeodeweb_back/routes/schemas/__init__.py +14 -0
  12. opengeodeweb_back/routes/schemas/allowed_files.py +8 -0
  13. opengeodeweb_back/routes/schemas/allowed_objects.py +9 -0
  14. opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +8 -0
  15. opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py +7 -0
  16. opengeodeweb_back/routes/schemas/inspect_file.py +8 -0
  17. opengeodeweb_back/routes/schemas/kill.py +7 -0
  18. opengeodeweb_back/routes/schemas/missing_files.py +8 -0
  19. opengeodeweb_back/routes/schemas/ping.py +7 -0
  20. opengeodeweb_back/routes/schemas/polygon_attribute_names.py +7 -0
  21. opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +7 -0
  22. opengeodeweb_back/routes/schemas/save_viewable_file.py +8 -0
  23. opengeodeweb_back/routes/schemas/texture_coordinates.py +7 -0
  24. opengeodeweb_back/routes/schemas/upload_file.py +8 -0
  25. opengeodeweb_back/routes/schemas/vertex_attribute_names.py +7 -0
  26. opengeodeweb_back/utils_functions.py +2 -4
  27. {opengeodeweb_back-5.11.0.dist-info → opengeodeweb_back-5.11.1rc1.dist-info}/METADATA +2 -2
  28. opengeodeweb_back-5.11.1rc1.dist-info/RECORD +56 -0
  29. opengeodeweb_back-5.11.0.dist-info/RECORD +0 -35
  30. {opengeodeweb_back-5.11.0.dist-info → opengeodeweb_back-5.11.1rc1.dist-info}/WHEEL +0 -0
  31. {opengeodeweb_back-5.11.0.dist-info → opengeodeweb_back-5.11.1rc1.dist-info}/entry_points.txt +0 -0
  32. {opengeodeweb_back-5.11.0.dist-info → opengeodeweb_back-5.11.1rc1.dist-info}/licenses/LICENSE +0 -0
  33. {opengeodeweb_back-5.11.0.dist-info → opengeodeweb_back-5.11.1rc1.dist-info}/top_level.txt +0 -0
@@ -175,7 +175,7 @@ def filter_geode_objects(key: str = None):
175
175
  return geode_objects_filtered_list
176
176
 
177
177
 
178
- def list_input_extensions(key: str = None):
178
+ def list_input_extensions(key: str | None = None) -> list[str]:
179
179
  extensions_list = []
180
180
  geode_objects_filtered_list = filter_geode_objects(key)
181
181
  for geode_object in geode_objects_filtered_list:
@@ -192,7 +192,7 @@ def has_creator(geode_object: str, extension: str):
192
192
 
193
193
  def list_geode_objects(
194
194
  file_absolute_path: str,
195
- key: str = None,
195
+ key: str | None = None,
196
196
  ):
197
197
  return_dict = {}
198
198
  file_extension = utils_functions.extension_from_filename(
@@ -1,18 +1,16 @@
1
1
  # Standard library imports
2
- import json
3
2
  import os
4
3
  import time
5
4
 
6
5
  # Third party imports
7
6
  import flask
8
- import opengeode
9
7
  import werkzeug
8
+ from opengeodeweb_microservice.schemas import get_schemas_dict
10
9
 
11
10
  # Local application imports
12
- from .. import geode_functions, utils_functions
13
- from opengeodeweb_microservice.database.data import Data
14
- from opengeodeweb_microservice.database.connection import get_session
11
+ from opengeodeweb_back import geode_functions, utils_functions
15
12
  from .models import blueprint_models
13
+ from . import schemas
16
14
 
17
15
  routes = flask.Blueprint("routes", __name__, url_prefix="/opengeodeweb_back")
18
16
 
@@ -23,39 +21,25 @@ routes.register_blueprint(
23
21
  name=blueprint_models.routes.name,
24
22
  )
25
23
 
26
- schemas = os.path.join(os.path.dirname(__file__), "schemas")
27
-
28
- with open(
29
- os.path.join(schemas, "allowed_files.json"),
30
- "r",
31
- ) as file:
32
- allowed_files_json = json.load(file)
24
+ schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
33
25
 
34
26
 
35
27
  @routes.route(
36
- allowed_files_json["route"],
37
- methods=allowed_files_json["methods"],
28
+ schemas_dict["allowed_files"]["route"],
29
+ methods=schemas_dict["allowed_files"]["methods"],
38
30
  )
39
- def allowed_files():
40
- utils_functions.validate_request(flask.request, allowed_files_json)
41
- extensions = geode_functions.list_input_extensions(
42
- flask.request.get_json()["supported_feature"]
43
- )
31
+ def allowed_files() -> flask.Response:
32
+ utils_functions.validate_request(flask.request, schemas_dict["allowed_files"])
33
+ params = schemas.AllowedFiles.from_dict(flask.request.get_json())
34
+ extensions = geode_functions.list_input_extensions(params.supported_feature)
44
35
  return flask.make_response({"extensions": extensions}, 200)
45
36
 
46
37
 
47
- with open(
48
- os.path.join(schemas, "upload_file.json"),
49
- "r",
50
- ) as file:
51
- upload_file_json = json.load(file)
52
-
53
-
54
38
  @routes.route(
55
- upload_file_json["route"],
56
- methods=upload_file_json["methods"],
39
+ schemas_dict["upload_file"]["route"],
40
+ methods=schemas_dict["upload_file"]["methods"],
57
41
  )
58
- def upload_file():
42
+ def upload_file() -> flask.Response:
59
43
  if flask.request.method == "OPTIONS":
60
44
  return flask.make_response({}, 200)
61
45
 
@@ -68,48 +52,34 @@ def upload_file():
68
52
  return flask.make_response({"message": "File uploaded"}, 201)
69
53
 
70
54
 
71
- with open(
72
- os.path.join(schemas, "allowed_objects.json"),
73
- "r",
74
- ) as file:
75
- allowed_objects_json = json.load(file)
76
-
77
-
78
55
  @routes.route(
79
- allowed_objects_json["route"],
80
- methods=allowed_objects_json["methods"],
56
+ schemas_dict["allowed_objects"]["route"],
57
+ methods=schemas_dict["allowed_objects"]["methods"],
81
58
  )
82
- def allowed_objects():
59
+ def allowed_objects() -> flask.Response:
83
60
  if flask.request.method == "OPTIONS":
84
61
  return flask.make_response({}, 200)
85
62
 
86
- utils_functions.validate_request(flask.request, allowed_objects_json)
87
- file_absolute_path = geode_functions.upload_file_path(
88
- flask.request.get_json()["filename"]
89
- )
63
+ utils_functions.validate_request(flask.request, schemas_dict["allowed_objects"])
64
+ params = schemas.AllowedObjects.from_dict(flask.request.get_json())
65
+ file_absolute_path = geode_functions.upload_file_path(params.filename)
90
66
  allowed_objects = geode_functions.list_geode_objects(
91
- file_absolute_path, flask.request.get_json()["supported_feature"]
67
+ file_absolute_path, params.supported_feature
92
68
  )
93
69
  return flask.make_response({"allowed_objects": allowed_objects}, 200)
94
70
 
95
71
 
96
- with open(
97
- os.path.join(schemas, "missing_files.json"),
98
- "r",
99
- ) as file:
100
- missing_files_json = json.load(file)
101
-
102
-
103
72
  @routes.route(
104
- missing_files_json["route"],
105
- methods=missing_files_json["methods"],
73
+ schemas_dict["missing_files"]["route"],
74
+ methods=schemas_dict["missing_files"]["methods"],
106
75
  )
107
- def missing_files():
108
- utils_functions.validate_request(flask.request, missing_files_json)
109
- file_path = geode_functions.upload_file_path(flask.request.get_json()["filename"])
76
+ def missing_files() -> flask.Response:
77
+ utils_functions.validate_request(flask.request, schemas_dict["missing_files"])
78
+ params = schemas.MissingFiles.from_dict(flask.request.get_json())
79
+ file_path = geode_functions.upload_file_path(params.filename)
110
80
 
111
81
  additional_files = geode_functions.additional_files(
112
- flask.request.get_json()["input_geode_object"],
82
+ params.input_geode_object,
113
83
  file_path,
114
84
  )
115
85
 
@@ -139,22 +109,16 @@ def missing_files():
139
109
  )
140
110
 
141
111
 
142
- with open(
143
- os.path.join(schemas, "geographic_coordinate_systems.json"),
144
- "r",
145
- ) as file:
146
- geographic_coordinate_systems_json = json.load(file)
147
-
148
-
149
112
  @routes.route(
150
- geographic_coordinate_systems_json["route"],
151
- methods=geographic_coordinate_systems_json["methods"],
113
+ schemas_dict["geographic_coordinate_systems"]["route"],
114
+ methods=schemas_dict["geographic_coordinate_systems"]["methods"],
152
115
  )
153
- def crs_converter_geographic_coordinate_systems():
154
- utils_functions.validate_request(flask.request, geographic_coordinate_systems_json)
155
- infos = geode_functions.geographic_coordinate_systems(
156
- flask.request.get_json()["input_geode_object"]
116
+ def crs_converter_geographic_coordinate_systems() -> flask.Response:
117
+ utils_functions.validate_request(
118
+ flask.request, schemas_dict["geographic_coordinate_systems"]
157
119
  )
120
+ params = schemas.GeographicCoordinateSystems.from_dict(flask.request.get_json())
121
+ infos = geode_functions.geographic_coordinate_systems(params.input_geode_object)
158
122
  crs_list = []
159
123
  for info in infos:
160
124
  crs = {}
@@ -166,55 +130,36 @@ def crs_converter_geographic_coordinate_systems():
166
130
  return flask.make_response({"crs_list": crs_list}, 200)
167
131
 
168
132
 
169
- with open(
170
- os.path.join(schemas, "inspect_file.json"),
171
- "r",
172
- ) as file:
173
- inspect_file_json = json.load(file)
174
-
175
-
176
133
  @routes.route(
177
- inspect_file_json["route"],
178
- methods=inspect_file_json["methods"],
134
+ schemas_dict["inspect_file"]["route"],
135
+ methods=schemas_dict["inspect_file"]["methods"],
179
136
  )
180
- def inspect_file():
181
- utils_functions.validate_request(flask.request, inspect_file_json)
182
-
183
- file_path = geode_functions.upload_file_path(flask.request.get_json()["filename"])
184
- data = geode_functions.load(
185
- flask.request.get_json()["input_geode_object"], file_path
186
- )
187
- class_inspector = geode_functions.inspect(
188
- flask.request.get_json()["input_geode_object"], data
189
- )
137
+ def inspect_file() -> flask.Response:
138
+ utils_functions.validate_request(flask.request, schemas_dict["inspect_file"])
139
+ params = schemas.InspectFile.from_dict(flask.request.get_json())
140
+ file_path = geode_functions.upload_file_path(params.filename)
141
+ data = geode_functions.load(params.input_geode_object, file_path)
142
+ class_inspector = geode_functions.inspect(params.input_geode_object, data)
190
143
  inspection_result = geode_functions.get_inspector_children(class_inspector)
191
144
  return flask.make_response({"inspection_result": inspection_result}, 200)
192
145
 
193
146
 
194
- with open(
195
- os.path.join(schemas, "geode_objects_and_output_extensions.json"),
196
- "r",
197
- ) as file:
198
- geode_objects_and_output_extensions_json = json.load(file)
199
-
200
-
201
147
  @routes.route(
202
- geode_objects_and_output_extensions_json["route"],
203
- methods=geode_objects_and_output_extensions_json["methods"],
148
+ schemas_dict["geode_objects_and_output_extensions"]["route"],
149
+ methods=schemas_dict["geode_objects_and_output_extensions"]["methods"],
204
150
  )
205
- def geode_objects_and_output_extensions():
151
+ def geode_objects_and_output_extensions() -> flask.Response:
206
152
  utils_functions.validate_request(
207
- flask.request, geode_objects_and_output_extensions_json
153
+ flask.request, schemas_dict["geode_objects_and_output_extensions"]
208
154
  )
209
- file_path = geode_functions.upload_file_path(flask.request.get_json()["filename"])
155
+ params = schemas.GeodeObjectsAndOutputExtensions.from_dict(flask.request.get_json())
156
+ file_path = geode_functions.upload_file_path(params.filename)
210
157
  data = geode_functions.load(
211
- flask.request.get_json()["input_geode_object"],
158
+ params.input_geode_object,
212
159
  file_path,
213
160
  )
214
161
  geode_objects_and_output_extensions = (
215
- geode_functions.geode_objects_output_extensions(
216
- flask.request.get_json()["input_geode_object"], data
217
- )
162
+ geode_functions.geode_objects_output_extensions(params.input_geode_object, data)
218
163
  )
219
164
  return flask.make_response(
220
165
  {"geode_objects_and_output_extensions": geode_objects_and_output_extensions},
@@ -222,57 +167,44 @@ def geode_objects_and_output_extensions():
222
167
  )
223
168
 
224
169
 
225
- with open(
226
- os.path.join(schemas, "save_viewable_file.json"),
227
- "r",
228
- ) as file:
229
- save_viewable_file_json = json.load(file)
230
-
231
-
232
170
  @routes.route(
233
- save_viewable_file_json["route"],
234
- methods=save_viewable_file_json["methods"],
171
+ schemas_dict["save_viewable_file"]["route"],
172
+ methods=schemas_dict["save_viewable_file"]["methods"],
235
173
  )
236
- def save_viewable_file():
237
- utils_functions.validate_request(flask.request, save_viewable_file_json)
174
+ def save_viewable_file() -> flask.Response:
175
+ utils_functions.validate_request(flask.request, schemas_dict["save_viewable_file"])
176
+ params = schemas.SaveViewableFile.from_dict(flask.request.get_json())
238
177
  return flask.make_response(
239
178
  utils_functions.generate_native_viewable_and_light_viewable_from_file(
240
- geode_object=flask.request.get_json()["input_geode_object"],
241
- input_filename=flask.request.get_json()["filename"],
179
+ geode_object=params.input_geode_object,
180
+ input_filename=params.filename,
242
181
  ),
243
182
  200,
244
183
  )
245
184
 
246
185
 
247
- with open(os.path.join(schemas, "texture_coordinates.json"), "r") as file:
248
- texture_coordinates_json = json.load(file)
249
-
250
-
251
186
  @routes.route(
252
- texture_coordinates_json["route"],
253
- methods=texture_coordinates_json["methods"],
187
+ schemas_dict["texture_coordinates"]["route"],
188
+ methods=schemas_dict["texture_coordinates"]["methods"],
254
189
  )
255
- def texture_coordinates():
256
- utils_functions.validate_request(flask.request, texture_coordinates_json)
257
- data = geode_functions.load_data(flask.request.get_json().get("id"))
190
+ def texture_coordinates() -> flask.Response:
191
+ utils_functions.validate_request(flask.request, schemas_dict["texture_coordinates"])
192
+ params = schemas.TextureCoordinates.from_dict(flask.request.get_json())
193
+ data = geode_functions.load_data(params.id)
258
194
  texture_coordinates = data.texture_manager().texture_names()
259
195
  return flask.make_response({"texture_coordinates": texture_coordinates}, 200)
260
196
 
261
197
 
262
- with open(
263
- os.path.join(schemas, "vertex_attribute_names.json"),
264
- "r",
265
- ) as file:
266
- vertex_attribute_names_json = json.load(file)
267
-
268
-
269
198
  @routes.route(
270
- vertex_attribute_names_json["route"],
271
- methods=vertex_attribute_names_json["methods"],
199
+ schemas_dict["vertex_attribute_names"]["route"],
200
+ methods=schemas_dict["vertex_attribute_names"]["methods"],
272
201
  )
273
- def vertex_attribute_names():
274
- utils_functions.validate_request(flask.request, vertex_attribute_names_json)
275
- data = geode_functions.load_data(flask.request.get_json().get("id"))
202
+ def vertex_attribute_names() -> flask.Response:
203
+ utils_functions.validate_request(
204
+ flask.request, schemas_dict["vertex_attribute_names"]
205
+ )
206
+ params = schemas.VertexAttributeNames.from_dict(flask.request.get_json())
207
+ data = geode_functions.load_data(params.id)
276
208
  vertex_attribute_names = data.vertex_attribute_manager().attribute_names()
277
209
  return flask.make_response(
278
210
  {
@@ -282,20 +214,16 @@ def vertex_attribute_names():
282
214
  )
283
215
 
284
216
 
285
- with open(
286
- os.path.join(schemas, "polygon_attribute_names.json"),
287
- "r",
288
- ) as file:
289
- polygon_attribute_names_json = json.load(file)
290
-
291
-
292
217
  @routes.route(
293
- polygon_attribute_names_json["route"],
294
- methods=polygon_attribute_names_json["methods"],
218
+ schemas_dict["polygon_attribute_names"]["route"],
219
+ methods=schemas_dict["polygon_attribute_names"]["methods"],
295
220
  )
296
- def polygon_attribute_names():
297
- utils_functions.validate_request(flask.request, polygon_attribute_names_json)
298
- data = geode_functions.load_data(flask.request.get_json().get("id"))
221
+ def polygon_attribute_names() -> flask.Response:
222
+ utils_functions.validate_request(
223
+ flask.request, schemas_dict["polygon_attribute_names"]
224
+ )
225
+ params = schemas.PolygonAttributeNames.from_dict(flask.request.get_json())
226
+ data = geode_functions.load_data(params.id)
299
227
  polygon_attribute_names = data.polygon_attribute_manager().attribute_names()
300
228
  return flask.make_response(
301
229
  {
@@ -305,20 +233,16 @@ def polygon_attribute_names():
305
233
  )
306
234
 
307
235
 
308
- with open(
309
- os.path.join(schemas, "polyhedron_attribute_names.json"),
310
- "r",
311
- ) as file:
312
- polyhedron_attribute_names_json = json.load(file)
313
-
314
-
315
236
  @routes.route(
316
- polyhedron_attribute_names_json["route"],
317
- methods=polyhedron_attribute_names_json["methods"],
237
+ schemas_dict["polyhedron_attribute_names"]["route"],
238
+ methods=schemas_dict["polyhedron_attribute_names"]["methods"],
318
239
  )
319
- def polyhedron_attribute_names():
320
- utils_functions.validate_request(flask.request, polyhedron_attribute_names_json)
321
- data = geode_functions.load_data(flask.request.get_json().get("id"))
240
+ def polyhedron_attribute_names() -> flask.Response:
241
+ utils_functions.validate_request(
242
+ flask.request, schemas_dict["polyhedron_attribute_names"]
243
+ )
244
+ params = schemas.PolyhedronAttributeNames.from_dict(flask.request.get_json())
245
+ data = geode_functions.load_data(params.id)
322
246
  polyhedron_attribute_names = data.polyhedron_attribute_manager().attribute_names()
323
247
  return flask.make_response(
324
248
  {
@@ -328,31 +252,17 @@ def polyhedron_attribute_names():
328
252
  )
329
253
 
330
254
 
331
- with open(
332
- os.path.join(schemas, "ping.json"),
333
- "r",
334
- ) as file:
335
- ping_json = json.load(file)
336
-
337
-
338
255
  @routes.route(
339
- ping_json["route"],
340
- methods=ping_json["methods"],
256
+ schemas_dict["ping"]["route"],
257
+ methods=schemas_dict["ping"]["methods"],
341
258
  )
342
- def ping():
343
- utils_functions.validate_request(flask.request, ping_json)
259
+ def ping() -> flask.Response:
260
+ utils_functions.validate_request(flask.request, schemas_dict["ping"])
344
261
  flask.current_app.config.update(LAST_PING_TIME=time.time())
345
262
  return flask.make_response({"message": "Flask server is running"}, 200)
346
263
 
347
264
 
348
- with open(
349
- os.path.join(schemas, "kill.json"),
350
- "r",
351
- ) as file:
352
- kill_json = json.load(file)
353
-
354
-
355
- @routes.route(kill_json["route"], methods=kill_json["methods"])
265
+ @routes.route(schemas_dict["kill"]["route"], methods=schemas_dict["kill"]["methods"])
356
266
  def kill() -> flask.Response:
357
267
  print("Manual server kill, shutting down...", flush=True)
358
268
  os._exit(0)
@@ -1,117 +1,71 @@
1
1
  # Standard library imports
2
- import json
3
2
  import os
4
- from typing import Any, TypedDict
5
3
 
6
4
  # Third party imports
7
5
  import flask
8
6
  import opengeode
7
+ from opengeodeweb_microservice.schemas import get_schemas_dict
9
8
 
10
9
  # Local application imports
11
10
  from opengeodeweb_back import geode_functions, utils_functions
11
+ from . import schemas
12
12
 
13
13
  routes = flask.Blueprint("create", __name__, url_prefix="/create")
14
- schemas = os.path.join(os.path.dirname(__file__), "schemas")
14
+ schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
15
15
 
16
- # --- Type definitions ---
17
- type SchemaDict = dict[str, Any]
18
16
 
19
-
20
- class PointDict(TypedDict):
21
- x: float
22
- y: float
23
-
24
-
25
- class CreatePointParams(TypedDict):
26
- name: str
27
- x: float
28
- y: float
29
- z: float
30
-
31
-
32
- class CreateAOIParams(TypedDict):
33
- name: str
34
- points: list[PointDict]
35
- z: float
36
-
37
-
38
- # Load schemas
39
- with open(os.path.join(schemas, "create_point.json"), "r") as file:
40
- create_point_json: SchemaDict = json.load(file)
41
-
42
-
43
- @routes.route(create_point_json["route"], methods=create_point_json["methods"])
17
+ @routes.route(
18
+ schemas_dict["create_point"]["route"],
19
+ methods=schemas_dict["create_point"]["methods"],
20
+ )
44
21
  def create_point() -> flask.Response:
45
22
  """Endpoint to create a single point in 3D space."""
46
23
  print(f"create_point : {flask.request=}", flush=True)
47
- utils_functions.validate_request(flask.request, create_point_json)
48
-
49
- # Extract and validate data from request
50
- params: CreatePointParams = flask.request.get_json()
51
- name = params["name"]
52
- x = params["x"]
53
- y = params["y"]
54
- z = params["z"]
24
+ utils_functions.validate_request(flask.request, schemas_dict["create_point"])
25
+ params = schemas.CreatePoint.from_dict(flask.request.get_json())
55
26
 
56
27
  # Create the point
57
- class_ = geode_functions.geode_object_class("PointSet3D")
58
- pointset = class_.create()
28
+ pointset = geode_functions.geode_object_class("PointSet3D").create()
59
29
  builder = geode_functions.create_builder("PointSet3D", pointset)
60
- builder.set_name(name)
61
- builder.create_point(opengeode.Point3D([x, y, z]))
30
+ builder.set_name(params.name)
31
+ builder.create_point(opengeode.Point3D([params.x, params.y, params.z]))
62
32
 
63
33
  # Save and get info
64
34
  result = utils_functions.generate_native_viewable_and_light_viewable_from_object(
65
35
  geode_object="PointSet3D",
66
36
  data=pointset,
67
37
  )
68
- result["name"] = name
69
38
  return flask.make_response(result, 200)
70
39
 
71
40
 
72
- # Load schema for AOI creation
73
- with open(os.path.join(schemas, "create_aoi.json"), "r") as file:
74
- create_aoi_json: SchemaDict = json.load(file)
75
-
76
-
77
- @routes.route(create_aoi_json["route"], methods=create_aoi_json["methods"])
41
+ @routes.route(
42
+ schemas_dict["create_aoi"]["route"], methods=schemas_dict["create_aoi"]["methods"]
43
+ )
78
44
  def create_aoi() -> flask.Response:
79
45
  """Endpoint to create an Area of Interest (AOI) as an EdgedCurve3D."""
80
46
  print(f"create_aoi : {flask.request=}", flush=True)
81
- utils_functions.validate_request(flask.request, create_aoi_json)
82
-
83
- # Extract and validate data from request
84
- params: CreateAOIParams = flask.request.get_json()
85
- name = params["name"]
86
- points = params["points"]
87
- z = params["z"]
47
+ utils_functions.validate_request(flask.request, schemas_dict["create_aoi"])
48
+ params = schemas.CreateAoi.from_dict(flask.request.get_json())
88
49
 
89
50
  # Create the edged curve
90
- class_ = geode_functions.geode_object_class("EdgedCurve3D")
91
- edged_curve = class_.create()
51
+ edged_curve = geode_functions.geode_object_class("EdgedCurve3D").create()
92
52
  builder = geode_functions.create_builder("EdgedCurve3D", edged_curve)
93
- builder.set_name(name)
53
+ builder.set_name(params.name)
94
54
 
95
55
  # Create vertices first
96
- vertex_indices: list[int] = []
97
- for point in points:
98
- vertex_id = builder.create_point(opengeode.Point3D([point["x"], point["y"], z]))
99
- vertex_indices.append(vertex_id)
56
+ for point in params.points:
57
+ pp = opengeode.Point3D([point.x, point.y, params.z])
58
+ builder.create_point(opengeode.Point3D([point.x, point.y, params.z]))
100
59
 
101
60
  # Create edges between consecutive vertices and close the loop
102
- num_vertices = len(vertex_indices)
61
+ num_vertices = len(params.points)
103
62
  for i in range(num_vertices):
104
63
  next_i = (i + 1) % num_vertices
105
- edge_id = builder.create_edge()
106
- builder.set_edge_vertex(opengeode.EdgeVertex(edge_id, 0), vertex_indices[i])
107
- builder.set_edge_vertex(
108
- opengeode.EdgeVertex(edge_id, 1), vertex_indices[next_i]
109
- )
64
+ builder.create_edge_with_vertices(i, next_i)
110
65
 
111
66
  # Save and get info
112
67
  result = utils_functions.generate_native_viewable_and_light_viewable_from_object(
113
68
  geode_object="EdgedCurve3D",
114
69
  data=edged_curve,
115
70
  )
116
- result["name"] = name
117
71
  return flask.make_response(result, 200)
@@ -0,0 +1,2 @@
1
+ from .create_point import *
2
+ from .create_aoi import *
@@ -0,0 +1,19 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+ from typing import List, Optional
4
+
5
+
6
+ @dataclass
7
+ class Point(DataClassJsonMixin):
8
+ x: float
9
+ y: float
10
+
11
+
12
+ @dataclass
13
+ class CreateAoi(DataClassJsonMixin):
14
+ name: str
15
+ """Name of the AOI"""
16
+
17
+ points: List[Point]
18
+ z: float
19
+ id: Optional[str] = None
@@ -0,0 +1,10 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class CreatePoint(DataClassJsonMixin):
7
+ name: str
8
+ x: float
9
+ y: float
10
+ z: float
@@ -1,29 +1,29 @@
1
- import json
2
1
  import os
3
2
  import xml.etree.ElementTree as ET
4
3
  import flask
5
- from ... import geode_functions, utils_functions
4
+ from opengeodeweb_microservice.schemas import get_schemas_dict
6
5
 
7
- routes = flask.Blueprint("models", __name__, url_prefix="/models")
8
-
9
-
10
- schemas = os.path.join(os.path.dirname(__file__), "schemas")
6
+ from opengeodeweb_back import geode_functions, utils_functions
7
+ from . import schemas
11
8
 
12
- with open(os.path.join(schemas, "vtm_component_indices.json"), "r") as file:
13
- vtm_component_indices_json = json.load(file)
9
+ routes = flask.Blueprint("models", __name__, url_prefix="/models")
10
+ schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
14
11
 
15
12
 
16
13
  @routes.route(
17
- vtm_component_indices_json["route"], methods=vtm_component_indices_json["methods"]
14
+ schemas_dict["vtm_component_indices"]["route"],
15
+ methods=schemas_dict["vtm_component_indices"]["methods"],
18
16
  )
19
- def uuid_to_flat_index():
20
- utils_functions.validate_request(flask.request, vtm_component_indices_json)
21
-
22
- vtm_file_path = geode_functions.data_file_path(
23
- flask.request.get_json().get("id"), "viewable.vtm"
17
+ def uuid_to_flat_index() -> flask.Response:
18
+ utils_functions.validate_request(
19
+ flask.request, schemas_dict["vtm_component_indices"]
24
20
  )
21
+ params = schemas.VtmComponentIndices.from_dict(flask.request.get_json())
22
+ vtm_file_path = geode_functions.data_file_path(params.id, "viewable.vtm")
25
23
  tree = ET.parse(vtm_file_path)
26
24
  root = tree.find("vtkMultiBlockDataSet")
25
+ if root is None:
26
+ raise Exception("Failed to read viewable file")
27
27
  uuid_to_flat_index = {}
28
28
  current_index = 0
29
29
  for elem in root.iter():
@@ -33,22 +33,17 @@ def uuid_to_flat_index():
33
33
  return flask.make_response({"uuid_to_flat_index": uuid_to_flat_index}, 200)
34
34
 
35
35
 
36
- def extract_model_uuids(model):
36
+ @routes.route(
37
+ schemas_dict["mesh_components"]["route"],
38
+ methods=schemas_dict["mesh_components"]["methods"],
39
+ )
40
+ def extract_uuids_endpoint() -> flask.Response:
41
+ utils_functions.validate_request(flask.request, schemas_dict["mesh_components"])
42
+ params = schemas.MeshComponents.from_dict(flask.request.get_json())
43
+ model = geode_functions.load_data(params.id)
37
44
  mesh_components = model.mesh_components()
38
45
  uuid_dict = {}
39
46
  for mesh_component, ids in mesh_components.items():
40
47
  component_name = mesh_component.get()
41
48
  uuid_dict[component_name] = [id.string() for id in ids]
42
- return uuid_dict
43
-
44
-
45
- with open(os.path.join(schemas, "mesh_components.json"), "r") as file:
46
- mesh_components_json = json.load(file)
47
-
48
-
49
- @routes.route(mesh_components_json["route"], methods=mesh_components_json["methods"])
50
- def extract_uuids_endpoint():
51
- utils_functions.validate_request(flask.request, mesh_components_json)
52
- model = geode_functions.load_data(flask.request.get_json().get("id"))
53
- uuid_dict = extract_model_uuids(model)
54
49
  return flask.make_response({"uuid_dict": uuid_dict}, 200)
@@ -0,0 +1,2 @@
1
+ from .vtm_component_indices import *
2
+ from .mesh_components import *
@@ -0,0 +1,7 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class MeshComponents(DataClassJsonMixin):
7
+ id: str
@@ -0,0 +1,7 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class VtmComponentIndices(DataClassJsonMixin):
7
+ id: str
@@ -0,0 +1,14 @@
1
+ from .vertex_attribute_names import *
2
+ from .upload_file import *
3
+ from .texture_coordinates import *
4
+ from .save_viewable_file import *
5
+ from .polyhedron_attribute_names import *
6
+ from .polygon_attribute_names import *
7
+ from .ping import *
8
+ from .missing_files import *
9
+ from .kill import *
10
+ from .inspect_file import *
11
+ from .geographic_coordinate_systems import *
12
+ from .geode_objects_and_output_extensions import *
13
+ from .allowed_objects import *
14
+ from .allowed_files import *
@@ -0,0 +1,8 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+ from typing import Optional
4
+
5
+
6
+ @dataclass
7
+ class AllowedFiles(DataClassJsonMixin):
8
+ supported_feature: Optional[str] = None
@@ -0,0 +1,9 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+ from typing import Optional
4
+
5
+
6
+ @dataclass
7
+ class AllowedObjects(DataClassJsonMixin):
8
+ filename: str
9
+ supported_feature: Optional[str] = None
@@ -0,0 +1,8 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class GeodeObjectsAndOutputExtensions(DataClassJsonMixin):
7
+ filename: str
8
+ input_geode_object: str
@@ -0,0 +1,7 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class GeographicCoordinateSystems(DataClassJsonMixin):
7
+ input_geode_object: str
@@ -0,0 +1,8 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class InspectFile(DataClassJsonMixin):
7
+ filename: str
8
+ input_geode_object: str
@@ -0,0 +1,7 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class Kill(DataClassJsonMixin):
7
+ pass
@@ -0,0 +1,8 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class MissingFiles(DataClassJsonMixin):
7
+ filename: str
8
+ input_geode_object: str
@@ -0,0 +1,7 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class Ping(DataClassJsonMixin):
7
+ pass
@@ -0,0 +1,7 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class PolygonAttributeNames(DataClassJsonMixin):
7
+ id: str
@@ -0,0 +1,7 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class PolyhedronAttributeNames(DataClassJsonMixin):
7
+ id: str
@@ -0,0 +1,8 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class SaveViewableFile(DataClassJsonMixin):
7
+ filename: str
8
+ input_geode_object: str
@@ -0,0 +1,7 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class TextureCoordinates(DataClassJsonMixin):
7
+ id: str
@@ -0,0 +1,8 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+ from typing import Optional
4
+
5
+
6
+ @dataclass
7
+ class UploadFile(DataClassJsonMixin):
8
+ filename: Optional[str] = None
@@ -0,0 +1,7 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class VertexAttributeNames(DataClassJsonMixin):
7
+ id: str
@@ -16,6 +16,7 @@ import werkzeug
16
16
 
17
17
  # Local application imports
18
18
  from . import geode_functions
19
+ from opengeodeweb_microservice.schemas import SchemaDict
19
20
  from opengeodeweb_microservice.database.data import Data
20
21
  from opengeodeweb_microservice.database.connection import get_session
21
22
 
@@ -97,7 +98,7 @@ def versions(list_packages: list[str]) -> list[dict[str, str]]:
97
98
  return list_with_versions
98
99
 
99
100
 
100
- def validate_request(request: flask.Request, schema: dict[str, str]) -> None:
101
+ def validate_request(request: flask.Request, schema: SchemaDict) -> None:
101
102
  json_data = request.get_json(force=True, silent=True)
102
103
 
103
104
  if json_data is None:
@@ -226,8 +227,6 @@ def generate_native_viewable_and_light_viewable_from_object(
226
227
  data_entry = Data.create(
227
228
  geode_object=geode_object,
228
229
  viewer_object=geode_functions.get_object_type(geode_object),
229
- input_file="",
230
- additional_files=[],
231
230
  )
232
231
  data_path = create_data_folder_from_id(data_entry.id)
233
232
  return save_all_viewables_and_return_info(geode_object, data, data_entry, data_path)
@@ -240,7 +239,6 @@ def generate_native_viewable_and_light_viewable_from_file(
240
239
  geode_object=geode_object,
241
240
  viewer_object=geode_functions.get_object_type(geode_object),
242
241
  input_file=input_filename,
243
- additional_files=[],
244
242
  )
245
243
 
246
244
  data_path = create_data_folder_from_id(data_entry.id)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 5.11.0
3
+ Version: 5.11.1rc1
4
4
  Summary: OpenGeodeWeb-Back is an open source framework that proposes handy python functions and wrappers for the OpenGeode ecosystem
5
5
  Author-email: Geode-solutions <team-web@geode-solutions.com>
6
6
  Project-URL: Homepage, https://github.com/Geode-solutions/OpenGeodeWeb-Back
@@ -27,7 +27,7 @@ Requires-Dist: opengeode-geosciencesio==5.8.1
27
27
  Requires-Dist: opengeode-inspector==6.8.2
28
28
  Requires-Dist: opengeode-io==7.4.2
29
29
  Requires-Dist: werkzeug==3.1.2
30
- Requires-Dist: opengeodeweb-microservice==1.*,>=1.0.5
30
+ Requires-Dist: opengeodeweb-microservice==1.*,>=1.0.6rc1
31
31
  Dynamic: license-file
32
32
 
33
33
  <h1 align="center">OpenGeodeWeb-Back<sup><i>by Geode-solutions</i></sup></h1>
@@ -0,0 +1,56 @@
1
+ opengeodeweb_back/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ opengeodeweb_back/app.py,sha256=SX7csXbWxlfeazrgSYuplJu9Z4LxupCd5T8O6bFN36g,5090
3
+ opengeodeweb_back/app_config.py,sha256=z-omTiGj3-y0BZ1IchAM6EoTdC7vAX6B4OymEnuM0T4,843
4
+ opengeodeweb_back/geode_functions.py,sha256=ot7JTJCdAIV9VIgVHElEevYJgltIySBvxt0ToMckqcU,10831
5
+ opengeodeweb_back/geode_objects.py,sha256=_NclGPa024kCwUHdORkFuXYtiZBmQpgq6sO3LRkBhe8,27776
6
+ opengeodeweb_back/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
7
+ opengeodeweb_back/test_utils.py,sha256=18AbRW9-tfKkPcmRGilTTHXI7S3armYyV7Vdy5UvUKM,794
8
+ opengeodeweb_back/utils_functions.py,sha256=lpsjkI1nN26t4yXPUHXTtYfjFZipHBLyqMgZD9Vy528,9348
9
+ opengeodeweb_back/routes/blueprint_routes.py,sha256=ZnngJ-nm2a2ByzN1gC0dcf7CBhzCrerNIqKx1PH5ySo,9471
10
+ opengeodeweb_back/routes/create/blueprint_create.py,sha256=QPqNW8pm5XdMdXODubMPt5v_fJ3g5yKhyanyMdBaFwo,2626
11
+ opengeodeweb_back/routes/create/schemas/__init__.py,sha256=4IibXXKIb2Z0miuAuAbooCq3ALeVwl0Ogg0DuJe3uqo,54
12
+ opengeodeweb_back/routes/create/schemas/create_aoi.json,sha256=bFL5ZqhKAKsBmGwIQANzdIp1vGeH5WAHnRpZYsUZ1tQ,999
13
+ opengeodeweb_back/routes/create/schemas/create_aoi.py,sha256=cAquXr36qscsBJIZVstnh6MYNhbAAw-5hIT8cWC4DGw,345
14
+ opengeodeweb_back/routes/create/schemas/create_point.json,sha256=ddfDzWKj4cMYhF6oJzvRh0bpTiQo1hqLFODK-vJjxHQ,484
15
+ opengeodeweb_back/routes/create/schemas/create_point.py,sha256=WOBtyhRYd_QDtmQLOyQANoZxw7lx-271oL6RHn93Bus,187
16
+ opengeodeweb_back/routes/models/blueprint_models.py,sha256=nSI-yorSfj3SCQbKNnz8AQglKDKFC21Es-VlFdU2C6A,1935
17
+ opengeodeweb_back/routes/models/schemas/__init__.py,sha256=kNhYSdP7ti6BEalSO3fNfJJf_S7u0kEQDFRdBTDVNQY,68
18
+ opengeodeweb_back/routes/models/schemas/mesh_components.json,sha256=JmQUvpy7HpGS6FlThZLx1YjHqiInRTqUZ_Ft5MfOzEE,239
19
+ opengeodeweb_back/routes/models/schemas/mesh_components.py,sha256=qjbOb4yvIOTyzZ9GMufYs2b_jbU-Vh6F-cAPA8UMatk,149
20
+ opengeodeweb_back/routes/models/schemas/vtm_component_indices.json,sha256=0XILVxhAxi0RhQFDZZoUeGcAnBMroWz3kNJS7-6_dKQ,239
21
+ opengeodeweb_back/routes/models/schemas/vtm_component_indices.py,sha256=ky2OptukQp9ioMOgoQkXW_EWy5WAsY9aGXuMMT4BLZg,154
22
+ opengeodeweb_back/routes/schemas/__init__.py,sha256=dj4cevHiakkiHR4bynqd4Mo75gwmBQwhfucVj6WdEL8,468
23
+ opengeodeweb_back/routes/schemas/allowed_files.json,sha256=pRsGf39LiJpl3zEGLg4IqvRtm7iUx3Wq4Tb4tSFXGV0,234
24
+ opengeodeweb_back/routes/schemas/allowed_files.py,sha256=tDOH58oBeTeeIS4CqHjgMd7TgSEIFXKtYElIuTEhSIA,207
25
+ opengeodeweb_back/routes/schemas/allowed_objects.json,sha256=oy_YYpFzgDICx-keWqNIUpQM3zzB4eE3H6mPNxH9rWc,361
26
+ opengeodeweb_back/routes/schemas/allowed_objects.py,sha256=Ov82leuMXKUCIJvvxO_Ms3Tf9tqsU1yJGIv4mBwG9QE,227
27
+ opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json,sha256=tp83tPQaxTltQrdL8D3TnG8pqY_2fgAaYVeTWPXO0qI,371
28
+ opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py,sha256=RFdr-thObKND33WJ7JI7JkBkozJ4C8aKO8ZlofeCJs4,200
29
+ opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json,sha256=lnPqevRRlUASF4ObmpG8ChH3c2LHNB99Si292S3OsLU,279
30
+ opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py,sha256=FLh9V1zK8ICttpEjnNO-5ND_b0FOp7WbjUue5ohnNEI,178
31
+ opengeodeweb_back/routes/schemas/inspect_file.json,sha256=WoFF2hgZCUfqSDFJRq1sLpivjCQ6TCvSHPH8pKFY6KM,348
32
+ opengeodeweb_back/routes/schemas/inspect_file.py,sha256=hU0HWhypidcLuOZFAs1jffEKxxZ5V-4YR4DuBQRuxgs,180
33
+ opengeodeweb_back/routes/schemas/kill.json,sha256=tZEv4TuTNNthet2MsxUPLV3ivW6tIGjYTfxd6Jl9zaM,144
34
+ opengeodeweb_back/routes/schemas/kill.py,sha256=H1Vgo6wN-TITi889SCijzw_JScwSZcVq81_UfvQyIwQ,136
35
+ opengeodeweb_back/routes/schemas/missing_files.json,sha256=eOBAkiphA-2xG6e-OAy7wcJK2FeY0YFYXJlLdr8SNSc,349
36
+ opengeodeweb_back/routes/schemas/missing_files.py,sha256=YZY9ONvd3OrEZA8ac68xLdualtzLMbukAhMaNCtzr9A,181
37
+ opengeodeweb_back/routes/schemas/ping.json,sha256=MhI5jtrjMsAsfIKEzdY8p1HyV9xv4O3hYfESWw6tkyE,162
38
+ opengeodeweb_back/routes/schemas/ping.py,sha256=J34dAqLmHdMKw-slfrrQD3Jh57XB-i6L_NrTfNy-KpI,136
39
+ opengeodeweb_back/routes/schemas/polygon_attribute_names.json,sha256=1BrpfjcbRL1ZOL4azHIHirqXIc8tpu4xGnMRFEMEshU,241
40
+ opengeodeweb_back/routes/schemas/polygon_attribute_names.py,sha256=e9CjlQ-kEj5Ilbm0xMdLVxONHBcDJi65IlkGhV48xSg,156
41
+ opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json,sha256=Tt6fWBGOWgxOVC-n76_JbOQcZ-Ss-foPghMrQOY-DIE,244
42
+ opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py,sha256=kKRdCTuse75leBA1WomAsl_3iC9kbaS4L-a9n2YfH-c,159
43
+ opengeodeweb_back/routes/schemas/save_viewable_file.json,sha256=pvvEdaC7bNASPMrl3bXzlcA5blgflK0EYp2hBDf74qY,424
44
+ opengeodeweb_back/routes/schemas/save_viewable_file.py,sha256=5KTdx7bPEHXWPFxrUSxe9MsM0NU0o9v3k4ZZMdl3b8I,185
45
+ opengeodeweb_back/routes/schemas/texture_coordinates.json,sha256=2uQueIl1jOmxFG_gIi_vJETR4IurrwuSf8GAnzphk9g,237
46
+ opengeodeweb_back/routes/schemas/texture_coordinates.py,sha256=OdN-yTmPzxU510Ll5ZNm_ebYzAgC8NsQBfBu-qlnaY0,153
47
+ opengeodeweb_back/routes/schemas/upload_file.json,sha256=LJ3U3L5ApKuQDVFIpVT_y2alq4HW_suTvZ3HUucNbhg,219
48
+ opengeodeweb_back/routes/schemas/upload_file.py,sha256=lCgK21UiXYk0BSNsW8BZil9O67gobwie6YdT1ahYuhs,196
49
+ opengeodeweb_back/routes/schemas/vertex_attribute_names.json,sha256=ECIflohiqPZNsflAdkfEzksL4we0JvZhIxUd84Ubctg,240
50
+ opengeodeweb_back/routes/schemas/vertex_attribute_names.py,sha256=aOVLsOuAxxzm-0B04wKZ-mCwoLv8uKGTB6sbuBNlX7g,155
51
+ opengeodeweb_back-5.11.1rc1.dist-info/licenses/LICENSE,sha256=LoTB-aqQvzTGxoTRXNnhNV0LKiqdk2bQv6MB34l8zkI,1079
52
+ opengeodeweb_back-5.11.1rc1.dist-info/METADATA,sha256=stYHREZ8qvyz_lHIm6lnGtFTYp9fsZqNlFaJBuSLmC8,2668
53
+ opengeodeweb_back-5.11.1rc1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
54
+ opengeodeweb_back-5.11.1rc1.dist-info/entry_points.txt,sha256=3W_t5GFc9ROHSIZ55IGvYU3DLHUFQmYOM4Bm9u3Z0cE,71
55
+ opengeodeweb_back-5.11.1rc1.dist-info/top_level.txt,sha256=tN1FZeLIVBrdja2-pbmhg5-tK-JILmmT9OeIBnhlUrQ,18
56
+ opengeodeweb_back-5.11.1rc1.dist-info/RECORD,,
@@ -1,35 +0,0 @@
1
- opengeodeweb_back/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- opengeodeweb_back/app.py,sha256=SX7csXbWxlfeazrgSYuplJu9Z4LxupCd5T8O6bFN36g,5090
3
- opengeodeweb_back/app_config.py,sha256=z-omTiGj3-y0BZ1IchAM6EoTdC7vAX6B4OymEnuM0T4,843
4
- opengeodeweb_back/geode_functions.py,sha256=NzELy9s6AETDnm7tyA_uM2N89zrfeLdblRhzYrBONmw,10804
5
- opengeodeweb_back/geode_objects.py,sha256=_NclGPa024kCwUHdORkFuXYtiZBmQpgq6sO3LRkBhe8,27776
6
- opengeodeweb_back/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
7
- opengeodeweb_back/test_utils.py,sha256=18AbRW9-tfKkPcmRGilTTHXI7S3armYyV7Vdy5UvUKM,794
8
- opengeodeweb_back/utils_functions.py,sha256=gGhNENDyx9ooO1Mb7KWLfgGCJ9F2DZMRpp9EXzEmb9A,9376
9
- opengeodeweb_back/routes/blueprint_routes.py,sha256=xOcC_Urp8C62zX1XJ4ILQPicObPhoYBI-38ObGYH-UA,10251
10
- opengeodeweb_back/routes/create/blueprint_create.py,sha256=rHZbpIJ0dhpWCe8agWMFJCg1uSFiTBGjCO9bnktYyUY,3557
11
- opengeodeweb_back/routes/create/schemas/create_aoi.json,sha256=bFL5ZqhKAKsBmGwIQANzdIp1vGeH5WAHnRpZYsUZ1tQ,999
12
- opengeodeweb_back/routes/create/schemas/create_point.json,sha256=ddfDzWKj4cMYhF6oJzvRh0bpTiQo1hqLFODK-vJjxHQ,484
13
- opengeodeweb_back/routes/models/blueprint_models.py,sha256=Jo9pUDeu1nO3_IbBiuHGk57cc4_fhwxjM0EKNyv1FT0,1874
14
- opengeodeweb_back/routes/models/schemas/mesh_components.json,sha256=JmQUvpy7HpGS6FlThZLx1YjHqiInRTqUZ_Ft5MfOzEE,239
15
- opengeodeweb_back/routes/models/schemas/vtm_component_indices.json,sha256=0XILVxhAxi0RhQFDZZoUeGcAnBMroWz3kNJS7-6_dKQ,239
16
- opengeodeweb_back/routes/schemas/allowed_files.json,sha256=pRsGf39LiJpl3zEGLg4IqvRtm7iUx3Wq4Tb4tSFXGV0,234
17
- opengeodeweb_back/routes/schemas/allowed_objects.json,sha256=oy_YYpFzgDICx-keWqNIUpQM3zzB4eE3H6mPNxH9rWc,361
18
- opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json,sha256=tp83tPQaxTltQrdL8D3TnG8pqY_2fgAaYVeTWPXO0qI,371
19
- opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json,sha256=lnPqevRRlUASF4ObmpG8ChH3c2LHNB99Si292S3OsLU,279
20
- opengeodeweb_back/routes/schemas/inspect_file.json,sha256=WoFF2hgZCUfqSDFJRq1sLpivjCQ6TCvSHPH8pKFY6KM,348
21
- opengeodeweb_back/routes/schemas/kill.json,sha256=tZEv4TuTNNthet2MsxUPLV3ivW6tIGjYTfxd6Jl9zaM,144
22
- opengeodeweb_back/routes/schemas/missing_files.json,sha256=eOBAkiphA-2xG6e-OAy7wcJK2FeY0YFYXJlLdr8SNSc,349
23
- opengeodeweb_back/routes/schemas/ping.json,sha256=MhI5jtrjMsAsfIKEzdY8p1HyV9xv4O3hYfESWw6tkyE,162
24
- opengeodeweb_back/routes/schemas/polygon_attribute_names.json,sha256=1BrpfjcbRL1ZOL4azHIHirqXIc8tpu4xGnMRFEMEshU,241
25
- opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json,sha256=Tt6fWBGOWgxOVC-n76_JbOQcZ-Ss-foPghMrQOY-DIE,244
26
- opengeodeweb_back/routes/schemas/save_viewable_file.json,sha256=pvvEdaC7bNASPMrl3bXzlcA5blgflK0EYp2hBDf74qY,424
27
- opengeodeweb_back/routes/schemas/texture_coordinates.json,sha256=2uQueIl1jOmxFG_gIi_vJETR4IurrwuSf8GAnzphk9g,237
28
- opengeodeweb_back/routes/schemas/upload_file.json,sha256=LJ3U3L5ApKuQDVFIpVT_y2alq4HW_suTvZ3HUucNbhg,219
29
- opengeodeweb_back/routes/schemas/vertex_attribute_names.json,sha256=ECIflohiqPZNsflAdkfEzksL4we0JvZhIxUd84Ubctg,240
30
- opengeodeweb_back-5.11.0.dist-info/licenses/LICENSE,sha256=LoTB-aqQvzTGxoTRXNnhNV0LKiqdk2bQv6MB34l8zkI,1079
31
- opengeodeweb_back-5.11.0.dist-info/METADATA,sha256=na4X9UmOyw0MUsZKYjRBtyZCUp5qgtk-lVnedL501R4,2662
32
- opengeodeweb_back-5.11.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
33
- opengeodeweb_back-5.11.0.dist-info/entry_points.txt,sha256=3W_t5GFc9ROHSIZ55IGvYU3DLHUFQmYOM4Bm9u3Z0cE,71
34
- opengeodeweb_back-5.11.0.dist-info/top_level.txt,sha256=tN1FZeLIVBrdja2-pbmhg5-tK-JILmmT9OeIBnhlUrQ,18
35
- opengeodeweb_back-5.11.0.dist-info/RECORD,,