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