From 5aac9233d0169a30022cf830f387b603a6a0296b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Barnab=C3=A1s=20Cz=C3=A9m=C3=A1n?= <trabarni@gmail.com>
Date: Wed, 4 Apr 2018 12:55:00 +0200
Subject: [PATCH] Add deadline validation to homework

---
 .../migrations/0012_auto_20180404_1253.py     | 20 +++++++++++++++++++
 src/homework/models.py                        |  1 -
 src/homework/serializers.py                   |  6 ++++++
 3 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 src/homework/migrations/0012_auto_20180404_1253.py

diff --git a/src/homework/migrations/0012_auto_20180404_1253.py b/src/homework/migrations/0012_auto_20180404_1253.py
new file mode 100644
index 0000000..7e02121
--- /dev/null
+++ b/src/homework/migrations/0012_auto_20180404_1253.py
@@ -0,0 +1,20 @@
+# Generated by Django 2.0.1 on 2018-04-04 10:53
+
+import common.validators
+import django.core.validators
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('homework', '0011_auto_20180404_0853'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='solution',
+            name='files',
+            field=models.FileField(upload_to='', validators=[django.core.validators.FileExtensionValidator(['image/png', 'image/jpeg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)]),
+        ),
+    ]
diff --git a/src/homework/models.py b/src/homework/models.py
index c586fa0..5bf8740 100644
--- a/src/homework/models.py
+++ b/src/homework/models.py
@@ -42,5 +42,4 @@ class Solution(models.Model):
             ]),
             FileSizeValidator(size_limit=52428800),  # 52428800 - 50MiB
         ],
-        blank=True,
     )
diff --git a/src/homework/serializers.py b/src/homework/serializers.py
index 5b5497f..a15f593 100644
--- a/src/homework/serializers.py
+++ b/src/homework/serializers.py
@@ -1,4 +1,5 @@
 from rest_framework import serializers
+from django.utils import timezone
 
 from common.serializers import CurrentUserProfileDefault
 from . import models
@@ -21,3 +22,8 @@ class SolutionSerializer(serializers.ModelSerializer):
         model = models.Solution
         read_only_fields = ('created_by', 'date' 'ready')
         fields = ('task', 'date', 'accepted', 'files', 'created_by')
+
+    def validate(self, data):
+        if timezone.now() > data['task'].deadline:
+            raise serializers.ValidationError('You late.')
+        return data
-- 
GitLab