From a00bd376fa427ed2d98b7ab06f124024a7808ee4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bodor=20M=C3=A1t=C3=A9?= <bmate711@gmail.com>
Date: Fri, 7 Feb 2020 09:57:07 +0100
Subject: [PATCH] Fix serializer bug

---
 src/document/serializers.py | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/src/document/serializers.py b/src/document/serializers.py
index f1c209f..15909a4 100644
--- a/src/document/serializers.py
+++ b/src/document/serializers.py
@@ -8,30 +8,42 @@ _max_count = 1
 class DocumentSerializer(serializers.ModelSerializer):
     uploaded_by = serializers.HiddenField(default=CurrentUserProfileDefault())
     uploaded_by_name = serializers.SerializerMethodField()
-    file = serializers.SerializerMethodField()
+    file_url = serializers.SerializerMethodField()
 
     class Meta:
         model = models.Document
-        fields = (
+        fields = [
             'uploaded_by',
             'uploaded_at',
             'name',
             'description',
+            'file_url',
             'file',
             'uploaded_by_name',
             'solution',
-        )
+        ]
+        
+        read_only_fields = [
+            'uploaded_by',
+            'uploaded_at',
+            'file_url',
+            'uploaded_by_name',
+        ]
+
+        extra_kwargs = {
+            'file': {'write_only': True},
+        }
 
     def to_representation(self, instance):
         data = super().to_representation(instance)
-        if not data['file']:
-            data['file'] = ""
+        if not data['file_url']:
+            data['file_url'] = ""
         return data
 
     def get_uploaded_by_name(self, obj):
         return obj.uploaded_by.full_name
 
-    def get_file(self, obj):
+    def get_file_url(self, obj):
         return f"/api/v1/documents/{obj.id}/download/"
 
     def validate_solution(self, value):
@@ -42,5 +54,5 @@ class DocumentSerializer(serializers.ModelSerializer):
             uploaded_by=profile, solution=value).count()
         if count >= _max_count:
             raise serializers.ValidationError(
-                f'You cant upload more than {max_count} document to one solution!')
+                f'You cant upload more than {_max_count} document to one solution!')
         return value
-- 
GitLab