From 512c5d9ceafc2de1c2c1a0fd35fe2ba51af6d1a6 Mon Sep 17 00:00:00 2001 From: Damian Kobylinski Date: Mon, 11 Aug 2025 20:44:04 +0200 Subject: [PATCH 1/5] fix!: connect to new api vm --- .github/workflows/test-and-deploy.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-and-deploy.yml b/.github/workflows/test-and-deploy.yml index c0b9c78..0b25a32 100755 --- a/.github/workflows/test-and-deploy.yml +++ b/.github/workflows/test-and-deploy.yml @@ -23,7 +23,8 @@ jobs: env: SCHEMAS_URL: https://raw.githubusercontent.com/lambda-feedback/request-response-schemas/master/ - API_CONNECTION: ${{secrets.API_CONNECTION}} + API_CONNECTION: http://20.0.99.73:8000 + #API_CONNECTION: ${{secrets.API_CONNECTION}} steps: - name: Checkout From 1ba349cbeaf9042e5e417096dae21a73ad460106 Mon Sep 17 00:00:00 2001 From: Damian Kobylinski Date: Mon, 11 Aug 2025 22:48:25 +0200 Subject: [PATCH 2/5] chore: change port --- .github/workflows/test-and-deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-and-deploy.yml b/.github/workflows/test-and-deploy.yml index 0b25a32..7399a61 100755 --- a/.github/workflows/test-and-deploy.yml +++ b/.github/workflows/test-and-deploy.yml @@ -23,7 +23,7 @@ jobs: env: SCHEMAS_URL: https://raw.githubusercontent.com/lambda-feedback/request-response-schemas/master/ - API_CONNECTION: http://20.0.99.73:8000 + API_CONNECTION: http://20.0.99.73:5000 #API_CONNECTION: ${{secrets.API_CONNECTION}} steps: From 8a02b54cbcb70cf5ef24f6270bf5e252d2d4cea0 Mon Sep 17 00:00:00 2001 From: Damian Kobylinski Date: Mon, 11 Aug 2025 22:51:07 +0200 Subject: [PATCH 3/5] chore: preview function change --- app/preview_tests.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/preview_tests.py b/app/preview_tests.py index c3ef55f..d0dd9ea 100755 --- a/app/preview_tests.py +++ b/app/preview_tests.py @@ -1,6 +1,7 @@ import unittest from app.utility import initialize_test_connection from dotenv import load_dotenv + load_dotenv() try: @@ -29,7 +30,10 @@ class TestPreviewFunction(unittest.TestCase): """ def test_api_endpoint_resistance(self): - response, params = "000000", {"api_endpoint": "resistance/", "correct_answer": -1.0} + response, params = ( + "000000", + {"api_endpoint": "resistance/", "correct_answer": -1.0}, + ) result = preview_function(response, params) self.assertIn("preview", result) @@ -37,7 +41,10 @@ def test_api_endpoint_resistance(self): def test_api_endpoint_resistors(self): id_connection = initialize_test_connection() - response, params = id_connection, {"api_endpoint": "resistors/", "correct_answer": 0.0} + response, params = ( + id_connection, + {"api_endpoint": "resistors/", "correct_answer": []}, + ) result = preview_function(response, params) self.assertIn("preview", result) From 75716a58266f684da0cad6a854b809c36e997694 Mon Sep 17 00:00:00 2001 From: Damian Kobylinski Date: Mon, 11 Aug 2025 22:58:18 +0200 Subject: [PATCH 4/5] chore: request post --- app/preview.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/preview.py b/app/preview.py index 3d6394e..fc63216 100755 --- a/app/preview.py +++ b/app/preview.py @@ -2,11 +2,14 @@ from typing import Any, TypedDict import requests from dotenv import load_dotenv + load_dotenv() + class Result(TypedDict): preview: Any + def preview_function(response: Any, params: Any) -> Result: """ Function used to preview a student response. @@ -22,16 +25,19 @@ def preview_function(response: Any, params: Any) -> Result: response schema. """ try: - api_endpoint = params.get("api_endpoint", 'resistance/') + api_endpoint = params.get("api_endpoint", "resistance/") if len(response) != 6: raise Exception("Connection ID must be 6 characters long") - api_response = requests.get(f"{os.environ.get('API_CONNECTION')}/{api_endpoint}{response}") + api_response = requests.post( + f"{os.environ.get('API_CONNECTION')}/{api_endpoint}{response}" + ) api_response.raise_for_status() api_data = api_response.json() except requests.RequestException as e: print(f"Error API connection: {e}") api_data = None - return Result(preview=api_data) \ No newline at end of file + return Result(preview=api_data) + From 0f098e49e91b16cba9575d185aa9390fcf83aec8 Mon Sep 17 00:00:00 2001 From: Damian Kobylinski Date: Mon, 11 Aug 2025 23:24:25 +0200 Subject: [PATCH 5/5] fix: evaluation --- app/evaluation.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/app/evaluation.py b/app/evaluation.py index 2abb338..95df78f 100755 --- a/app/evaluation.py +++ b/app/evaluation.py @@ -2,12 +2,15 @@ from typing import TypedDict import requests from dotenv import load_dotenv + load_dotenv() + class Result(TypedDict): is_correct: bool error: int + def evaluation_function(response, answer, params) -> Result: """ Function used to evaluate a student response. @@ -35,14 +38,16 @@ def evaluation_function(response, answer, params) -> Result: global error_output error_output = 0 try: - api_endpoint = params.get("api_endpoint", 'resistance/') + api_endpoint = params.get("api_endpoint", "resistance/") if len(response) != 6: error_output = 1 is_correct = False raise Exception("Connection ID must be 6 characters long") - api_response = requests.get(f"{os.environ.get('API_CONNECTION')}/{api_endpoint}{response}") + api_response = requests.post( + f"{os.environ.get('API_CONNECTION')}/{api_endpoint}{response}" + ) api_data = api_response.json() if isinstance(api_data, list) and len(api_data) > 0: @@ -50,19 +55,23 @@ def evaluation_function(response, answer, params) -> Result: if response == "000000": is_correct = True - elif api_data in [params.get('correct_answer', None), -1.0, [{"resistance": -1}]]: + elif api_data in [ + params.get("correct_answer", None), + -1.0, + [{"resistance": -1}], + ]: if response == "resistors/": len_data = len(api_data) - if len_data != len(params.get('correct_answer', None)): + if len_data != len(params.get("correct_answer", None)): is_correct = False error_output = 2 else: - for i in params.get('correct_answer', None): + for i in params.get("correct_answer", None): if i not in api_data: is_correct = False error_output = 3 elif response == "resistance/": - if api_data != params.get('correct_answer', None): + if api_data != params.get("correct_answer", None): is_correct = False error_output = 4 is_correct = True @@ -74,4 +83,5 @@ def evaluation_function(response, answer, params) -> Result: is_correct = False error_output = 6 - return Result(is_correct=is_correct, error=error_output) \ No newline at end of file + return Result(is_correct=is_correct, error=error_output) +