From 4f6ed87ca02325f47ce40d0f20c88ce9da3a39ad Mon Sep 17 00:00:00 2001
From: Samuel Gaist <samuel.gaist@idiap.ch>
Date: Thu, 23 Aug 2018 15:22:31 +0200
Subject: [PATCH] [common][serializers] Make fork_of a JSONField

We are receiving JSON data for the fork_of field so this
simplifies its handling.
---
 beat/web/common/serializers.py | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/beat/web/common/serializers.py b/beat/web/common/serializers.py
index 933b257a3..c26452837 100644
--- a/beat/web/common/serializers.py
+++ b/beat/web/common/serializers.py
@@ -311,7 +311,7 @@ class MapDot(dict):
 class ContributionCreationSerializer(serializers.ModelSerializer):
     declaration = JSONSerializerField(required=False)
     description = serializers.CharField(required=False, allow_blank=True)
-    fork_of = serializers.CharField(required=False)
+    fork_of = serializers.JSONField(required=False)
     previous_version = serializers.CharField(required=False)
 
     class Meta:
@@ -341,7 +341,8 @@ class ContributionCreationSerializer(serializers.ModelSerializer):
                 previous_version_id["username"]    = user.username
                 previous_version_id["name"]        = name
                 previous_version_id["version"]     = data['previous_version']
-                data['data'] = json.dumps(ast.literal_eval(json.loads(json.dumps(data['data']))))
+                data['data'] = json.dumps(data['data'])
+
         else:
             previous_version_id = None
 
@@ -353,11 +354,12 @@ class ContributionCreationSerializer(serializers.ModelSerializer):
                     fork_of_id.username = user.username
             else:
                 fork_of_id                = MapDot()
-                fork_elem                 = json.loads(json.dumps(ast.literal_eval(json.loads(json.dumps(data['fork_of'])))))
+                fork_elem                 = data['fork_of']
                 fork_of_id["username"]    = fork_elem['username']
                 fork_of_id["name"]        = fork_elem['name']
                 fork_of_id["version"]     = fork_elem['version']
-                data['data'] = json.dumps(ast.literal_eval(json.loads(json.dumps(data['data']))))
+                data['data'] = json.dumps(data['data'])
+
         else:
             fork_of_id = None
 
-- 
GitLab