SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 50c42b32 authored by Geert Kapteijns's avatar Geert Kapteijns
Browse files

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.
parent c54ddea3
No related branches found
No related tags found
No related merge requests found
# -*- 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]),
),
]
...@@ -23,6 +23,11 @@ class ThesisLinkFactory(factory.django.DjangoModelFactory): ...@@ -23,6 +23,11 @@ class ThesisLinkFactory(factory.django.DjangoModelFactory):
domain = 'ET' domain = 'ET'
class VettedThesisLinkFactory(ThesisLinkFactory):
vetted_by = factory.SubFactory(ContributorFactory)
vetted = True
class VetThesisLinkFormFactory(FormFactory): class VetThesisLinkFormFactory(FormFactory):
class Meta: class Meta:
model = VetThesisLinkForm model = VetThesisLinkForm
......
...@@ -108,5 +108,3 @@ class ThesisLinkSearchForm(forms.Form): ...@@ -108,5 +108,3 @@ class ThesisLinkSearchForm(forms.Form):
title_keyword = forms.CharField(max_length=100, label="Title", required=False) title_keyword = forms.CharField(max_length=100, label="Title", required=False)
abstract_keyword = forms.CharField(max_length=1000, required=False, label="Abstract") abstract_keyword = forms.CharField(max_length=1000, required=False, label="Abstract")
supervisor = forms.CharField(max_length=100, required=False, label="Supervisor") 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)
...@@ -6,15 +6,11 @@ from django.utils import timezone ...@@ -6,15 +6,11 @@ from django.utils import timezone
class ThesisLinkManager(models.Manager): class ThesisLinkManager(models.Manager):
def search_results(self, form): 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( return self.vetted().filter(
title__icontains=form.cleaned_data['title_keyword'], title__icontains=form.cleaned_data['title_keyword'],
author__icontains=form.cleaned_data['author'], author__icontains=form.cleaned_data['author'],
abstract__icontains=form.cleaned_data['abstract_keyword'], abstract__icontains=form.cleaned_data['abstract_keyword'],
supervisor__icontains=form.cleaned_data['supervisor'], supervisor__icontains=form.cleaned_data['supervisor'],
defense_date__range=(from_date, to_date)
).order_by('-defense_date') ).order_by('-defense_date')
def latest(self, n): def latest(self, n):
......
...@@ -13,7 +13,7 @@ from comments.factories import CommentFactory ...@@ -13,7 +13,7 @@ from comments.factories import CommentFactory
from comments.forms import CommentForm from comments.forms import CommentForm
from comments.models import Comment from comments.models import Comment
from .views import RequestThesisLink, VetThesisLink, thesis_detail from .views import RequestThesisLink, VetThesisLink, thesis_detail
from .factories import ThesisLinkFactory, VetThesisLinkFormFactory from .factories import ThesisLinkFactory, VettedThesisLinkFactory, VetThesisLinkFormFactory
from .models import ThesisLink from .models import ThesisLink
from .forms import VetThesisLinkForm from .forms import VetThesisLinkForm
from common.helpers import model_form_data from common.helpers import model_form_data
...@@ -173,3 +173,26 @@ class TestVetThesisLinkRequests(TestCase): ...@@ -173,3 +173,26 @@ class TestVetThesisLinkRequests(TestCase):
self.assertEqual(self.thesislink.vetted_by, contributor) self.assertEqual(self.thesislink.vetted_by, contributor)
self.assertEqual(len(mail.outbox), 1) self.assertEqual(len(mail.outbox), 1)
self.assertEqual(mail.outbox[0].subject, 'SciPost Thesis Link activated') 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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment