From 9a603b6cef26d27f2c4f787d3719b8d1825ec4da Mon Sep 17 00:00:00 2001
From: Sandeep Chauhan <sandeepsajan0@gmail.com>
Date: Fri, 19 Jan 2024 12:56:04 +0530
Subject: [PATCH] Fix errors for compare revisions page(JSONDecodeError and
 Invalid literal int error) (#3727)

Fixes #3709
---
 hypha/apply/funds/blocks.py        | 6 ++++++
 hypha/apply/stream_forms/blocks.py | 6 +++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/hypha/apply/funds/blocks.py b/hypha/apply/funds/blocks.py
index 8b89f2487..4984c4823 100644
--- a/hypha/apply/funds/blocks.py
+++ b/hypha/apply/funds/blocks.py
@@ -51,6 +51,8 @@ class ValueBlock(ApplicationSingleIncludeFieldBlock):
         icon = "decimal"
 
     def prepare_data(self, value, data, serialize):
+        if not data:
+            return data
         return format_number_as_currency(str(data))
 
 
@@ -99,6 +101,8 @@ class AddressFieldBlock(ApplicationSingleIncludeFieldBlock):
         return ", ".join(data[field] for field in ADDRESS_FIELDS_ORDER if data[field])
 
     def prepare_data(self, value, data, serialize):
+        if not data:
+            return data
         data = json.loads(data)
         data = {field: data[field] for field in ADDRESS_FIELDS_ORDER}
 
@@ -193,6 +197,8 @@ class DurationBlock(ApplicationSingleIncludeFieldBlock):
         return field_kwargs
 
     def prepare_data(self, value, data, serialize):
+        if not data:
+            return data
         if value["duration_type"] == self.DAYS:
             return self.DURATION_DAY_OPTIONS[int(data)]
         if value["duration_type"] == self.WEEKS:
diff --git a/hypha/apply/stream_forms/blocks.py b/hypha/apply/stream_forms/blocks.py
index e67c7e57d..70d264dd5 100644
--- a/hypha/apply/stream_forms/blocks.py
+++ b/hypha/apply/stream_forms/blocks.py
@@ -285,6 +285,8 @@ class CheckboxesFieldBlock(OptionalFormFieldBlock):
         return kwargs
 
     def prepare_data(self, value, data, serialize=False):
+        if not data:
+            return data
         base_prepare = super().prepare_data
         return [base_prepare(value, item, serialize) for item in data]
 
@@ -443,7 +445,9 @@ class MultiFileFieldBlock(UploadableMediaBlock):
 
     def prepare_data(self, value, data, serialize):
         if serialize:
-            return [file.serialize() for file in data]
+            if data:
+                return [file.serialize() for file in data]
+            return None
         return data
 
     def no_response(self):
-- 
GitLab