From 29b877d9edce11f9123c4d85ff7317a98c06cd61 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Sat, 25 May 2024 13:03:51 +0200 Subject: [PATCH] =?UTF-8?q?Script=20API=20pour=20enregistrer=20tous=20les?= =?UTF-8?q?=20r=C3=A9sultats.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/api/dump_all_results.py | 72 +++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 tests/api/dump_all_results.py diff --git a/tests/api/dump_all_results.py b/tests/api/dump_all_results.py new file mode 100644 index 000000000..65d58d617 --- /dev/null +++ b/tests/api/dump_all_results.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +# -*- mode: python -*- +# -*- coding: utf-8 -*- + +"""Exemple utilisation API ScoDoc 9 + + Usage: + cd /opt/scodoc/tests/api + python -i dump_all_results.py + + Demande les résultats (bulletins JSON) de tous les semestres + et les enregistre dans un fichier json + (`all_results.json` du rép. courant) + + Sur M1 en 9.6.966, processed 1219 formsemestres in 645.64s + Sur M1 en 9.6.967, processed 1219 formsemestres in 626.22s + +""" + +import json +from pprint import pprint as pp +import sys +import time +import urllib3 +from setup_test_api import ( + API_PASSWORD, + API_URL, + API_USER, + APIError, + CHECK_CERTIFICATE, + get_auth_headers, + GET, + POST_JSON, + SCODOC_URL, +) + + +if not CHECK_CERTIFICATE: + urllib3.disable_warnings() + +print(f"SCODOC_URL={SCODOC_URL}") +print(f"API URL={API_URL}") + + +HEADERS = get_auth_headers(API_USER, API_PASSWORD) + + +# Liste de tous les formsemestres (de tous les depts) +formsemestres = GET("/formsemestres/query", headers=HEADERS) +print(f"{len(formsemestres)} formsemestres") + +# +all_results = [] +t0 = time.time() +for formsemestre in formsemestres: + print(f"{formsemestre['session_id']}\t", end="", flush=True) + t = time.time() + result = GET(f"/formsemestre/{formsemestre['id']}/resultats", headers=HEADERS) + print(f"{(time.time()-t):3.2f}s") + all_results.append( + f""" +{{ + "formsemestre" : { json.dumps(formsemestre, indent=1, sort_keys=True) }, + "resultats" : { json.dumps(result, indent=1, sort_keys=True) } +}} + """ + ) + +print(f"Processed {len(formsemestres)} formsemestres in {(time.time()-t0):3.2f}s") + +with open("all_results.json", "w", encoding="utf-8") as f: + f.write("[\n" + ",\n".join(all_results) + "\n]")