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