From fd5ecfafab84a077e616f2c40c85b4cbe35e2367 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bodor=20M=C3=A1t=C3=A9?= <bodor.mate@kszk.bme.hu>
Date: Thu, 3 Jan 2019 21:27:12 +0100
Subject: [PATCH] add validators to files field and full_name field to
 serializers

---
 src/document/migrations/0001_initial.py | 27 +++++++++++++++++++++++++
 src/document/models.py                  | 14 ++++++++++++-
 src/document/serializers.py             |  5 ++++-
 3 files changed, 44 insertions(+), 2 deletions(-)
 create mode 100644 src/document/migrations/0001_initial.py

diff --git a/src/document/migrations/0001_initial.py b/src/document/migrations/0001_initial.py
new file mode 100644
index 0000000..141a86a
--- /dev/null
+++ b/src/document/migrations/0001_initial.py
@@ -0,0 +1,27 @@
+# Generated by Django 2.0.1 on 2018-12-29 19:19
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+        ('account', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Document',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('uploaded_at', models.DateTimeField(auto_now_add=True)),
+                ('name', models.CharField(max_length=150)),
+                ('description', models.TextField()),
+                ('file', models.FileField(upload_to='')),
+                ('uploaded_by', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='account.Profile')),
+            ],
+        ),
+    ]
diff --git a/src/document/models.py b/src/document/models.py
index e2c30e3..80ba101 100644
--- a/src/document/models.py
+++ b/src/document/models.py
@@ -1,6 +1,8 @@
 from django.db import models
+from django.core import validators
 
 from account.models import Profile
+from common.validators import FileSizeValidator
 
 
 class Document(models.Model):
@@ -8,7 +10,17 @@ class Document(models.Model):
     uploaded_at = models.DateTimeField(auto_now_add=True, editable=False)
     name = models.CharField(max_length=150)
     description = models.TextField()
-    file = models.FileField()
+    files = models.FileField(
+        validators=[
+            validators.FileExtensionValidator([
+                'png',
+                'jpeg',
+                'jpg',
+                'zip',
+            ]),
+            FileSizeValidator(size_limit=52428800),  # 52428800 - 50MiB
+        ],
+    )
 
     def __str__(self):
         return self.name
diff --git a/src/document/serializers.py b/src/document/serializers.py
index 47e0e1c..3308ced 100644
--- a/src/document/serializers.py
+++ b/src/document/serializers.py
@@ -5,9 +5,12 @@ from . import models
 
 
 class DocumentSerializer(serializers.ModelSerializer):
-    uploaded_at = serializers.DateTimeField(read_only=True)
     uploaded_by = serializers.HiddenField(default=CurrentUserProfileDefault())
+    uploaded_by_name = serializers.SerializerMethodField()
 
     class Meta:
         model = models.Document
         fields = ('uploaded_by', 'uploaded_at', 'name', 'description', 'file')
+
+    def get_uploaded_by_name(self, obj):
+        return obj.uploaded_by.full_name
-- 
GitLab