diff --git a/commentaries/forms.py b/commentaries/forms.py
index 65bb327eb563968ad7218243c48cff0b970b56ad..f0dcdf3a30c8497a8d19650abc9fda2c291bda45 100644
--- a/commentaries/forms.py
+++ b/commentaries/forms.py
@@ -1,4 +1,5 @@
 from django import forms
+from django.shortcuts import get_object_or_404
 
 from .models import Commentary
 
@@ -54,6 +55,8 @@ class RequestCommentaryForm(forms.ModelForm):
 
     def clean(self, *args, **kwargs):
         cleaned_data = super(RequestCommentaryForm, self).clean(*args, **kwargs)
+
+        # Either Arxiv-ID or DOI is given
         if not cleaned_data['arxiv_identifier'] and not cleaned_data['pub_DOI']:
             msg = ('You must provide either a DOI (for a published paper) '
                 'or an arXiv identifier (for a preprint).')
@@ -73,6 +76,11 @@ class RequestCommentaryForm(forms.ModelForm):
             self.existing_commentary = get_object_or_404(Commentary, pub_DOI=cleaned_data['pub_DOI'])
             self.add_error('pub_DOI', msg)
 
+        # Current user is not known
+        if not self.user or not Contributor.objects.filter(user=self.user).exists():
+            self.add_error(None, 'Sorry, current user is not known to SciPost.')
+
+
     def save(self, *args, **kwargs):
         """Prefill instance before save"""
         self.requested_by = Contributor.objects.get(user=self.user)
diff --git a/commentaries/models.py b/commentaries/models.py
index 9bc4ad6fd3110c902ebc79aa5af3a01a681f84ee..a42005b4dae74ac4621960f27e9bfc11dcd4bbb0 100644
--- a/commentaries/models.py
+++ b/commentaries/models.py
@@ -5,7 +5,7 @@ from django.template import Template, Context
 
 from journals.models import SCIPOST_JOURNALS_DOMAINS, SCIPOST_JOURNALS_SPECIALIZATIONS
 from scipost.models import TimeStampedModel, Contributor
-from scipost.models import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS
+from scipost.constants import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS
 
 COMMENTARY_TYPES = (
     ('published', 'published paper'),
diff --git a/journals/models.py b/journals/models.py
index 7afb01756af51cc4ac083b00d0fbff342e9d2b27..80464164d6915e51439452e8d41f5739657fa91a 100644
--- a/journals/models.py
+++ b/journals/models.py
@@ -3,8 +3,8 @@ from django.db import models
 from django.template import Template, Context
 from django.utils import timezone
 
-from scipost.models import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS, subject_areas_dict, TITLE_CHOICES
-from scipost.models import ChoiceArrayField, Contributor
+from scipost.constants import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS, subject_areas_dict
+from scipost.models import ChoiceArrayField, Contributor, TITLE_CHOICES
 
 
 class UnregisteredAuthor(models.Model):
diff --git a/scipost/constants.py b/scipost/constants.py
new file mode 100644
index 0000000000000000000000000000000000000000..7c7933e18e787769f830f999423730a6af836d82
--- /dev/null
+++ b/scipost/constants.py
@@ -0,0 +1,120 @@
+SCIPOST_DISCIPLINES = (
+    ('physics', 'Physics'),
+    ('astrophysics', 'Astrophysics'),
+    ('mathematics', 'Mathematics'),
+    ('computerscience', 'Computer Science'),
+    )
+disciplines_dict = dict(SCIPOST_DISCIPLINES)
+
+SCIPOST_SUBJECT_AREAS = (
+    ('Physics', (
+        ('Phys:AE', 'Atomic, Molecular and Optical Physics - Experiment'),
+        ('Phys:AT', 'Atomic, Molecular and Optical Physics - Theory'),
+        ('Phys:BI', 'Biophysics'),
+        ('Phys:CE', 'Condensed Matter Physics - Experiment'),
+        ('Phys:CT', 'Condensed Matter Physics - Theory'),
+        ('Phys:FD', 'Fluid Dynamics'),
+        ('Phys:GR', 'Gravitation, Cosmology and Astroparticle Physics'),
+        ('Phys:HE', 'High-Energy Physics - Experiment'),
+        ('Phys:HT', 'High-Energy Physics- Theory'),
+        ('Phys:HP', 'High-Energy Physics - Phenomenology'),
+        ('Phys:MP', 'Mathematical Physics'),
+        ('Phys:NE', 'Nuclear Physics - Experiment'),
+        ('Phys:NT', 'Nuclear Physics - Theory'),
+        ('Phys:QP', 'Quantum Physics'),
+        ('Phys:SM', 'Statistical and Soft Matter Physics'),
+        )
+     ),
+    ('Astrophysics', (
+        ('Astro:GA', 'Astrophysics of Galaxies'),
+        ('Astro:CO', 'Cosmology and Nongalactic Astrophysics'),
+        ('Astro:EP', 'Earth and Planetary Astrophysics'),
+        ('Astro:HE', 'High Energy Astrophysical Phenomena'),
+        ('Astro:IM', 'Instrumentation and Methods for Astrophysics'),
+        ('Astro:SR', 'Solar and Stellar Astrophysics'),
+        )
+     ),
+    ('Mathematics', (
+        ('Math:AG', 'Algebraic Geometry'),
+        ('Math:AT', 'Algebraic Topology'),
+        ('Math:AP', 'Analysis of PDEs'),
+        ('Math:CT', 'Category Theory'),
+        ('Math:CA', 'Classical Analysis and ODEs'),
+        ('Math:CO', 'Combinatorics'),
+        ('Math:AC', 'Commutative Algebra'),
+        ('Math:CV', 'Complex Variables'),
+        ('Math:DG', 'Differential Geometry'),
+        ('Math:DS', 'Dynamical Systems'),
+        ('Math:FA', 'Functional Analysis'),
+        ('Math:GM', 'General Mathematics'),
+        ('Math:GN', 'General Topology'),
+        ('Math:GT', 'Geometric Topology'),
+        ('Math:GR', 'Group Theory'),
+        ('Math:HO', 'History and Overview'),
+        ('Math:IT', 'Information Theory'),
+        ('Math:KT', 'K-Theory and Homology'),
+        ('Math:LO', 'Logic'),
+        ('Math:MP', 'Mathematical Physics'),
+        ('Math:MG', 'Metric Geometry'),
+        ('Math:NT', 'Number Theory'),
+        ('Math:NA', 'Numerical Analysis'),
+        ('Math:OA', 'Operator Algebras'),
+        ('Math:OC', 'Optimization and Control'),
+        ('Math:PR', 'Probability'),
+        ('Math:QA', 'Quantum Algebra'),
+        ('Math:RT', 'Representation Theory'),
+        ('Math:RA', 'Rings and Algebras'),
+        ('Math:SP', 'Spectral Theory'),
+        ('Math:ST', 'Statistics Theory'),
+        ('Math:SG', 'Symplectic Geometry'),
+        )
+     ),
+    ('Computer Science', (
+        ('Comp:AI', 'Artificial Intelligence'),
+        ('Comp:CC', 'Computational Complexity'),
+        ('Comp:CE', 'Computational Engineering, Finance, and Science'),
+        ('Comp:CG', 'Computational Geometry'),
+        ('Comp:GT', 'Computer Science and Game Theory'),
+        ('Comp:CV', 'Computer Vision and Pattern Recognition'),
+        ('Comp:CY', 'Computers and Society'),
+        ('Comp:CR', 'Cryptography and Security'),
+        ('Comp:DS', 'Data Structures and Algorithms'),
+        ('Comp:DB', 'Databases'),
+        ('Comp:DL', 'Digital Libraries'),
+        ('Comp:DM', 'Discrete Mathematics'),
+        ('Comp:DC', 'Distributed, Parallel, and Cluster Computing'),
+        ('Comp:ET', 'Emerging Technologies'),
+        ('Comp:FL', 'Formal Languages and Automata Theory'),
+        ('Comp:GL', 'General Literature'),
+        ('Comp:GR', 'Graphics'),
+        ('Comp:AR', 'Hardware Architecture'),
+        ('Comp:HC', 'Human-Computer Interaction'),
+        ('Comp:IR', 'Information Retrieval'),
+        ('Comp:IT', 'Information Theory'),
+        ('Comp:LG', 'Learning'),
+        ('Comp:LO', 'Logic in Computer Science'),
+        ('Comp:MS', 'Mathematical Software'),
+        ('Comp:MA', 'Multiagent Systems'),
+        ('Comp:MM', 'Multimedia'),
+        ('Comp:NI', 'Networking and Internet Architecture'),
+        ('Comp:NE', 'Neural and Evolutionary Computing'),
+        ('Comp:NA', 'Numerical Analysis'),
+        ('Comp:OS', 'Operating Systems'),
+        ('Comp:OH', 'Other Computer Science'),
+        ('Comp:PF', 'Performance'),
+        ('Comp:PL', 'Programming Languages'),
+        ('Comp:RO', 'Robotics'),
+        ('Comp:SI', 'Social and Information Networks'),
+        ('Comp:SE', 'Software Engineering'),
+        ('Comp:SD', 'Sound'),
+        ('Comp:SC', 'Symbolic Computation'),
+        ('Comp:SY', 'Systems and Control'),
+        )
+     ),
+)
+subject_areas_raw_dict = dict(SCIPOST_SUBJECT_AREAS)
+
+# Make dict of the form {'Phys:AT': 'Atomic...', ...}
+subject_areas_dict = {}
+for k in subject_areas_raw_dict.keys():
+    subject_areas_dict.update(dict(subject_areas_raw_dict[k]))
diff --git a/scipost/forms.py b/scipost/forms.py
index 3716ad8d83f4800b3c1e0eed0756279746f16bda..f8d0629bd7684d0ae9d2ee559d420167aadaf496 100644
--- a/scipost/forms.py
+++ b/scipost/forms.py
@@ -11,6 +11,7 @@ from crispy_forms.helper import FormHelper
 from crispy_forms.layout import Layout, Div, Field, Fieldset, HTML, Submit
 
 from .models import *
+from .constants import SCIPOST_DISCIPLINES
 
 from journals.models import Publication
 from submissions.models import SUBMISSION_STATUS_PUBLICLY_UNLISTED
diff --git a/scipost/models.py b/scipost/models.py
index 59afc30d53d40172bfd37ea69989e8943afe2cef..033c08ec50202e4cc88e200a4db4f8ee523a5be2 100644
--- a/scipost/models.py
+++ b/scipost/models.py
@@ -10,129 +10,10 @@ from django.utils.safestring import mark_safe
 
 from django_countries.fields import CountryField
 
-from scipost.models import *
-
-
-SCIPOST_DISCIPLINES = (
-    ('physics', 'Physics'),
-    ('astrophysics', 'Astrophysics'),
-    ('mathematics', 'Mathematics'),
-    ('computerscience', 'Computer Science'),
-    )
-disciplines_dict = dict(SCIPOST_DISCIPLINES)
-
-SCIPOST_SUBJECT_AREAS = (
-    ('Physics', (
-        ('Phys:AE', 'Atomic, Molecular and Optical Physics - Experiment'),
-        ('Phys:AT', 'Atomic, Molecular and Optical Physics - Theory'),
-        ('Phys:BI', 'Biophysics'),
-        ('Phys:CE', 'Condensed Matter Physics - Experiment'),
-        ('Phys:CT', 'Condensed Matter Physics - Theory'),
-        ('Phys:FD', 'Fluid Dynamics'),
-        ('Phys:GR', 'Gravitation, Cosmology and Astroparticle Physics'),
-        ('Phys:HE', 'High-Energy Physics - Experiment'),
-        ('Phys:HT', 'High-Energy Physics- Theory'),
-        ('Phys:HP', 'High-Energy Physics - Phenomenology'),
-        ('Phys:MP', 'Mathematical Physics'),
-        ('Phys:NE', 'Nuclear Physics - Experiment'),
-        ('Phys:NT', 'Nuclear Physics - Theory'),
-        ('Phys:QP', 'Quantum Physics'),
-        ('Phys:SM', 'Statistical and Soft Matter Physics'),
-        )
-     ),
-    ('Astrophysics', (
-        ('Astro:GA', 'Astrophysics of Galaxies'),
-        ('Astro:CO', 'Cosmology and Nongalactic Astrophysics'),
-        ('Astro:EP', 'Earth and Planetary Astrophysics'),
-        ('Astro:HE', 'High Energy Astrophysical Phenomena'),
-        ('Astro:IM', 'Instrumentation and Methods for Astrophysics'),
-        ('Astro:SR', 'Solar and Stellar Astrophysics'),
-        )
-     ),
-    ('Mathematics', (
-        ('Math:AG', 'Algebraic Geometry'),
-        ('Math:AT', 'Algebraic Topology'),
-        ('Math:AP', 'Analysis of PDEs'),
-        ('Math:CT', 'Category Theory'),
-        ('Math:CA', 'Classical Analysis and ODEs'),
-        ('Math:CO', 'Combinatorics'),
-        ('Math:AC', 'Commutative Algebra'),
-        ('Math:CV', 'Complex Variables'),
-        ('Math:DG', 'Differential Geometry'),
-        ('Math:DS', 'Dynamical Systems'),
-        ('Math:FA', 'Functional Analysis'),
-        ('Math:GM', 'General Mathematics'),
-        ('Math:GN', 'General Topology'),
-        ('Math:GT', 'Geometric Topology'),
-        ('Math:GR', 'Group Theory'),
-        ('Math:HO', 'History and Overview'),
-        ('Math:IT', 'Information Theory'),
-        ('Math:KT', 'K-Theory and Homology'),
-        ('Math:LO', 'Logic'),
-        ('Math:MP', 'Mathematical Physics'),
-        ('Math:MG', 'Metric Geometry'),
-        ('Math:NT', 'Number Theory'),
-        ('Math:NA', 'Numerical Analysis'),
-        ('Math:OA', 'Operator Algebras'),
-        ('Math:OC', 'Optimization and Control'),
-        ('Math:PR', 'Probability'),
-        ('Math:QA', 'Quantum Algebra'),
-        ('Math:RT', 'Representation Theory'),
-        ('Math:RA', 'Rings and Algebras'),
-        ('Math:SP', 'Spectral Theory'),
-        ('Math:ST', 'Statistics Theory'),
-        ('Math:SG', 'Symplectic Geometry'),
-        )
-     ),
-    ('Computer Science', (
-        ('Comp:AI', 'Artificial Intelligence'),
-        ('Comp:CC', 'Computational Complexity'),
-        ('Comp:CE', 'Computational Engineering, Finance, and Science'),
-        ('Comp:CG', 'Computational Geometry'),
-        ('Comp:GT', 'Computer Science and Game Theory'),
-        ('Comp:CV', 'Computer Vision and Pattern Recognition'),
-        ('Comp:CY', 'Computers and Society'),
-        ('Comp:CR', 'Cryptography and Security'),
-        ('Comp:DS', 'Data Structures and Algorithms'),
-        ('Comp:DB', 'Databases'),
-        ('Comp:DL', 'Digital Libraries'),
-        ('Comp:DM', 'Discrete Mathematics'),
-        ('Comp:DC', 'Distributed, Parallel, and Cluster Computing'),
-        ('Comp:ET', 'Emerging Technologies'),
-        ('Comp:FL', 'Formal Languages and Automata Theory'),
-        ('Comp:GL', 'General Literature'),
-        ('Comp:GR', 'Graphics'),
-        ('Comp:AR', 'Hardware Architecture'),
-        ('Comp:HC', 'Human-Computer Interaction'),
-        ('Comp:IR', 'Information Retrieval'),
-        ('Comp:IT', 'Information Theory'),
-        ('Comp:LG', 'Learning'),
-        ('Comp:LO', 'Logic in Computer Science'),
-        ('Comp:MS', 'Mathematical Software'),
-        ('Comp:MA', 'Multiagent Systems'),
-        ('Comp:MM', 'Multimedia'),
-        ('Comp:NI', 'Networking and Internet Architecture'),
-        ('Comp:NE', 'Neural and Evolutionary Computing'),
-        ('Comp:NA', 'Numerical Analysis'),
-        ('Comp:OS', 'Operating Systems'),
-        ('Comp:OH', 'Other Computer Science'),
-        ('Comp:PF', 'Performance'),
-        ('Comp:PL', 'Programming Languages'),
-        ('Comp:RO', 'Robotics'),
-        ('Comp:SI', 'Social and Information Networks'),
-        ('Comp:SE', 'Software Engineering'),
-        ('Comp:SD', 'Sound'),
-        ('Comp:SC', 'Symbolic Computation'),
-        ('Comp:SY', 'Systems and Control'),
-        )
-     ),
-)
-subject_areas_raw_dict = dict(SCIPOST_SUBJECT_AREAS)
+from .constants import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS,\
+    disciplines_dict, subject_areas_dict
 
-# Make dict of the form {'Phys:AT': 'Atomic...', ...}
-subject_areas_dict = {}
-for k in subject_areas_raw_dict.keys():
-    subject_areas_dict.update(dict(subject_areas_raw_dict[k]))
+from scipost.models import *
 
 
 class ChoiceArrayField(ArrayField):
diff --git a/submissions/models.py b/submissions/models.py
index 68a3d1e867b2720f97fd109dee8cd1d8a18d681a..2ea5a6c80cecdb9cdbc796f30b55e1ec87b17d8a 100644
--- a/submissions/models.py
+++ b/submissions/models.py
@@ -8,8 +8,8 @@ from django.template import Template, Context
 from .models import *
 
 from scipost.models import ChoiceArrayField, Contributor, title_dict, Remark
-from scipost.models import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS
-from scipost.models import subject_areas_dict, TITLE_CHOICES
+from scipost.constants import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS, subject_areas_dict
+from scipost.models import TITLE_CHOICES
 from journals.models import SCIPOST_JOURNALS_SUBMIT, SCIPOST_JOURNALS_DOMAINS
 from journals.models import SCIPOST_JOURNALS_SPECIALIZATIONS
 from journals.models import journals_submit_dict, journals_domains_dict, journals_spec_dict
diff --git a/theses/models.py b/theses/models.py
index 139948b9175deb6bc62fdc098bef6d3fc4a4ef86..50ec6b1f47548e9f43d6f53d31d091883f4ed091 100644
--- a/theses/models.py
+++ b/theses/models.py
@@ -6,6 +6,7 @@ from django.template import Template, Context
 from .models import *
 
 from journals.models import *
+from scipost.constants import SCIPOST_DISCIPLINES, subject_areas_dict, disciplines_dict
 from scipost.models import *