nupes-elections/main.py

80 lines
3.2 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/env python3
import argparse
import os
from dotenv import load_dotenv
from sqlalchemy import create_engine
2024-06-18 12:37:06 +00:00
from nupes.scripts import import_geographie
2024-06-20 10:17:56 +00:00
from nupes.scripts import legislatives2022, europeennes2024, legislatives2024
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="législatives")
2024-06-20 10:17:56 +00:00
parser.add_argument('--year', '-y', type=int, help="Année de l'élection",
choices=[2022, 2024], default=2024)
parser.add_argument('--round', '-r', type=int,
help="Tour de l'élection à importer (0 pour tous, valeur par défaut)",
choices=[0, 1, 2], default=0)
parser.add_argument('action', help="Action à réaliser",
choices=["import_candidats", "import_geographie", "import_resultats",
"import_resultats_web", "export_resultats"])
2024-06-13 10:21:11 +00:00
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()
data_round = args.round
debug = args.debug
2024-06-13 10:21:11 +00:00
verbose = args.verbose
2024-06-18 12:37:06 +00:00
match args.type, args.year:
2024-06-20 10:17:56 +00:00
case "législatives", 2022:
election_module = legislatives2022
2024-06-18 12:37:06 +00:00
case "européennes", 2024:
election_module = europeennes2024
2024-06-20 10:17:56 +00:00
case "législatives", 2024:
election_module = legislatives2024
2024-06-18 12:37:06 +00:00
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":
2024-06-13 10:21:11 +00:00
if verbose:
print(f"Import des données géographiques pour les élections {args.type} {args.year}")
2024-06-13 10:21:11 +00:00
import_geographie.run(engine, verbose)
case "import_candidats":
2024-06-13 10:21:11 +00:00
if verbose:
print(f"Import des candidats pour les élections {args.type} {args.year}")
2024-06-18 12:37:06 +00:00
election_module.import_candidats.run(engine, verbose)
case "import_resultats":
2024-06-13 10:21:11 +00:00
if verbose:
print(f"Import des résultats pour les élections {args.type} {args.year}")
election_module.import_resultats.run(engine, data_round, verbose)
case "import_resultats_web":
2024-06-13 10:21:11 +00:00
if verbose:
print(f"Import des résultats depuis le web pour les élections {args.type} {args.year}")
2024-06-18 12:37:06 +00:00
election_module.import_resultats_web.run(engine, verbose)
2024-06-08 21:06:41 +00:00
case "export_resultats":
2024-06-13 10:21:11 +00:00
if verbose:
print(f"Export des résultats pour les élections {args.type} {args.year}")
2024-06-18 12:37:06 +00:00
election_module.export_resultats.run(engine, verbose)
case _:
print(f"Action {args.action} non reconnue")
if __name__ == "__main__":
main()