diff --git a/PlanktonDetector/DetectionApp/migrations/0002_alter_detectimage_image.py b/PlanktonDetector/DetectionApp/migrations/0002_alter_detectimage_image.py new file mode 100644 index 0000000..e84b9ba --- /dev/null +++ b/PlanktonDetector/DetectionApp/migrations/0002_alter_detectimage_image.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.7 on 2023-11-28 16:25 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("DetectionApp", "0001_initial"), + ] + + operations = [ + migrations.AlterField( + model_name="detectimage", + name="image", + field=models.ImageField( + upload_to="plankton/%Y/%m/%d/", + validators=[ + django.core.validators.FileExtensionValidator( + allowed_extensions=["jpg", "png"] + ) + ], + ), + ), + ] diff --git a/PlanktonDetector/DetectionApp/models.py b/PlanktonDetector/DetectionApp/models.py index 453945f..371f9f5 100644 --- a/PlanktonDetector/DetectionApp/models.py +++ b/PlanktonDetector/DetectionApp/models.py @@ -1,6 +1,11 @@ from django.db import models +from django.core.validators import FileExtensionValidator # Create your models here. + class DetectImage(models.Model): - image = models.ImageField(upload_to="plankton/%Y/%m/%d/") \ No newline at end of file + image = models.ImageField( + upload_to="plankton/%Y/%m/%d/", + validators=[FileExtensionValidator(allowed_extensions=["jpg", "png"])], + ) diff --git a/PlanktonDetector/DetectionApp/tests.py b/PlanktonDetector/DetectionApp/tests.py index 7ce503c..b022e39 100644 --- a/PlanktonDetector/DetectionApp/tests.py +++ b/PlanktonDetector/DetectionApp/tests.py @@ -1,3 +1,24 @@ from django.test import TestCase +from django.core.files.uploadedfile import SimpleUploadedFile +from .forms import DetectForm +from django.conf import settings -# Create your tests here. + +# Test sprawdza czy wprowadzone pliki są w odpowiednim formacie +class CanUploadFiles(TestCase): + def test_upload_img_file(self): + file = SimpleUploadedFile( + name="jpg_file.jpg", + content=open(f"{settings.MEDIA_ROOT}/test_image.jpg", "rb").read(), + content_type="image/jpg", + ) + form = DetectForm(files={"image": file}) + print(form.errors) + self.assertTrue(form.is_valid()) + + def test_upload_other_file(self): + file = SimpleUploadedFile( + "txt_file.txt", content=b"some text", content_type="text/plain" + ) + form = DetectForm(files={"image": file}) + self.assertFalse(form.is_valid()) diff --git a/PlanktonDetector/DetectionApp/views.py b/PlanktonDetector/DetectionApp/views.py index df67824..b92e99e 100644 --- a/PlanktonDetector/DetectionApp/views.py +++ b/PlanktonDetector/DetectionApp/views.py @@ -10,9 +10,8 @@ MODEL = YOLO("yolov8n.pt") def view(request): - form = DetectForm() - print(form.as_p()) if request.method == "GET": + form = DetectForm() return render(request, "upload.html", {"form": form}) form = DetectForm(request.POST, request.FILES) if form.is_valid(): @@ -35,4 +34,4 @@ def view(request): }, ) else: - return render(request, "upload.html") + return render(request, "upload.html", {"form": form}) diff --git a/PlanktonDetector/db.sqlite3 b/PlanktonDetector/db.sqlite3 index 8e90e39..ffceb28 100644 Binary files a/PlanktonDetector/db.sqlite3 and b/PlanktonDetector/db.sqlite3 differ diff --git a/PlanktonDetector/templates/upload.html b/PlanktonDetector/templates/upload.html index 7e198fe..f84e6ac 100644 --- a/PlanktonDetector/templates/upload.html +++ b/PlanktonDetector/templates/upload.html @@ -14,12 +14,13 @@
{% csrf_token %}
- {% if not img_saved%} + {% if img_saved is None %}

Choose image for analysis

+ {% else %}

Photo saved

+ {%endif%} -