From 64eaf9b24a553fb423a97bc6d44f5a282527797e Mon Sep 17 00:00:00 2001 From: Imran Farhat Date: Sun, 14 Jun 2026 23:43:02 +0530 Subject: [PATCH] fix: prevent 500 error in get_lti_id when obj is a dict (Bug 3b) Save dialog SAVE button triggered a 500 Internal Server Error. get_lti_id() in StateSaveSerializer and SaveListSerializer called obj.save_id assuming obj is always a model instance, but it can also be an OrderedDict/dict in some serialization contexts, which has no save_id attribute. Add isinstance(obj, dict) check in both get_lti_id() methods to return None early in that case. Note: the related Ctrl+S crash (gridRef.current null) is already fixed differently upstream (exportImage null guard), so this PR only addresses the backend 500 error. --- esim-cloud-backend/saveAPI/serializers.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/esim-cloud-backend/saveAPI/serializers.py b/esim-cloud-backend/saveAPI/serializers.py index 1bd1c8a1..8625b23b 100644 --- a/esim-cloud-backend/saveAPI/serializers.py +++ b/esim-cloud-backend/saveAPI/serializers.py @@ -56,6 +56,8 @@ class Meta: 'id', 'lti_id', 'is_submission', 'pinned') def get_lti_id(self, obj): + if isinstance(obj, dict): + return None save_id = obj.save_id ltis = lticonsumer.objects.filter(model_schematic__save_id=save_id) arduinoLTIs = ArduinLTIConsumer.objects.filter( @@ -95,6 +97,8 @@ class Meta: 'is_submission', 'pinned') def get_lti_id(self, obj): + if isinstance(obj, dict): + return None save_id = obj.save_id ltis = lticonsumer.objects.filter(model_schematic__save_id=save_id) arduinoLTIs = ArduinLTIConsumer.objects.filter(