From cdbd0183f033b7d34eb9965456d2998f2c277490 Mon Sep 17 00:00:00 2001 From: jules cicurel <180195494+jcicurel-pass@users.noreply.github.com> Date: Fri, 7 Feb 2025 17:23:52 +0100 Subject: [PATCH] (PC-33878) script: try ApiAdresse with collective offers offerVenue field --- .../scripts/collective_other_address/main.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 api/src/pcapi/scripts/collective_other_address/main.py diff --git a/api/src/pcapi/scripts/collective_other_address/main.py b/api/src/pcapi/scripts/collective_other_address/main.py new file mode 100644 index 00000000000..2b205aafcac --- /dev/null +++ b/api/src/pcapi/scripts/collective_other_address/main.py @@ -0,0 +1,44 @@ +import csv +import logging +import os +import typing + +from sqlalchemy.sql.expression import func + +from pcapi.app import app +from pcapi.connectors import api_adresse +from pcapi.core.educational import models as educational_models +from pcapi.models import db + + +logger = logging.getLogger(__name__) + +app.app_context().push() + +if __name__ == "__main__": + # try with a sample of 100 collective offers + collective_offers: typing.Iterable[educational_models.CollectiveOffer] = ( + db.session.query(educational_models.CollectiveOffer) + .filter(educational_models.CollectiveOffer.offerVenue.op("->>")("addressType") == "other") + .order_by(func.random()) + .limit(100) + ) + + lines = [] + for collective_offer in collective_offers: + text = collective_offer.offerVenue["otherAddress"].replace("\n", " ").replace(",", " ") + lines.append({"nom": text}) + + payload = api_adresse.format_payload(headers=["nom"], lines=lines) + + backend = api_adresse.ApiAdresseBackend() + result = backend.search_csv(payload=payload, columns=["nom"]) + + with open(f"{os.environ.get('OUTPUT_DIRECTORY')}/result.csv", "w", encoding="utf-8") as result_file: + writer = None + for row in result: + if writer is None: + writer = csv.DictWriter(result_file, fieldnames=row.keys(), delimiter=",") + writer.writeheader() + + writer.writerow(row)