From 7b212bed41aa6a67422580dd46d00c1cb10aa9fb Mon Sep 17 00:00:00 2001 From: Mirza Widihananta Date: Sun, 22 Oct 2023 10:48:27 +0700 Subject: [PATCH] chore: rename component in data dir --- ...pdate_learning_material_info_staging.yaml} | 4 +- .../penegak/2016/2016-BE-01.json | 0 .../penegak/2016/2016-CA-09.json | 0 .../penegak/2016/2016-CH-03.json | 0 .../penegak/2016/2016-CZ-026.json | 0 .../penegak/2016/2016-JP-01.json | 0 .../penegak/2016/2016-LT-02.json | 0 .../penegak/2016/2016-MY-02.json | 0 .../penegak/2016/2016-NL-04.json | 0 .../penegak/2016/2016-SK-02.json | 0 .../penegak/penegak_2016-buku-bebras.json | 0 .../penegak/penegak_2017-buku-bebras.json | 0 .../penegak/penegak_2018-buku-bebras.json | 0 .../penggalang_2016-buku-bebras.json | 0 .../penggalang_2017-buku-bebras.json | 0 .../penggalang_2018-buku-bebras.json | 0 .../siaga/siaga_2016-buku-bebras.json | 0 .../siaga/siaga_2017-buku-bebras.json | 0 .../siaga/siaga_2018-buku-bebras.json | 0 .../sikecil/.gitkeep | 0 .../umum/.gitkeep | 0 utils/scripts/next_weekly_quiz_generator.py | 48 +++++++++++-------- .../scripts/update_bebras_task_collection.py | 23 +++++++++ ...fo.py => update_learning_material_info.py} | 8 ++-- 24 files changed, 56 insertions(+), 27 deletions(-) rename .github/workflows/{update_materials_info_staging.yaml => update_learning_material_info_staging.yaml} (91%) rename data/{question_bank => bebras_task}/penegak/2016/2016-BE-01.json (100%) rename data/{question_bank => bebras_task}/penegak/2016/2016-CA-09.json (100%) rename data/{question_bank => bebras_task}/penegak/2016/2016-CH-03.json (100%) rename data/{question_bank => bebras_task}/penegak/2016/2016-CZ-026.json (100%) rename data/{question_bank => bebras_task}/penegak/2016/2016-JP-01.json (100%) rename data/{question_bank => bebras_task}/penegak/2016/2016-LT-02.json (100%) rename data/{question_bank => bebras_task}/penegak/2016/2016-MY-02.json (100%) rename data/{question_bank => bebras_task}/penegak/2016/2016-NL-04.json (100%) rename data/{question_bank => bebras_task}/penegak/2016/2016-SK-02.json (100%) rename data/{materials => learning_material}/penegak/penegak_2016-buku-bebras.json (100%) rename data/{materials => learning_material}/penegak/penegak_2017-buku-bebras.json (100%) rename data/{materials => learning_material}/penegak/penegak_2018-buku-bebras.json (100%) rename data/{materials => learning_material}/penggalang/penggalang_2016-buku-bebras.json (100%) rename data/{materials => learning_material}/penggalang/penggalang_2017-buku-bebras.json (100%) rename data/{materials => learning_material}/penggalang/penggalang_2018-buku-bebras.json (100%) rename data/{materials => learning_material}/siaga/siaga_2016-buku-bebras.json (100%) rename data/{materials => learning_material}/siaga/siaga_2017-buku-bebras.json (100%) rename data/{materials => learning_material}/siaga/siaga_2018-buku-bebras.json (100%) rename data/{materials => learning_material}/sikecil/.gitkeep (100%) rename data/{materials => learning_material}/umum/.gitkeep (100%) create mode 100644 utils/scripts/update_bebras_task_collection.py rename utils/scripts/{update_materials_info.py => update_learning_material_info.py} (76%) diff --git a/.github/workflows/update_materials_info_staging.yaml b/.github/workflows/update_learning_material_info_staging.yaml similarity index 91% rename from .github/workflows/update_materials_info_staging.yaml rename to .github/workflows/update_learning_material_info_staging.yaml index d5e43aa..8b58ea1 100644 --- a/.github/workflows/update_materials_info_staging.yaml +++ b/.github/workflows/update_learning_material_info_staging.yaml @@ -4,7 +4,7 @@ on: branches: - main paths: - - data/materials/** + - data/learning_material/** workflow_dispatch: jobs: @@ -30,7 +30,7 @@ jobs: - name: Update materials info that are modified run: | pip install -r utils/scripts/requirements.txt - python utils/scripts/update_materials_info.py + python utils/scripts/update_learning_material_info.py env: FIREBASE_SECRET_KEY_JSON: ${{ secrets.STG_FIREBASE_ADMINSDK_SECRET_KEY_JSON }} FILES_ADDED_AND_MODIFIED_ON_GIT: ${{ steps.list-files.outputs.modified_files }} diff --git a/data/question_bank/penegak/2016/2016-BE-01.json b/data/bebras_task/penegak/2016/2016-BE-01.json similarity index 100% rename from data/question_bank/penegak/2016/2016-BE-01.json rename to data/bebras_task/penegak/2016/2016-BE-01.json diff --git a/data/question_bank/penegak/2016/2016-CA-09.json b/data/bebras_task/penegak/2016/2016-CA-09.json similarity index 100% rename from data/question_bank/penegak/2016/2016-CA-09.json rename to data/bebras_task/penegak/2016/2016-CA-09.json diff --git a/data/question_bank/penegak/2016/2016-CH-03.json b/data/bebras_task/penegak/2016/2016-CH-03.json similarity index 100% rename from data/question_bank/penegak/2016/2016-CH-03.json rename to data/bebras_task/penegak/2016/2016-CH-03.json diff --git a/data/question_bank/penegak/2016/2016-CZ-026.json b/data/bebras_task/penegak/2016/2016-CZ-026.json similarity index 100% rename from data/question_bank/penegak/2016/2016-CZ-026.json rename to data/bebras_task/penegak/2016/2016-CZ-026.json diff --git a/data/question_bank/penegak/2016/2016-JP-01.json b/data/bebras_task/penegak/2016/2016-JP-01.json similarity index 100% rename from data/question_bank/penegak/2016/2016-JP-01.json rename to data/bebras_task/penegak/2016/2016-JP-01.json diff --git a/data/question_bank/penegak/2016/2016-LT-02.json b/data/bebras_task/penegak/2016/2016-LT-02.json similarity index 100% rename from data/question_bank/penegak/2016/2016-LT-02.json rename to data/bebras_task/penegak/2016/2016-LT-02.json diff --git a/data/question_bank/penegak/2016/2016-MY-02.json b/data/bebras_task/penegak/2016/2016-MY-02.json similarity index 100% rename from data/question_bank/penegak/2016/2016-MY-02.json rename to data/bebras_task/penegak/2016/2016-MY-02.json diff --git a/data/question_bank/penegak/2016/2016-NL-04.json b/data/bebras_task/penegak/2016/2016-NL-04.json similarity index 100% rename from data/question_bank/penegak/2016/2016-NL-04.json rename to data/bebras_task/penegak/2016/2016-NL-04.json diff --git a/data/question_bank/penegak/2016/2016-SK-02.json b/data/bebras_task/penegak/2016/2016-SK-02.json similarity index 100% rename from data/question_bank/penegak/2016/2016-SK-02.json rename to data/bebras_task/penegak/2016/2016-SK-02.json diff --git a/data/materials/penegak/penegak_2016-buku-bebras.json b/data/learning_material/penegak/penegak_2016-buku-bebras.json similarity index 100% rename from data/materials/penegak/penegak_2016-buku-bebras.json rename to data/learning_material/penegak/penegak_2016-buku-bebras.json diff --git a/data/materials/penegak/penegak_2017-buku-bebras.json b/data/learning_material/penegak/penegak_2017-buku-bebras.json similarity index 100% rename from data/materials/penegak/penegak_2017-buku-bebras.json rename to data/learning_material/penegak/penegak_2017-buku-bebras.json diff --git a/data/materials/penegak/penegak_2018-buku-bebras.json b/data/learning_material/penegak/penegak_2018-buku-bebras.json similarity index 100% rename from data/materials/penegak/penegak_2018-buku-bebras.json rename to data/learning_material/penegak/penegak_2018-buku-bebras.json diff --git a/data/materials/penggalang/penggalang_2016-buku-bebras.json b/data/learning_material/penggalang/penggalang_2016-buku-bebras.json similarity index 100% rename from data/materials/penggalang/penggalang_2016-buku-bebras.json rename to data/learning_material/penggalang/penggalang_2016-buku-bebras.json diff --git a/data/materials/penggalang/penggalang_2017-buku-bebras.json b/data/learning_material/penggalang/penggalang_2017-buku-bebras.json similarity index 100% rename from data/materials/penggalang/penggalang_2017-buku-bebras.json rename to data/learning_material/penggalang/penggalang_2017-buku-bebras.json diff --git a/data/materials/penggalang/penggalang_2018-buku-bebras.json b/data/learning_material/penggalang/penggalang_2018-buku-bebras.json similarity index 100% rename from data/materials/penggalang/penggalang_2018-buku-bebras.json rename to data/learning_material/penggalang/penggalang_2018-buku-bebras.json diff --git a/data/materials/siaga/siaga_2016-buku-bebras.json b/data/learning_material/siaga/siaga_2016-buku-bebras.json similarity index 100% rename from data/materials/siaga/siaga_2016-buku-bebras.json rename to data/learning_material/siaga/siaga_2016-buku-bebras.json diff --git a/data/materials/siaga/siaga_2017-buku-bebras.json b/data/learning_material/siaga/siaga_2017-buku-bebras.json similarity index 100% rename from data/materials/siaga/siaga_2017-buku-bebras.json rename to data/learning_material/siaga/siaga_2017-buku-bebras.json diff --git a/data/materials/siaga/siaga_2018-buku-bebras.json b/data/learning_material/siaga/siaga_2018-buku-bebras.json similarity index 100% rename from data/materials/siaga/siaga_2018-buku-bebras.json rename to data/learning_material/siaga/siaga_2018-buku-bebras.json diff --git a/data/materials/sikecil/.gitkeep b/data/learning_material/sikecil/.gitkeep similarity index 100% rename from data/materials/sikecil/.gitkeep rename to data/learning_material/sikecil/.gitkeep diff --git a/data/materials/umum/.gitkeep b/data/learning_material/umum/.gitkeep similarity index 100% rename from data/materials/umum/.gitkeep rename to data/learning_material/umum/.gitkeep diff --git a/utils/scripts/next_weekly_quiz_generator.py b/utils/scripts/next_weekly_quiz_generator.py index 36902af..830c86b 100644 --- a/utils/scripts/next_weekly_quiz_generator.py +++ b/utils/scripts/next_weekly_quiz_generator.py @@ -37,30 +37,36 @@ "sponsors": {} } -challengegroup_map = configuration_coll_ref.document("challenge_group").get().to_dict() -for cg_group, cg_val in challengegroup_map.items(): - problem_id_list = [] - query_ref = problemset_coll_ref.where("challenge_group", "==", cg_group) - for doc in query_ref.stream(): - problem_id_list.append(doc.to_dict()["id"]) - random.shuffle(problem_id_list) +def generate_next_weekly_quiz(): + challengegroup_map = configuration_coll_ref.document("challenge_group").get().to_dict() + for cg_group, cg_val in challengegroup_map.items(): + problem_id_list = [] - result["tasks"][cg_group] = problem_id_list[:cg_val["weeklyquiz_task_number"]] - result["max_attempts"][cg_group] = cg_val["weeklyquiz_max_attempts"] - result["duration_minute"][cg_group] = cg_val["weeklyquiz_duration_minute"] + query_ref = problemset_coll_ref.where("challenge_group", "==", cg_group) + for doc in query_ref.stream(): + problem_id_list.append(doc.to_dict()["id"]) + random.shuffle(problem_id_list) - # ToDo: later, make a logic to fill the sponsor(s) - result["sponsors"][cg_group] = None + result["tasks"][cg_group] = problem_id_list[:cg_val["weeklyquiz_task_number"]] + result["max_attempts"][cg_group] = cg_val["weeklyquiz_max_attempts"] + result["duration_minute"][cg_group] = cg_val["weeklyquiz_duration_minute"] -# for history data -_, doc_ref = weeklyquizlist_coll_ref.add(result) -result["id"] = doc_ref.id # generate random id & put it in the `result` for latest data + # ToDo: later, make a logic to fill the sponsor(s) + result["sponsors"][cg_group] = None -# for latest data -to_running = configuration_coll_ref.document("next_weekly_quiz").get().to_dict() -configuration_coll_ref.document("next_weekly_quiz").set(result) -configuration_coll_ref.document("running_weekly_quiz").set(to_running) + # for history data + _, doc_ref = weeklyquizlist_coll_ref.add(result) + result["id"] = doc_ref.id # generate random id & put it in the `result` for latest data -# update global variables -configuration_coll_ref.document("global_variables").set(config_global_variables) + # for latest data + to_running = configuration_coll_ref.document("next_weekly_quiz").get().to_dict() + configuration_coll_ref.document("next_weekly_quiz").set(result) + configuration_coll_ref.document("running_weekly_quiz").set(to_running) + + # update global variables + configuration_coll_ref.document("global_variables").set(config_global_variables) + + +if __name__ == "__main__": + generate_next_weekly_quiz() diff --git a/utils/scripts/update_bebras_task_collection.py b/utils/scripts/update_bebras_task_collection.py new file mode 100644 index 0000000..b5041a7 --- /dev/null +++ b/utils/scripts/update_bebras_task_collection.py @@ -0,0 +1,23 @@ +import json +import os +from firebase_admin import credentials, initialize_app, firestore +from glob import glob + +creds = credentials.Certificate( + json.loads(os.environ["FIREBASE_SECRET_KEY_JSON"]) +) +initialize_app(creds) + +firestore_client = firestore.client() +col_ref = firestore_client.collection("task_set") + +file_list = glob("data/bebras_tasks/*/*/*.json") +for file in file_list: + with open(file, "r") as f: + file_ref = file.replace(".json", "").split("/") + name = "_".join(file_ref[-2:]) + + content = json.load(f) + content["challenge_group"] = file_ref[-2] + + col_ref.document(name).set(content) diff --git a/utils/scripts/update_materials_info.py b/utils/scripts/update_learning_material_info.py similarity index 76% rename from utils/scripts/update_materials_info.py rename to utils/scripts/update_learning_material_info.py index bf372aa..2261615 100644 --- a/utils/scripts/update_materials_info.py +++ b/utils/scripts/update_learning_material_info.py @@ -11,7 +11,7 @@ def update_info(file_list): - col_ref = firestore_client.collection("materials") + col_ref = firestore_client.collection("learning_material") for file in file_list: with open(file, "r") as f: file_ref = file.replace(".json", "").split("/") @@ -23,9 +23,9 @@ def update_info(file_list): if __name__ == "__main__": updated_files = os.getenv("FILES_ADDED_AND_MODIFIED_ON_GIT") if updated_files is not None: - # filter which start with `data/materials/` only - file_list = [path for path in updated_files.split("\n") if path.startswith("data/materials/")] + # filter which start with `data/learning_material/` only + file_list = [path for path in updated_files.split("\n") if path.startswith("data/learning_material/")] else: - file_list = glob("data/materials/*/*.json") + file_list = glob("data/learning_material/*/*.json") update_info(file_list)