diff --git a/beat/web/code/serializers.py b/beat/web/code/serializers.py
index 4f25aef869692005089f669cda10869e52bcde21..8519433ab1264ab2f2e99a7b7d13db3224325899 100755
--- a/beat/web/code/serializers.py
+++ b/beat/web/code/serializers.py
@@ -25,42 +25,61 @@
 #                                                                             #
 ###############################################################################
 
+
+import difflib
+
 from rest_framework import serializers
 
 from ..common.serializers import ContributionCreationSerializer
+from ..common.serializers import ContributionModSerializer
 from ..common.serializers import SharingSerializer
 from ..common.serializers import ContributionSerializer
 from ..common.serializers import DiffSerializer
 
 from .models import Code
 
-import simplejson as json
-import difflib
-
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class CodeCreationSerializer(ContributionCreationSerializer):
-    code = serializers.CharField(required=False, allow_blank=True, trim_whitespace=False)
+    code = serializers.CharField(
+        required=False, allow_blank=True, trim_whitespace=False
+    )
 
     class Meta(ContributionCreationSerializer.Meta):
-        fields = ContributionCreationSerializer.Meta.fields + ['code', 'language']
+        fields = ContributionCreationSerializer.Meta.fields + ["code", "language"]
+
+
+class CodeModSerializer(ContributionModSerializer):
+    code = serializers.CharField(
+        required=False, allow_blank=True, trim_whitespace=False
+    )
+
+    class Meta(ContributionModSerializer.Meta):
+        fields = ContributionModSerializer.Meta.fields + ["code", "language"]
+
+    def save(self, **kwargs):
+        code = self.validated_data.pop("code", None)
+        if code is not None:
+            self.validated_data["source_code"] = code
+
+        return super().save(**kwargs)
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class CodeSharingSerializer(SharingSerializer):
     status = serializers.CharField()
 
     def validate_status(self, value):
-        if value not in ['public', 'usable']:
-            raise serializers.ValidationError('Invalid status value')
+        if value not in ["public", "usable"]:
+            raise serializers.ValidationError("Invalid status value")
         return value
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class CodeSerializer(ContributionSerializer):
@@ -71,19 +90,23 @@ class CodeSerializer(ContributionSerializer):
 
     class Meta(ContributionSerializer.Meta):
         model = Code
-        default_fields = ContributionSerializer.Meta.default_fields + ['opensource', 'language', 'valid']
-        extra_fields = ContributionSerializer.Meta.extra_fields + ['code']
-        exclude = ContributionSerializer.Meta.exclude + ['source_code_file']
+        default_fields = ContributionSerializer.Meta.default_fields + [
+            "opensource",
+            "language",
+            "valid",
+        ]
+        extra_fields = ContributionSerializer.Meta.extra_fields + ["code"]
+        exclude = ContributionSerializer.Meta.exclude + ["source_code_file"]
 
     def __init__(self, *args, **kwargs):
         # Don't pass the 'opensource' arg up to the superclass
-        self.opensource = kwargs.pop('opensource', False)
+        self.opensource = kwargs.pop("opensource", False)
 
         # Instantiate the superclass normally
         super(ContributionSerializer, self).__init__(*args, **kwargs)
 
     def get_opensource(self, obj):
-        user = self.context.get('user')
+        user = self.context.get("user")
         (has_access, open_source, accessibility) = obj.accessibility_for(user)
         return open_source
 
@@ -92,46 +115,48 @@ class CodeSerializer(ContributionSerializer):
 
     def get_accessibility(self, obj):
         if obj.sharing == Code.PUBLIC:
-            return 'public'
+            return "public"
         elif obj.sharing == Code.SHARED or obj.sharing == Code.USABLE:
-            return 'confidential'
+            return "confidential"
         else:
-            return 'private'
+            return "private"
 
     def get_sharing(self, obj):
-        user = self.context.get('user')
+        user = self.context.get("user")
 
         sharing = super(CodeSerializer, self).get_sharing(obj)
         if user == obj.author:
             if obj.usable_by.count() > 0:
-                sharing['usable_by'] = map(lambda x: x.username,
-                                           obj.usable_by.iterator())
+                sharing["usable_by"] = map(
+                    lambda x: x.username, obj.usable_by.iterator()
+                )
 
             if obj.usable_by_team.count() > 0:
-                sharing['usable_by_team'] = map(lambda x: x.name,
-                                                obj.usable_by_team.iterator())
+                sharing["usable_by_team"] = map(
+                    lambda x: x.name, obj.usable_by_team.iterator()
+                )
         return sharing
 
     def get_code(self, obj):
-        user = self.context.get('user')
+        user = self.context.get("user")
 
         if obj.author != user:
             (has_access, open_source, accessibility) = obj.accessibility_for(user)
-            if not(has_access) or not(open_source):
+            if not (has_access) or not (open_source):
                 return None
 
         return obj.source_code
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class CodeDiffSerializer(DiffSerializer):
     source_code_diff = serializers.SerializerMethodField()
 
     def get_source_code_diff(self, obj):
-        source1 = obj['object1'].source_code
-        source2 = obj['object2'].source_code
+        source1 = obj["object1"].source_code
+        source2 = obj["object2"].source_code
         diff = difflib.ndiff(source1.splitlines(), source2.splitlines())
 
-        return '\n'.join(filter(lambda x: x[0] != '?', list(diff)))
+        return "\n".join(filter(lambda x: x[0] != "?", list(diff)))