diff --git a/lti_consumer/lti_1p1/consumer.py b/lti_consumer/lti_1p1/consumer.py index f20c5712e78c7845be19a3c9ac1af9d42c1a7913..1290fc9861af67eade8626a8d43af11b44ee4e15 100644 --- a/lti_consumer/lti_1p1/consumer.py +++ b/lti_consumer/lti_1p1/consumer.py @@ -69,7 +69,7 @@ def parse_result_json(json_str): try: json_obj = json.loads(json_str) except (ValueError, TypeError) as err: - msg = f"Supplied JSON string in request body could not be decoded: {json_str}" + msg = f"Supplied JSON string in request body could not be decoded: {json_str!r}" log.error("[LTI] %s", msg) raise Lti1p1Error(msg) from err @@ -87,7 +87,7 @@ def parse_result_json(json_str): # '@type' must be "Result" result_type = json_obj.get("@type") if result_type != "Result": - msg = f"JSON object does not contain correct @type attribute (should be 'Result', is z{result_type})" + msg = f"JSON object does not contain correct @type attribute (should be 'Result', is z{result_type!r})" log.error("[LTI] %s", msg) raise Lti1p1Error(msg) diff --git a/lti_consumer/lti_1p3/extensions/rest_framework/serializers.py b/lti_consumer/lti_1p3/extensions/rest_framework/serializers.py index f7dcd45a94053fbb5569725a103c91499e3b65bd..30afb794623f5709594836eda4619dee9b685377 100644 --- a/lti_consumer/lti_1p3/extensions/rest_framework/serializers.py +++ b/lti_consumer/lti_1p3/extensions/rest_framework/serializers.py @@ -32,7 +32,7 @@ class UsageKeyField(serializers.Field): try: return UsageKey.from_string(data) except InvalidKeyError as err: - raise serializers.ValidationError(f"Invalid usage key: {data}") from err + raise serializers.ValidationError(f"Invalid usage key: {data!r}") from err class LtiAgsLineItemSerializer(serializers.ModelSerializer): diff --git a/lti_consumer/tests/unit/test_api.py b/lti_consumer/tests/unit/test_api.py index be212bd1ef5d91d31ebb7f60f5d7e95cd944360a..888d229e04e6def90e1c685c6110839d01aacb9f 100644 --- a/lti_consumer/tests/unit/test_api.py +++ b/lti_consumer/tests/unit/test_api.py @@ -6,8 +6,12 @@ from unittest.mock import Mock, patch from Cryptodome.PublicKey import RSA from django.test.testcases import TestCase -from lti_consumer.api import (_get_or_create_local_lti_config, get_lti_1p3_launch_info, get_lti_1p3_launch_start_url, - get_lti_consumer) +from lti_consumer.api import ( + _get_or_create_local_lti_config, + get_lti_1p3_launch_info, + get_lti_1p3_launch_start_url, + get_lti_consumer +) from lti_consumer.lti_xblock import LtiConsumerXBlock from lti_consumer.models import LtiConfiguration from lti_consumer.tests.unit.test_utils import make_xblock