From 30d9d39739cdc1d6cb386b9d512a1ee6a045274e Mon Sep 17 00:00:00 2001 From: Geert Kapteijns <ghkapteijns@gmail.com> Date: Thu, 15 Dec 2016 23:08:12 +0100 Subject: [PATCH] Fix bug in theses/factories.py and start work on CreateView A CreateView class based view should replace the current request_thesislink function based view, since it saves many lines of code and is less error prone and more easily readable. --- scipost/factories.py | 4 ++-- theses/factories.py | 1 + theses/views.py | 10 ++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/scipost/factories.py b/scipost/factories.py index 80a4c0458..c69b975f6 100644 --- a/scipost/factories.py +++ b/scipost/factories.py @@ -11,9 +11,9 @@ class ContributorFactory(factory.django.DjangoModelFactory): model = Contributor title = "MR" - user = factory.SubFactory(UserFactory, contributor=None) + user = factory.SubFactory('scipost.factories.UserFactory', contributor=None) status = 1 - vetted_by = factory.SubFactory(ContributorFactory) + vetted_by = factory.SubFactory('scipost.factories.ContributorFactory', vetted_by=None) class UserFactory(factory.django.DjangoModelFactory): diff --git a/theses/factories.py b/theses/factories.py index 19489c3c1..1a12cd026 100644 --- a/theses/factories.py +++ b/theses/factories.py @@ -16,3 +16,4 @@ class ThesisLinkFactory(factory.django.DjangoModelFactory): institution = factory.Faker('company') defense_date = factory.Faker('date_time_this_century') abstract = factory.Faker('text') + domain = 'ET' diff --git a/theses/views.py b/theses/views.py index 7a2a2309d..1c008ab15 100644 --- a/theses/views.py +++ b/theses/views.py @@ -1,4 +1,5 @@ import datetime + from django.utils import timezone from django.shortcuts import get_object_or_404, render from django.contrib.auth import authenticate, login, logout @@ -9,6 +10,8 @@ from django.core.urlresolvers import reverse from django.http import HttpResponse, HttpResponseRedirect from django.views.decorators.csrf import csrf_protect from django.db.models import Avg +from django.views.generic.edit import CreateView +from django.utils.decorators import method_decorator from .models import * from .forms import * @@ -25,6 +28,13 @@ title_dict = dict(TITLE_CHOICES) # Convert titles for use in emails ################ +@method_decorator(permission_required( + 'scipost.can_request_thesislinks', raise_exception=True), name='dispatch') +class RequestThesisLink(CreateView): + model = ThesisLink + template_name = 'theses/request_thesislink.html' + + @permission_required('scipost.can_request_thesislinks', raise_exception=True) def request_thesislink(request): if request.method == 'POST': -- GitLab