diff --git a/scipost/factories.py b/scipost/factories.py
index 80a4c045804aa2cf133823d882323c7d20013927..c69b975f60db3f7f1b5952012384a719ecc7c9bb 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 19489c3c15babf86f0939a1a261c234fb7285560..1a12cd026941ad06ef7e4ad82c798b6947813a93 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 7a2a2309d363eae341a18e0a62c4470c6f5b1cdf..1c008ab1529e30961614362769dfe2db0c5a5b5b 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':