From 9b7c5f6c9184437396992e0b1a046270b8d770a7 Mon Sep 17 00:00:00 2001 From: Pierros Papadeas Date: Tue, 14 Aug 2018 16:38:13 +0300 Subject: [PATCH] Add max size for image in station model --- .../migrations/0042_auto_20180814_1325.py | 21 +++++++++++++++++++ network/base/models.py | 11 +++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 network/base/migrations/0042_auto_20180814_1325.py diff --git a/network/base/migrations/0042_auto_20180814_1325.py b/network/base/migrations/0042_auto_20180814_1325.py new file mode 100644 index 0000000..fd35944 --- /dev/null +++ b/network/base/migrations/0042_auto_20180814_1325.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.11 on 2018-08-14 13:25 +from __future__ import unicode_literals + +from django.db import migrations, models +import network.base.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('base', '0041_auto_20180812_0915'), + ] + + operations = [ + migrations.AlterField( + model_name='station', + name='image', + field=models.ImageField(blank=True, upload_to=b'ground_stations', validators=[network.base.models.validate_image]), + ), + ] diff --git a/network/base/models.py b/network/base/models.py index 3ba0892..32dfbbc 100644 --- a/network/base/models.py +++ b/network/base/models.py @@ -7,6 +7,7 @@ from shortuuidfield import ShortUUIDField from django.conf import settings from django.core.cache import cache from django.core.validators import MaxValueValidator, MinValueValidator +from django.core.exceptions import ValidationError from django.dispatch import receiver from django.db import models from django.db.models.signals import post_save @@ -95,6 +96,13 @@ def _station_post_save(sender, instance, created, **kwargs): post_save.connect(_station_post_save, sender=Station) +def validate_image(fieldfile_obj): + filesize = fieldfile_obj.file.size + megabyte_limit = 2.0 + if filesize > megabyte_limit * 1024 * 1024: + raise ValidationError("Max file size is %sMB" % str(megabyte_limit)) + + class Rig(models.Model): """Model for Rig types.""" name = models.CharField(choices=zip(RIG_TYPES, RIG_TYPES), max_length=10) @@ -131,7 +139,8 @@ class Station(models.Model): owner = models.ForeignKey(User, related_name="ground_stations", on_delete=models.SET_NULL, null=True, blank=True) name = models.CharField(max_length=45) - image = models.ImageField(upload_to='ground_stations', blank=True) + image = models.ImageField(upload_to='ground_stations', blank=True, + validators=[validate_image]) alt = models.PositiveIntegerField(help_text='In meters above sea level') lat = models.FloatField(validators=[MaxValueValidator(90), MinValueValidator(-90)], help_text='eg. 38.01697')