#!/usr/bin/env python3 import argparse import os from dotenv import load_dotenv from sqlalchemy import create_engine from nupes.scripts import import_geographie from nupes.scripts import europeennes2024 def parse_args(): parser = argparse.ArgumentParser(description="Gestion d'élections") parser.add_argument('--type', '-t', type=str, help="Type d'élection", choices=["présidentielle", "législatives", "sénatoriales", "européennes", "régionales", "départementales", "municipales"], default="européennes") parser.add_argument('--year', '-y', type=int, help="Année de l'élection", default=2024) parser.add_argument('action', help="Action à réaliser", choices=["import_candidats", "import_geographie", "import_resultats", "import_resultats_web", "export_resultats"]) parser.add_argument('--debug', '-d', action='store_true', help="Mode debug (affiche toutes les requêtes SQL)") parser.add_argument('--verbose', '-v', action='store_true', help="Mode verbeux") return parser.parse_args() def main(): load_dotenv() args = parse_args() debug = args.debug verbose = args.verbose match args.type, args.year: case "européennes", 2024: election_module = europeennes2024 case _: print(f"Type d'élection {args.type} {args.year} non reconnu") return engine = create_engine(os.getenv("SQLALCHEMY_URL"), echo=debug) match args.action: case "import_geographie": if verbose: print(f"Import des données géographiques pour les élections {args.type} {args.year}") import_geographie.run(engine, verbose) case "import_candidats": if verbose: print(f"Import des candidats pour les élections {args.type} {args.year}") election_module.import_candidats.run(engine, verbose) case "import_resultats": if verbose: print(f"Import des résultats pour les élections {args.type} {args.year}") election_module.import_resultats.run(engine, verbose) case "import_resultats_web": if verbose: print(f"Import des résultats depuis le web pour les élections {args.type} {args.year}") election_module.import_resultats_web.run(engine, verbose) case "export_resultats": if verbose: print(f"Export des résultats pour les élections {args.type} {args.year}") election_module.export_resultats.run(engine, verbose) case _: print(f"Action {args.action} non reconnue") if __name__ == "__main__": main()