Skip to content

Commit bbddc5f

Browse files
committed
feat(ObjectPriority): added priority score when is_loadable is equal
1 parent 525b09f commit bbddc5f

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

src/opengeodeweb_back/geode_functions.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ def is_loadable(geode_object: str, file_absolute_path: str) -> float:
3636
percentage = geode_object_value(geode_object)["is_loadable"](file_absolute_path)
3737
return percentage.value()
3838

39+
def object_priority(geode_object: str, file_absolute_path: str) -> int:
40+
return geode_object_value(geode_object)["object_priority"](file_absolute_path)
3941

4042
def load(geode_object: str, file_absolute_path: str):
4143
return geode_object_value(geode_object)["load"](file_absolute_path)
@@ -181,11 +183,25 @@ def list_geode_objects(
181183
os.path.basename(file_absolute_path)
182184
)
183185
geode_objects_filtered_list = filter_geode_objects(key)
184-
185186
for geode_object in geode_objects_filtered_list:
186187
if has_creator(geode_object, file_extension):
187188
loadability_score = is_loadable(geode_object, file_absolute_path)
188189
return_dict[geode_object] = {"is_loadable": loadability_score}
190+
if return_dict:
191+
max_loadability_score = max(obj_info["is_loadable"] for obj_info in return_dict.values())
192+
best_objects = {
193+
object_name: object_info
194+
for object_name, object_info in return_dict.items()
195+
if object_info["is_loadable"] == max_loadability_score
196+
}
197+
if len(best_objects) > 1:
198+
best_object_name = max(
199+
best_objects,
200+
key=lambda name: object_priority(name, file_absolute_path),
201+
)
202+
return {best_object_name: return_dict[best_object_name]}
203+
else:
204+
return best_objects
189205
return return_dict
190206

191207

0 commit comments

Comments
 (0)