From 50c42b32c42a3dd0481c027b3eaa98b7ada6b584 Mon Sep 17 00:00:00 2001
From: Geert Kapteijns <ghkapteijns@gmail.com>
Date: Sat, 25 Feb 2017 13:53:53 +0100
Subject: [PATCH] Remove to_date and from_date from thesis search form.

The datepicker behaved weird in firefox, and I think fixing it
has no priority now. I've created the VettedThesisLinkFactory
and wrote a couple of happy-path tests for the theses view.
---
 .../migrations/0010_auto_20170216_1831.py     | 27 -------------------
 theses/factories.py                           |  5 ++++
 theses/forms.py                               |  2 --
 theses/managers.py                            |  4 ---
 theses/test_views.py                          | 25 ++++++++++++++++-
 5 files changed, 29 insertions(+), 34 deletions(-)
 delete mode 100644 comments/migrations/0010_auto_20170216_1831.py

diff --git a/comments/migrations/0010_auto_20170216_1831.py b/comments/migrations/0010_auto_20170216_1831.py
deleted file mode 100644
index 2a44e624a..000000000
--- a/comments/migrations/0010_auto_20170216_1831.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.10.3 on 2017-02-16 17:31
-from __future__ import unicode_literals
-
-import comments.behaviors
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('comments', '0009_auto_20170212_2025'),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name='comment',
-            name='author',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='scipost.Contributor'),
-        ),
-        migrations.AlterField(
-            model_name='comment',
-            name='file_attachment',
-            field=models.FileField(blank=True, upload_to='uploads/comments/%Y/%m/%d/', validators=[comments.behaviors.validate_file_extension, comments.behaviors.validate_max_file_size]),
-        ),
-    ]
diff --git a/theses/factories.py b/theses/factories.py
index 550d5a73e..bf4a32440 100644
--- a/theses/factories.py
+++ b/theses/factories.py
@@ -23,6 +23,11 @@ class ThesisLinkFactory(factory.django.DjangoModelFactory):
     domain = 'ET'
 
 
+class VettedThesisLinkFactory(ThesisLinkFactory):
+    vetted_by = factory.SubFactory(ContributorFactory)
+    vetted = True
+
+
 class VetThesisLinkFormFactory(FormFactory):
     class Meta:
         model = VetThesisLinkForm
diff --git a/theses/forms.py b/theses/forms.py
index 6f8a0e2c1..3f5dfcc0e 100644
--- a/theses/forms.py
+++ b/theses/forms.py
@@ -108,5 +108,3 @@ class ThesisLinkSearchForm(forms.Form):
     title_keyword = forms.CharField(max_length=100, label="Title", required=False)
     abstract_keyword = forms.CharField(max_length=1000, required=False, label="Abstract")
     supervisor = forms.CharField(max_length=100, required=False, label="Supervisor")
-    from_date = forms.DateField(widget=forms.DateInput(attrs={'type': 'date'}), required=False)
-    to_date = forms.DateField(widget=forms.DateInput(attrs={'type': 'date'}), required=False)
diff --git a/theses/managers.py b/theses/managers.py
index ecd55472d..79e971b79 100644
--- a/theses/managers.py
+++ b/theses/managers.py
@@ -6,15 +6,11 @@ from django.utils import timezone
 
 class ThesisLinkManager(models.Manager):
     def search_results(self, form):
-        from_date = form.cleaned_data['from_date'] if form.cleaned_data['from_date'] else datetime.date(1600, 1, 1)
-        to_date = form.cleaned_data['to_date'] if form.cleaned_data['to_date'] else timezone.now()
-
         return self.vetted().filter(
             title__icontains=form.cleaned_data['title_keyword'],
             author__icontains=form.cleaned_data['author'],
             abstract__icontains=form.cleaned_data['abstract_keyword'],
             supervisor__icontains=form.cleaned_data['supervisor'],
-            defense_date__range=(from_date, to_date)
         ).order_by('-defense_date')
 
     def latest(self, n):
diff --git a/theses/test_views.py b/theses/test_views.py
index a23770726..b5ee851bc 100644
--- a/theses/test_views.py
+++ b/theses/test_views.py
@@ -13,7 +13,7 @@ from comments.factories import CommentFactory
 from comments.forms import CommentForm
 from comments.models import Comment
 from .views import RequestThesisLink, VetThesisLink, thesis_detail
-from .factories import ThesisLinkFactory, VetThesisLinkFormFactory
+from .factories import ThesisLinkFactory, VettedThesisLinkFactory, VetThesisLinkFormFactory
 from .models import ThesisLink
 from .forms import VetThesisLinkForm
 from common.helpers import model_form_data
@@ -173,3 +173,26 @@ class TestVetThesisLinkRequests(TestCase):
         self.assertEqual(self.thesislink.vetted_by, contributor)
         self.assertEqual(len(mail.outbox), 1)
         self.assertEqual(mail.outbox[0].subject, 'SciPost Thesis Link activated')
+
+class TestTheses(TestCase):
+    fixtures = ['groups', 'permissions']
+
+    def setUp(self):
+        self.client = Client()
+        self.target = reverse('theses:theses')
+
+    def test_empty_search_query(self):
+        thesislink = VettedThesisLinkFactory()
+        response = self.client.get(self.target)
+        search_results = response.context["search_results"]
+        recent_theses = response.context["recent_theses"]
+        self.assertEqual(search_results.exists(), False)
+        self.assertEqual(recent_theses.exists(), True)
+
+    def test_search_query_on_author(self):
+        thesislink = VettedThesisLinkFactory()
+        form_data = {'author': thesislink.author}
+        response = self.client.get(self.target, form_data)
+        search_results = response.context['search_results']
+        self.assertTrue(thesislink in search_results)
+        self.assertEqual(len(search_results), 1)
-- 
GitLab