Skip to content

Commit

Permalink
fix: fix entities counts in the final report
Browse files Browse the repository at this point in the history
  • Loading branch information
jacquesfize committed Feb 14, 2025
1 parent 757dfaf commit f6f069d
Showing 1 changed file with 23 additions and 9 deletions.
32 changes: 23 additions & 9 deletions backend/geonature/core/imports/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,15 +93,29 @@ def do_import_in_destination(self, import_id):
BibFields.name_field.in_(imprt.fieldmapping.keys()),
)
).all()
columns_to_count_unique_entities = [
transient_table.c[field.dest_column] for field in fields
]
n_valid_data = db.session.execute(
select(func.count(func.distinct(*columns_to_count_unique_entities)))
.select_from(transient_table)
.where(transient_table.c.id_import == imprt.id_import)
.where(transient_table.c[entity.validity_column] == True)
).scalar()

id_field = (
entity.unique_column.dest_field if entity.unique_column.dest_field in fields else None
)
data_fields_query = [transient_table.c[field.dest_field] for field in fields]

query = select(*data_fields_query).where(
transient_table.c.id_import == imprt.id_import,
transient_table.c[entity.validity_column] == True,
)

def count_select(query_cte):
count_ = "*"
# if multiple entities and the entity has a unique column we base the count on the unique column

if entity.unique_column and len(entities) > 1 and id_field:
count_ = func.distinct(query_cte.c[id_field])
return count_

valid_data_cte = query.cte()
n_valid_data = db.session.scalar(
select(func.count(count_select(valid_data_cte))).select_from(valid_data_cte)
)
count_entities += n_valid_data
imprt.statistics["import_count"] = count_entities

Expand Down

0 comments on commit f6f069d

Please sign in to comment.