diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle
index 5ff5e6a9ea55399cf327919913699348eee34d57..2b504017332c5958842ce6f5e385ed68f60371fa 100644
Binary files a/docs/_build/doctrees/environment.pickle and b/docs/_build/doctrees/environment.pickle differ
diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree
index 82cc964c8abcdb3c95596212e56f62622823670f..9de7c0f38e1f089efb45c39a7e8824b3827a63e1 100644
Binary files a/docs/_build/doctrees/index.doctree and b/docs/_build/doctrees/index.doctree differ
diff --git a/docs/_build/doctrees/modules/models.doctree b/docs/_build/doctrees/modules/models.doctree
index 5357f423e252b5f59617dc9480bc463237ec1177..e20433445773022400c62eea6b976307ff0c7dbd 100644
Binary files a/docs/_build/doctrees/modules/models.doctree and b/docs/_build/doctrees/modules/models.doctree differ
diff --git a/docs/_build/doctrees/modules/views.doctree b/docs/_build/doctrees/modules/views.doctree
index e0a3eca4d13f53f5d925e889ef7f91a0154777ae..f261a7ae45fbaa86aa5294b8eb331d7ddd4ca64d 100644
Binary files a/docs/_build/doctrees/modules/views.doctree and b/docs/_build/doctrees/modules/views.doctree differ
diff --git a/docs/_build/html/_modules/commentaries/models.html b/docs/_build/html/_modules/commentaries/models.html
index 3941d4f3c2cdd9b0c7f83e4f2b23f8759ab7632e..96dd6588bb5180f6c546d4930b3ca4c60ceb5c57 100644
--- a/docs/_build/html/_modules/commentaries/models.html
+++ b/docs/_build/html/_modules/commentaries/models.html
@@ -84,8 +84,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
@@ -194,7 +196,7 @@
         <span class="n">verbose_name_plural</span> <span class="o">=</span> <span class="s1">&#39;Commentaries&#39;</span>
 
 
-    <span class="k">def</span> <span class="nf">__str__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_title</span>
 
 
@@ -239,7 +241,7 @@
         <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span>
 
 
-    <span class="k">def</span> <span class="nf">header_as_li</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">header_as_li</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
         <span class="c1"># for display in search lists</span>
         <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">&#39;scipost_url&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">scipost_url</span><span class="p">(),</span> <span class="s1">&#39;pub_title&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_title</span><span class="p">,</span>
                            <span class="s1">&#39;author_list&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span>
@@ -270,13 +272,11 @@
         <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span>
 
 
-    <span class="k">def</span> <span class="nf">simple_header_as_li</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">simple_header_as_li</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
         <span class="c1"># for display in Lists</span>
         <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">&#39;scipost_url&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">scipost_url</span><span class="p">(),</span> <span class="s1">&#39;pub_title&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_title</span><span class="p">,</span>
                            <span class="s1">&#39;author_list&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">})</span>
         <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;&lt;li&gt;&#39;</span>
-                  <span class="c1">#&#39;&lt;div class=&quot;flex-container&quot;&gt;&#39;</span>
-                  <span class="c1">#&#39;&lt;div class=&quot;flex-whitebox0&quot;&gt;&#39;</span>
                   <span class="s1">&#39;&lt;p&gt;&lt;a href=&quot;{{ scipost_url }}&quot; &#39;</span>
                   <span class="s1">&#39;class=&quot;pubtitleli&quot;&gt;{{ pub_title }}&lt;/a&gt;&lt;/p&gt;&#39;</span>
                   <span class="s1">&#39;&lt;p&gt;by {{ author_list }}&#39;</span><span class="p">)</span>
@@ -289,40 +289,28 @@
             <span class="n">header</span> <span class="o">+=</span> <span class="s1">&#39;, &lt;a href=&quot;{{ arxiv_link }}&quot;&gt;{{ arxiv_link }}&lt;/a&gt;&#39;</span>
             <span class="n">context</span><span class="p">[</span><span class="s1">&#39;arxiv_link&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_link</span>
         <span class="n">header</span> <span class="o">+=</span> <span class="s1">&#39;&lt;/p&gt;&#39;</span>
-        <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="c1">#&#39;&lt;/div&gt;&lt;/div&gt;&#39;</span>
-                   <span class="s1">&#39;&lt;/li&gt;&#39;</span><span class="p">)</span>
+        <span class="n">header</span> <span class="o">+=</span> <span class="s1">&#39;&lt;/li&gt;&#39;</span>
         <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span>
         <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span>
 
 
-<div class="viewcode-block" id="Commentary.parse_links_into_urls"><a class="viewcode-back" href="../../modules/models.html#commentaries.models.Commentary.parse_links_into_urls">[docs]</a>    <span class="k">def</span> <span class="nf">parse_links_into_urls</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<div class="viewcode-block" id="Commentary.parse_links_into_urls"><a class="viewcode-back" href="../../modules/models.html#commentaries.models.Commentary.parse_links_into_urls">[docs]</a>    <span class="k">def</span> <span class="nf">parse_links_into_urls</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
         <span class="sd">&quot;&quot;&quot; Takes the arXiv nr or DOI and turns it into the urls &quot;&quot;&quot;</span>
         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_DOI</span><span class="p">:</span>
             <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_or_DOI_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_DOI</span>
-<span class="c1">#            self.arxiv_or_DOI_string = self.arxiv_or_DOI_string.replace(&#39;http://dx.doi.org/&#39;, &#39;&#39;)</span>
             <span class="bp">self</span><span class="o">.</span><span class="n">pub_DOI_link</span> <span class="o">=</span> <span class="s1">&#39;http://dx.doi.org/&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_DOI</span>
         <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_identifier</span><span class="p">:</span>
-<span class="c1">#            self.arxiv_or_DOI_string = str(self.arxiv_link)</span>
-<span class="c1">#            # Format required: either identifier arXiv:1234.56789v10 or old-style arXiv:cond-mat/9712001v1</span>
-<span class="c1">#            # strip:</span>
-<span class="c1">#            self.arxiv_or_DOI_string = self.arxiv_or_DOI_string.replace(&#39;http://&#39;, &#39;&#39;)</span>
-<span class="c1">#            # Old style: from arxiv.org/abs/1234.5678 into arXiv:1234.5678 (new identifier style)</span>
-<span class="c1">#            self.arxiv_or_DOI_string = self.arxiv_or_DOI_string.replace(&#39;arxiv.org/&#39;, &#39;&#39;)</span>
-<span class="c1">#            self.arxiv_or_DOI_string = self.arxiv_or_DOI_string.replace(&#39;abs/&#39;, &#39;&#39;)</span>
-<span class="c1">#            self.arxiv_or_DOI_string = self.arxiv_or_DOI_string.replace(&#39;pdf/&#39;, &#39;&#39;)</span>
-<span class="c1">#            # make sure arXiv prefix is there:</span>
-<span class="c1">#            self.arxiv_or_DOI_string = &#39;arXiv:&#39; + self.arxiv_or_DOI_string</span>
             <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_or_DOI_string</span> <span class="o">=</span> <span class="s1">&#39;arXiv:&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_identifier</span>
             <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_link</span> <span class="o">=</span> <span class="s1">&#39;http://arxiv.org/abs/&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_identifier</span>
         <span class="k">else</span><span class="p">:</span> <span class="c1"># should never come here</span>
             <span class="k">pass</span>
         <span class="bp">self</span><span class="o">.</span><span class="n">save</span><span class="p">()</span></div>
 
-<div class="viewcode-block" id="Commentary.scipost_url"><a class="viewcode-back" href="../../modules/models.html#commentaries.models.Commentary.scipost_url">[docs]</a>    <span class="k">def</span> <span class="nf">scipost_url</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<div class="viewcode-block" id="Commentary.scipost_url"><a class="viewcode-back" href="../../modules/models.html#commentaries.models.Commentary.scipost_url">[docs]</a>    <span class="k">def</span> <span class="nf">scipost_url</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
         <span class="sd">&quot;&quot;&quot; Returns the url of the SciPost Commentary Page &quot;&quot;&quot;</span>
         <span class="k">return</span> <span class="s1">&#39;/commentary/&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_or_DOI_string</span></div>
 
-<div class="viewcode-block" id="Commentary.scipost_url_full"><a class="viewcode-back" href="../../modules/models.html#commentaries.models.Commentary.scipost_url_full">[docs]</a>    <span class="k">def</span> <span class="nf">scipost_url_full</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<div class="viewcode-block" id="Commentary.scipost_url_full"><a class="viewcode-back" href="../../modules/models.html#commentaries.models.Commentary.scipost_url_full">[docs]</a>    <span class="k">def</span> <span class="nf">scipost_url_full</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
         <span class="sd">&quot;&quot;&quot; Returns the url of the SciPost Commentary Page &quot;&quot;&quot;</span>
         <span class="k">return</span> <span class="s1">&#39;https://scipost.org/commentary/&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_or_DOI_string</span></div></div>
 </pre></div>
diff --git a/docs/_build/html/_modules/commentaries/views.html b/docs/_build/html/_modules/commentaries/views.html
index fc65e3fd7c17d0daa122656f31a607550d960268..05dcc5a85cae1ca360a726f29039865d773ffc1c 100644
--- a/docs/_build/html/_modules/commentaries/views.html
+++ b/docs/_build/html/_modules/commentaries/views.html
@@ -84,8 +84,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
@@ -171,38 +173,37 @@
     <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">&#39;POST&#39;</span><span class="p">:</span>
         <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span>
         <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span>
-<span class="c1">#            if form.cleaned_data[&#39;arxiv_identifier&#39;] is None and form.cleaned_data[&#39;pub_DOI&#39;] is None:</span>
             <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
             <span class="n">existing_commentary</span> <span class="o">=</span> <span class="kc">None</span>
-            <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;arxiv_identifier&#39;</span><span class="p">]</span> <span class="o">==</span><span class="s1">&#39;&#39;</span> <span class="ow">and</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;pub_DOI&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
+            <span class="k">if</span> <span class="ow">not</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;arxiv_identifier&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;pub_DOI&#39;</span><span class="p">]:</span>
                 <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;You must provide either a DOI (for a published paper) &#39;</span>
                                 <span class="s1">&#39;or an arXiv identifier (for a preprint).&#39;</span><span class="p">)</span>
-            <span class="k">elif</span> <span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;arxiv_identifier&#39;</span><span class="p">]</span> <span class="o">!=</span><span class="s1">&#39;&#39;</span> <span class="ow">and</span>
+            <span class="k">elif</span> <span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;arxiv_identifier&#39;</span><span class="p">]</span> <span class="ow">and</span>
                   <span class="p">(</span><span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span>
                    <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">arxiv_identifier</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;arxiv_identifier&#39;</span><span class="p">])</span><span class="o">.</span><span class="n">exists</span><span class="p">())):</span>
                 <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">&#39;There already exists a Commentary Page on this preprint, see&#39;</span>
                 <span class="n">existing_commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span>
                     <span class="n">Commentary</span><span class="p">,</span>
                     <span class="n">arxiv_identifier</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;arxiv_identifier&#39;</span><span class="p">])</span>
-            <span class="k">elif</span> <span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;pub_DOI&#39;</span><span class="p">]</span> <span class="o">!=</span><span class="s1">&#39;&#39;</span> <span class="ow">and</span>
+            <span class="k">elif</span> <span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;pub_DOI&#39;</span><span class="p">]</span> <span class="ow">and</span>
                   <span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">pub_DOI</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;pub_DOI&#39;</span><span class="p">])</span><span class="o">.</span><span class="n">exists</span><span class="p">()):</span>
                 <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">&#39;There already exists a Commentary Page on this publication, see&#39;</span>
                 <span class="n">existing_commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Commentary</span><span class="p">,</span> <span class="n">pub_DOI</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;pub_DOI&#39;</span><span class="p">])</span>
-            <span class="k">if</span> <span class="n">errormessage</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">errormessage</span><span class="p">:</span>
                 <span class="n">doiform</span> <span class="o">=</span> <span class="n">DOIToQueryForm</span><span class="p">()</span>
                 <span class="n">identifierform</span> <span class="o">=</span> <span class="n">IdentifierToQueryForm</span><span class="p">()</span>
                 <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;form&#39;</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">&#39;doiform&#39;</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">&#39;identifierform&#39;</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span>
                            <span class="s1">&#39;errormessage&#39;</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span>
                            <span class="s1">&#39;existing_commentary&#39;</span><span class="p">:</span> <span class="n">existing_commentary</span><span class="p">}</span>
                 <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;commentaries/request_commentary.html&#39;</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
-            <span class="c1"># otherwise we can create the Commentary</span>
+            
+            <span class="c1"># Otherwise we can create the Commentary</span>
             <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span>
             <span class="n">commentary</span> <span class="o">=</span> <span class="n">Commentary</span> <span class="p">(</span>
                 <span class="n">requested_by</span> <span class="o">=</span> <span class="n">contributor</span><span class="p">,</span>
                 <span class="nb">type</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;type&#39;</span><span class="p">],</span>
                 <span class="n">discipline</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;discipline&#39;</span><span class="p">],</span>
                 <span class="n">domain</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;domain&#39;</span><span class="p">],</span>
-<span class="c1">#                specialization = form.cleaned_data[&#39;specialization&#39;],</span>
                 <span class="n">subject_area</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;subject_area&#39;</span><span class="p">],</span>
                 <span class="n">pub_title</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;pub_title&#39;</span><span class="p">],</span>
                 <span class="n">arxiv_identifier</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;arxiv_identifier&#39;</span><span class="p">],</span>
@@ -218,7 +219,7 @@
                 <span class="p">)</span>
             <span class="n">commentary</span><span class="o">.</span><span class="n">parse_links_into_urls</span><span class="p">()</span>
             <span class="n">commentary</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
-<span class="c1">#            return HttpResponseRedirect(&#39;request_commentary_ack&#39;)</span>
+            
             <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;ack_header&#39;</span><span class="p">:</span> <span class="s1">&#39;Thank you for your request for a Commentary Page&#39;</span><span class="p">,</span>
                        <span class="s1">&#39;ack_message&#39;</span><span class="p">:</span> <span class="s1">&#39;Your request will soon be handled by an Editor. &#39;</span><span class="p">,</span>
                        <span class="s1">&#39;followup_message&#39;</span><span class="p">:</span> <span class="s1">&#39;Return to your &#39;</span><span class="p">,</span>
@@ -247,13 +248,14 @@
             <span class="k">elif</span> <span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">pub_DOI</span><span class="o">=</span><span class="n">doiform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;doi&#39;</span><span class="p">])</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
                 <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">&#39;There already exists a Commentary Page on this publication, see&#39;</span>
                 <span class="n">existing_commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Commentary</span><span class="p">,</span> <span class="n">pub_DOI</span><span class="o">=</span><span class="n">doiform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;doi&#39;</span><span class="p">])</span>
-            <span class="k">if</span> <span class="n">errormessage</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">errormessage</span><span class="p">:</span>
                 <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">()</span>
                 <span class="n">identifierform</span> <span class="o">=</span> <span class="n">IdentifierToQueryForm</span><span class="p">()</span>
                 <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;form&#39;</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">&#39;doiform&#39;</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">&#39;identifierform&#39;</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span>
                            <span class="s1">&#39;errormessage&#39;</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span>
                            <span class="s1">&#39;existing_commentary&#39;</span><span class="p">:</span> <span class="n">existing_commentary</span><span class="p">}</span>
                 <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;commentaries/request_commentary.html&#39;</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
+            
             <span class="c1"># Otherwise we query Crossref for the information:</span>
             <span class="k">try</span><span class="p">:</span>
                 <span class="n">queryurl</span> <span class="o">=</span> <span class="s1">&#39;http://api.crossref.org/works/</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">doiform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;doi&#39;</span><span class="p">]</span>
@@ -266,28 +268,31 @@
                 <span class="k">for</span> <span class="n">author</span> <span class="ow">in</span> <span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">&#39;message&#39;</span><span class="p">][</span><span class="s1">&#39;author&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">:]:</span>
                     <span class="n">authorlist</span> <span class="o">+=</span> <span class="s1">&#39;, &#39;</span> <span class="o">+</span> <span class="n">author</span><span class="p">[</span><span class="s1">&#39;given&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="n">author</span><span class="p">[</span><span class="s1">&#39;family&#39;</span><span class="p">]</span>
                 <span class="n">journal</span> <span class="o">=</span> <span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">&#39;message&#39;</span><span class="p">][</span><span class="s1">&#39;container-title&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
+                
                 <span class="k">try</span><span class="p">:</span>
                     <span class="n">volume</span> <span class="o">=</span> <span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">&#39;message&#39;</span><span class="p">][</span><span class="s1">&#39;volume&#39;</span><span class="p">]</span>
-                <span class="k">except</span><span class="p">:</span>
+                <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
                     <span class="n">volume</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+                
                 <span class="n">pages</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
                 <span class="k">try</span><span class="p">:</span>
                     <span class="n">pages</span> <span class="o">=</span> <span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">&#39;message&#39;</span><span class="p">][</span><span class="s1">&#39;article-number&#39;</span><span class="p">]</span> <span class="c1"># for Phys Rev</span>
-                <span class="k">except</span><span class="p">:</span>
+                <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
                     <span class="k">pass</span>
                 <span class="k">try</span><span class="p">:</span>
                     <span class="n">pages</span> <span class="o">=</span> <span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">&#39;message&#39;</span><span class="p">][</span><span class="s1">&#39;page&#39;</span><span class="p">]</span>
-                <span class="k">except</span><span class="p">:</span>
+                <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
                     <span class="k">pass</span>
+                
                 <span class="n">pub_date</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
                 <span class="k">try</span><span class="p">:</span>
                     <span class="n">pub_date</span> <span class="o">=</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">&#39;message&#39;</span><span class="p">][</span><span class="s1">&#39;issued&#39;</span><span class="p">][</span><span class="s1">&#39;date-parts&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> <span class="o">+</span> <span class="s1">&#39;-&#39;</span> <span class="o">+</span>
                                 <span class="nb">str</span><span class="p">(</span><span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">&#39;message&#39;</span><span class="p">][</span><span class="s1">&#39;issued&#39;</span><span class="p">][</span><span class="s1">&#39;date-parts&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]))</span>
                     <span class="k">try</span><span class="p">:</span>
                         <span class="n">pub_date</span> <span class="o">+=</span> <span class="s1">&#39;-&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">&#39;message&#39;</span><span class="p">][</span><span class="s1">&#39;issued&#39;</span><span class="p">][</span><span class="s1">&#39;date-parts&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">])</span>
-                    <span class="k">except</span><span class="p">:</span>
+                    <span class="k">except</span> <span class="p">(</span><span class="ne">IndexError</span><span class="p">,</span> <span class="ne">KeyError</span><span class="p">):</span>
                         <span class="k">pass</span>
-                <span class="k">except</span><span class="p">:</span>
+                <span class="k">except</span> <span class="p">(</span><span class="ne">IndexError</span><span class="p">,</span> <span class="ne">KeyError</span><span class="p">):</span>
                     <span class="k">pass</span>
                 <span class="n">pub_DOI</span> <span class="o">=</span> <span class="n">doiform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;doi&#39;</span><span class="p">]</span>
                 <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">(</span>
@@ -300,7 +305,7 @@
                 <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;form&#39;</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">&#39;doiform&#39;</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">&#39;identifierform&#39;</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,}</span>
                 <span class="n">context</span><span class="p">[</span><span class="s1">&#39;title&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">pub_title</span>
                 <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;commentaries/request_commentary.html&#39;</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
-            <span class="k">except</span><span class="p">:</span>
+            <span class="k">except</span> <span class="p">(</span><span class="ne">IndexError</span><span class="p">,</span> <span class="ne">KeyError</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
                 <span class="k">pass</span>
         <span class="k">else</span><span class="p">:</span>
             <span class="k">pass</span>
@@ -327,7 +332,7 @@
                 <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">&#39;There already exists a Commentary Page on this preprint, see&#39;</span>
                 <span class="n">existing_commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span>
                     <span class="n">Commentary</span><span class="p">,</span> <span class="n">arxiv_identifier</span><span class="o">=</span><span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;identifier&#39;</span><span class="p">])</span>
-            <span class="k">if</span> <span class="n">errormessage</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">errormessage</span><span class="p">:</span>
                 <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">()</span>
                 <span class="n">doiform</span> <span class="o">=</span> <span class="n">DOIToQueryForm</span><span class="p">()</span>
                 <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;form&#39;</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">&#39;doiform&#39;</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">&#39;identifierform&#39;</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span>
@@ -339,26 +344,29 @@
                 <span class="n">queryurl</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;http://export.arxiv.org/api/query?id_list=</span><span class="si">%s</span><span class="s1">&#39;</span>
                             <span class="o">%</span> <span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;identifier&#39;</span><span class="p">])</span>
                 <span class="n">arxivquery</span> <span class="o">=</span> <span class="n">feedparser</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">queryurl</span><span class="p">)</span>
+                
                 <span class="c1"># If paper has been published, should comment on published version</span>
                 <span class="k">try</span><span class="p">:</span>
                     <span class="n">arxiv_journal_ref</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">&#39;entries&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;arxiv_journal_ref&#39;</span><span class="p">]</span>
                     <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;This paper has been published as &#39;</span> <span class="o">+</span> <span class="n">arxiv_journal_ref</span>
                                     <span class="o">+</span> <span class="s1">&#39;. Please comment on the published version.&#39;</span><span class="p">)</span>
-                <span class="k">except</span><span class="p">:</span>
+                <span class="k">except</span> <span class="p">(</span><span class="ne">IndexError</span><span class="p">,</span> <span class="ne">KeyError</span><span class="p">):</span>
                     <span class="k">pass</span>
                 <span class="k">try</span><span class="p">:</span>
                     <span class="n">arxiv_doi</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">&#39;entries&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;arxiv_doi&#39;</span><span class="p">]</span>
                     <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;This paper has been published under DOI &#39;</span> <span class="o">+</span> <span class="n">arxiv_DOI</span>
                                     <span class="o">+</span> <span class="s1">&#39;. Please comment on the published version.&#39;</span><span class="p">)</span>
-                <span class="k">except</span><span class="p">:</span>
+                <span class="k">except</span> <span class="p">(</span><span class="ne">IndexError</span><span class="p">,</span> <span class="ne">KeyError</span><span class="p">):</span>
                     <span class="k">pass</span>
-                <span class="k">if</span> <span class="n">errormessage</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
+                
+                <span class="k">if</span> <span class="n">errormessage</span><span class="p">:</span>
                     <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">()</span>
                     <span class="n">doiform</span> <span class="o">=</span> <span class="n">DOIToQueryForm</span><span class="p">()</span>
                     <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;form&#39;</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">&#39;doiform&#39;</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">&#39;identifierform&#39;</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span>
                                <span class="s1">&#39;errormessage&#39;</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span>
                                <span class="s1">&#39;existing_commentary&#39;</span><span class="p">:</span> <span class="n">existing_commentary</span><span class="p">}</span>
                     <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;commentaries/request_commentary.html&#39;</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
+                
                 <span class="c1"># otherwise prefill the form:</span>
                 <span class="n">metadata</span> <span class="o">=</span> <span class="n">arxivquery</span>
                 <span class="n">pub_title</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">&#39;entries&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;title&#39;</span><span class="p">]</span>
@@ -376,7 +384,7 @@
                 <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;form&#39;</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">&#39;doiform&#39;</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">&#39;identifierform&#39;</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">}</span>
                 <span class="n">context</span><span class="p">[</span><span class="s1">&#39;title&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">pub_title</span>
                 <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;commentaries/request_commentary.html&#39;</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
-            <span class="k">except</span><span class="p">:</span> <span class="c1"># something went wrong with processing the arXiv data</span>
+            <span class="k">except</span> <span class="p">(</span><span class="ne">IndexError</span><span class="p">,</span> <span class="ne">KeyError</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span> <span class="c1"># something went wrong with processing the arXiv data</span>
                 <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">&#39;An error occurred while processing the arXiv data. Are you sure this identifier exists?&#39;</span>
                 <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">()</span>
                 <span class="n">doiform</span> <span class="o">=</span> <span class="n">DOIToQueryForm</span><span class="p">()</span>
@@ -384,7 +392,6 @@
                            <span class="s1">&#39;errormessage&#39;</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span>
                            <span class="s1">&#39;existing_commentary&#39;</span><span class="p">:</span> <span class="n">existing_commentary</span><span class="p">}</span>
                 <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;commentaries/request_commentary.html&#39;</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
-<span class="c1">#                pass</span>
         <span class="k">else</span><span class="p">:</span>
             <span class="k">pass</span>
     <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">&#39;commentaries:request_commentary&#39;</span><span class="p">))</span></div>
@@ -470,8 +477,6 @@
                 <span class="n">emailmessage</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">fail_silently</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
                 <span class="n">commentary</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
 
-    <span class="c1">#context = {&#39;commentary_id&#39;: commentary_id }</span>
-    <span class="c1">#return render(request, &#39;commentaries/vet_commentary_request_ack.html&#39;, context)</span>
     <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;ack_header&#39;</span><span class="p">:</span> <span class="s1">&#39;SciPost Commentary request vetted.&#39;</span><span class="p">,</span>
                <span class="s1">&#39;followup_message&#39;</span><span class="p">:</span> <span class="s1">&#39;Return to the &#39;</span><span class="p">,</span>
                <span class="s1">&#39;followup_link&#39;</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">&#39;commentaries:vet_commentary_requests&#39;</span><span class="p">),</span>
@@ -521,7 +526,7 @@
             <span class="n">commentary_search_list</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;-pub_date&#39;</span><span class="p">)</span>
         <span class="k">else</span><span class="p">:</span>
             <span class="n">commentary_search_list</span> <span class="o">=</span> <span class="p">[]</span>
-        <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;form&#39;</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">&#39;commentary_search_list&#39;</span><span class="p">:</span> <span class="n">commentary_search_list</span> <span class="p">}</span>
+        <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;form&#39;</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">&#39;commentary_search_list&#39;</span><span class="p">:</span> <span class="n">commentary_search_list</span><span class="p">}</span>
         <span class="k">return</span> <span class="n">HttpResponseRedirect</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;commentaries/commentaries.html&#39;</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
     <span class="k">else</span><span class="p">:</span>
         <span class="n">form</span> <span class="o">=</span> <span class="n">CommentarySearchForm</span><span class="p">()</span>
@@ -536,34 +541,27 @@
 
 <span class="k">def</span> <span class="nf">commentary_detail</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_or_DOI_string</span><span class="p">):</span>
     <span class="n">commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Commentary</span><span class="p">,</span> <span class="n">arxiv_or_DOI_string</span><span class="o">=</span><span class="n">arxiv_or_DOI_string</span><span class="p">)</span>
-<span class="c1">#    other_versions = Commentary.objects.filter(</span>
-<span class="c1">#        arxiv_identifier_wo_vn_nr=submission.arxiv_identifier_wo_vn_nr</span>
-<span class="c1">#    ).exclude(pk=submission.id)</span>
     <span class="n">comments</span> <span class="o">=</span> <span class="n">commentary</span><span class="o">.</span><span class="n">comment_set</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
     <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">&#39;POST&#39;</span><span class="p">:</span>
         <span class="n">form</span> <span class="o">=</span> <span class="n">CommentForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span>
         <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span>
             <span class="n">author</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span>
-            <span class="n">newcomment</span> <span class="o">=</span> <span class="n">Comment</span> <span class="p">(</span>
-                <span class="n">commentary</span> <span class="o">=</span> <span class="n">commentary</span><span class="p">,</span>
-                <span class="n">author</span> <span class="o">=</span> <span class="n">author</span><span class="p">,</span>
-                <span class="n">is_rem</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_rem&#39;</span><span class="p">],</span>
-                <span class="n">is_que</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_que&#39;</span><span class="p">],</span>
-                <span class="n">is_ans</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_ans&#39;</span><span class="p">],</span>
-                <span class="n">is_obj</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_obj&#39;</span><span class="p">],</span>
-                <span class="n">is_rep</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_rep&#39;</span><span class="p">],</span>
-                <span class="n">is_val</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_val&#39;</span><span class="p">],</span>
-                <span class="n">is_lit</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_lit&#39;</span><span class="p">],</span>
-                <span class="n">is_sug</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_sug&#39;</span><span class="p">],</span>
-                <span class="n">comment_text</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;comment_text&#39;</span><span class="p">],</span>
-                <span class="n">remarks_for_editors</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;remarks_for_editors&#39;</span><span class="p">],</span>
-                <span class="n">date_submitted</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span>
+            <span class="n">newcomment</span> <span class="o">=</span> <span class="n">Comment</span><span class="p">(</span><span class="n">commentary</span><span class="o">=</span><span class="n">commentary</span><span class="p">,</span> <span class="n">author</span><span class="o">=</span><span class="n">author</span><span class="p">,</span>
+                <span class="n">is_rem</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_rem&#39;</span><span class="p">],</span>
+                <span class="n">is_que</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_que&#39;</span><span class="p">],</span>
+                <span class="n">is_ans</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_ans&#39;</span><span class="p">],</span>
+                <span class="n">is_obj</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_obj&#39;</span><span class="p">],</span>
+                <span class="n">is_rep</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_rep&#39;</span><span class="p">],</span>
+                <span class="n">is_val</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_val&#39;</span><span class="p">],</span>
+                <span class="n">is_lit</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_lit&#39;</span><span class="p">],</span>
+                <span class="n">is_sug</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;is_sug&#39;</span><span class="p">],</span>
+                <span class="n">comment_text</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;comment_text&#39;</span><span class="p">],</span>
+                <span class="n">remarks_for_editors</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;remarks_for_editors&#39;</span><span class="p">],</span>
+                <span class="n">date_submitted</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span>
                 <span class="p">)</span>
             <span class="n">newcomment</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
             <span class="n">author</span><span class="o">.</span><span class="n">nr_comments</span> <span class="o">=</span> <span class="n">Comment</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author</span><span class="o">=</span><span class="n">author</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
             <span class="n">author</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
-            <span class="c1">#request.session[&#39;commentary_id&#39;] = commentary.id</span>
-            <span class="c1">#return HttpResponseRedirect(reverse(&#39;comments:comment_submission_ack&#39;))</span>
             <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;ack_header&#39;</span><span class="p">:</span> <span class="s1">&#39;Thank you for contributing a Comment.&#39;</span><span class="p">,</span>
                        <span class="s1">&#39;ack_message&#39;</span><span class="p">:</span> <span class="s1">&#39;It will soon be vetted by an Editor.&#39;</span><span class="p">,</span>
                        <span class="s1">&#39;followup_message&#39;</span><span class="p">:</span> <span class="s1">&#39;Back to the &#39;</span><span class="p">,</span>
@@ -576,7 +574,6 @@
             <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;scipost/acknowledgement.html&#39;</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
     <span class="k">else</span><span class="p">:</span>
         <span class="n">form</span> <span class="o">=</span> <span class="n">CommentForm</span><span class="p">()</span>
-
     <span class="k">try</span><span class="p">:</span>
         <span class="n">author_replies</span> <span class="o">=</span> <span class="n">Comment</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">commentary</span><span class="o">=</span><span class="n">commentary</span><span class="p">,</span>
                                                 <span class="n">is_author_reply</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
diff --git a/docs/_build/html/_modules/comments/models.html b/docs/_build/html/_modules/comments/models.html
index 2bb4d6f398f3b6e84b74f434be82e53ca095d9bf..910194b7fe38926559ab9cf9efeb43fa69fa5d4c 100644
--- a/docs/_build/html/_modules/comments/models.html
+++ b/docs/_build/html/_modules/comments/models.html
@@ -84,8 +84,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
diff --git a/docs/_build/html/_modules/index.html b/docs/_build/html/_modules/index.html
index d542b91370a855fff3243927830f20ab9f3307c9..b34147da72efcbcad1775c4d48ab4d09dee09fd6 100644
--- a/docs/_build/html/_modules/index.html
+++ b/docs/_build/html/_modules/index.html
@@ -83,8 +83,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
diff --git a/docs/_build/html/_modules/journals/models.html b/docs/_build/html/_modules/journals/models.html
index 19b366e3146da55dc1716c2cdef797f6d46d2d81..aaba5cd549ace37d28f5ca495b5e82ef6807cf85 100644
--- a/docs/_build/html/_modules/journals/models.html
+++ b/docs/_build/html/_modules/journals/models.html
@@ -84,8 +84,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
@@ -332,13 +334,14 @@
     <span class="k">def</span> <span class="nf">citation</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
         <span class="k">return</span> <span class="p">(</span><span class="n">journal_name_abbrev_citation</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">in_journal</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
                 <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">number</span><span class="p">)</span>
-                <span class="o">+</span> <span class="s1">&#39;(&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">number</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;), &#39;</span>
-                <span class="o">+</span> <span class="n">paper_nr_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">paper_nr</span><span class="p">)</span>
+                <span class="c1">#+ &#39;(&#39; + str(self.in_issue.number) + &#39;)&#39;</span>
+                <span class="o">+</span> <span class="s1">&#39;, &#39;</span> <span class="o">+</span> <span class="n">paper_nr_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">paper_nr</span><span class="p">)</span>
                 <span class="o">+</span> <span class="s1">&#39; (&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">publication_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">&#39;%Y&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span> <span class="p">)</span>
 
     <span class="k">def</span> <span class="nf">citation_for_web</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="n">citation</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;{{ abbrev }} &lt;strong&gt;{{ volume_nr }}&lt;/strong&gt;({{ issue_nr }}), &#39;</span>
-                    <span class="s1">&#39;{{ paper_nr }} ({{ year }})&#39;</span><span class="p">)</span>
+        <span class="n">citation</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;{{ abbrev }} &lt;strong&gt;{{ volume_nr }}&lt;/strong&gt;&#39;</span>
+                    <span class="c1">#&#39;({{ issue_nr }})&#39;</span>
+                    <span class="s1">&#39;, {{ paper_nr }} ({{ year }})&#39;</span><span class="p">)</span>
         <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">citation</span><span class="p">)</span>
         <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">(</span>
             <span class="p">{</span><span class="s1">&#39;abbrev&#39;</span><span class="p">:</span> <span class="n">journal_name_abbrev_citation</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">in_journal</span><span class="o">.</span><span class="n">name</span><span class="p">),</span>
@@ -350,8 +353,9 @@
 
     <span class="k">def</span> <span class="nf">citation_for_web_linked</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
         <span class="n">citation</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;&lt;a href=&quot;{</span><span class="si">% u</span><span class="s1">rl </span><span class="se">\&#39;</span><span class="s1">scipost:publication_detail</span><span class="se">\&#39;</span><span class="s1"> doi_string=doi_string %}&quot;&gt;&#39;</span>
-                    <span class="s1">&#39;{{ abbrev }} &lt;strong&gt;{{ volume_nr }}&lt;/strong&gt;({{ issue_nr }}), &#39;</span>
-                    <span class="s1">&#39;{{ paper_nr }} ({{ year }})&#39;</span><span class="p">)</span>
+                    <span class="s1">&#39;{{ abbrev }} &lt;strong&gt;{{ volume_nr }}&lt;/strong&gt;&#39;</span>
+                    <span class="c1">#&#39;({{ issue_nr }})&#39;</span>
+                    <span class="s1">&#39;, {{ paper_nr }} ({{ year }})&#39;</span><span class="p">)</span>
         <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">citation</span><span class="p">)</span>
         <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">(</span>
             <span class="p">{</span><span class="s1">&#39;doi_string&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">doi_string</span><span class="p">,</span>
diff --git a/docs/_build/html/_modules/journals/views.html b/docs/_build/html/_modules/journals/views.html
index 489b7e15af34e192b507f4a78b621c0d4db097c4..f72a240f89711082235e56087877f91309be6432 100644
--- a/docs/_build/html/_modules/journals/views.html
+++ b/docs/_build/html/_modules/journals/views.html
@@ -84,8 +84,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
@@ -337,9 +339,12 @@
             <span class="n">current_issue</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Issue</span><span class="p">,</span>
                             <span class="n">pk</span><span class="o">=</span><span class="n">initiate_publication_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;to_be_issued_in&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">id</span><span class="p">)</span>
             <span class="c1"># Determine next available paper number:</span>
-            <span class="n">papers_in_current_issue</span> <span class="o">=</span> <span class="n">Publication</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">in_issue</span><span class="o">=</span><span class="n">current_issue</span><span class="p">)</span>
+            <span class="c1">#papers_in_current_issue = Publication.objects.filter(in_issue=current_issue)</span>
+            <span class="n">papers_in_current_volume</span> <span class="o">=</span> <span class="n">Publication</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
+                <span class="n">in_issue__in_volume</span><span class="o">=</span><span class="n">current_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="p">)</span>
             <span class="n">paper_nr</span> <span class="o">=</span> <span class="mi">1</span>
-            <span class="k">while</span> <span class="n">papers_in_current_issue</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">paper_nr</span><span class="o">=</span><span class="n">paper_nr</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+            <span class="c1">#while papers_in_current_issue.filter(paper_nr=paper_nr).exists():</span>
+            <span class="k">while</span> <span class="n">papers_in_current_volume</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">paper_nr</span><span class="o">=</span><span class="n">paper_nr</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
                 <span class="n">paper_nr</span> <span class="o">+=</span> <span class="mi">1</span>
                 <span class="k">if</span> <span class="n">paper_nr</span> <span class="o">&gt;</span> <span class="mi">999</span><span class="p">:</span>
                     <span class="k">raise</span> <span class="n">PaperNumberingError</span><span class="p">(</span><span class="n">paper_nr</span><span class="p">)</span>
@@ -422,7 +427,7 @@
             <span class="n">publication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
             <span class="c1"># Move file to final location</span>
             <span class="n">initial_path</span> <span class="o">=</span> <span class="n">publication</span><span class="o">.</span><span class="n">pdf_file</span><span class="o">.</span><span class="n">path</span>
-            <span class="n">new_dir</span> <span class="o">=</span>  <span class="p">(</span><span class="n">publication</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">path</span>
+            <span class="n">new_dir</span> <span class="o">=</span>  <span class="p">(</span><span class="n">publication</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">path</span> <span class="o">+</span> <span class="s1">&#39;/&#39;</span>
                         <span class="o">+</span> <span class="n">paper_nr_string</span><span class="p">(</span><span class="n">publication</span><span class="o">.</span><span class="n">paper_nr</span><span class="p">))</span>
             <span class="n">new_path</span> <span class="o">=</span> <span class="n">new_dir</span> <span class="o">+</span> <span class="s1">&#39;/&#39;</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_label</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="s1">&#39;_&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;.pdf&#39;</span>
             <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">new_dir</span><span class="p">)</span>
diff --git a/docs/_build/html/_modules/scipost/models.html b/docs/_build/html/_modules/scipost/models.html
index 8b24fabcf8242ceebcc02bbdead3fc2f36e2dc53..6d747a991eac9d70664ee70c447c2e249a2c281b 100644
--- a/docs/_build/html/_modules/scipost/models.html
+++ b/docs/_build/html/_modules/scipost/models.html
@@ -84,8 +84,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
@@ -143,7 +145,7 @@
 
 <span class="kn">from</span> <span class="nn">django_countries.fields</span> <span class="k">import</span> <span class="n">CountryField</span>
 
-<span class="kn">from</span> <span class="nn">.models</span> <span class="k">import</span> <span class="o">*</span>
+<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="o">*</span>
 
 
 <span class="n">SCIPOST_DISCIPLINES</span> <span class="o">=</span> <span class="p">(</span>
@@ -261,7 +263,8 @@
      <span class="p">),</span>
 <span class="p">)</span>
 <span class="n">subject_areas_raw_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">)</span>
-<span class="c1"># We want a dict of the form {&#39;Phys:AT&#39;: &#39;Atomic...&#39;, ...}</span>
+
+<span class="c1"># Make dict of the form {&#39;Phys:AT&#39;: &#39;Atomic...&#39;, ...}</span>
 <span class="n">subject_areas_dict</span> <span class="o">=</span> <span class="p">{}</span>
 <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">subject_areas_raw_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
     <span class="n">subject_areas_dict</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="nb">dict</span><span class="p">(</span><span class="n">subject_areas_raw_dict</span><span class="p">[</span><span class="n">k</span><span class="p">]))</span>
@@ -325,8 +328,7 @@
     <span class="n">status</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">CONTRIBUTOR_STATUS</span><span class="p">)</span>
     <span class="n">title</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">TITLE_CHOICES</span><span class="p">)</span>
     <span class="n">discipline</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_DISCIPLINES</span><span class="p">,</span>
-                                  <span class="n">default</span><span class="o">=</span><span class="s1">&#39;physics&#39;</span><span class="p">,</span>
-                                  <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;Main discipline&#39;</span><span class="p">)</span>
+                                  <span class="n">default</span><span class="o">=</span><span class="s1">&#39;physics&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;Main discipline&#39;</span><span class="p">)</span>
     <span class="n">expertises</span> <span class="o">=</span> <span class="n">ChoiceArrayField</span><span class="p">(</span>
         <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">),</span>
         <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
@@ -345,36 +347,34 @@
         <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
         <span class="n">verbose_name</span><span class="o">=</span><span class="s2">&quot;I accept to receive SciPost emails&quot;</span><span class="p">)</span>
 
-    <span class="k">def</span> <span class="nf">__str__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">&#39;, &#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span>
 
+    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="s1">&#39;</span><span class="si">%s</span><span class="s1">, </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">)</span>
 
     <span class="k">def</span> <span class="nf">is_currently_available</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="n">unav_periods</span> <span class="o">=</span> <span class="n">UnavailabilityPeriod</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
-            <span class="n">contributor</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
-        <span class="n">available</span> <span class="o">=</span> <span class="kc">True</span>
+        <span class="n">unav_periods</span> <span class="o">=</span> <span class="n">UnavailabilityPeriod</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">contributor</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+
         <span class="n">today</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">today</span><span class="p">()</span>
         <span class="k">for</span> <span class="n">unav</span> <span class="ow">in</span> <span class="n">unav_periods</span><span class="p">:</span>
             <span class="k">if</span> <span class="n">unav</span><span class="o">.</span><span class="n">start</span> <span class="o">&lt;</span> <span class="n">today</span> <span class="ow">and</span> <span class="n">unav</span><span class="o">.</span><span class="n">end</span> <span class="o">&gt;</span> <span class="n">today</span><span class="p">:</span>
-                <span class="n">available</span> <span class="o">=</span> <span class="kc">False</span>
-        <span class="k">return</span> <span class="n">available</span>
-
+                <span class="k">return</span> <span class="kc">False</span>
+        <span class="k">return</span> <span class="kc">True</span>
 
-    <span class="k">def</span> <span class="nf">private_info_as_table</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">private_info_as_table</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
         <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span>
-<span class="s1">        &lt;table&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Title: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ title }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;First name: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ first_name }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Last name: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ last_name }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Email: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ email }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;ORCID id: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ orcid_id }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Country of employment: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;</span>
-<span class="s1">        &lt;td&gt;{{ country_of_employment }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Affiliation: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ affiliation }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Address: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ address }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Personal web page: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ personalwebpage }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Accept SciPost emails: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ accepts_SciPost_emails }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;/table&gt;</span>
+<span class="s1">            &lt;table&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Title: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ title }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;First name: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ first_name }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Last name: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ last_name }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Email: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ email }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;ORCID id: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ orcid_id }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Country of employment: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;</span>
+<span class="s1">            &lt;td&gt;{{ country_of_employment }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Affiliation: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ affiliation }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Address: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ address }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Personal web page: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ personalwebpage }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Accept SciPost emails: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ accepts_SciPost_emails }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;/table&gt;</span>
 <span class="s1">        &#39;&#39;&#39;</span><span class="p">)</span>
         <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span>
             <span class="s1">&#39;title&#39;</span><span class="p">:</span> <span class="n">title_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">],</span>
@@ -391,21 +391,20 @@
         <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span>
 
 
-<div class="viewcode-block" id="Contributor.public_info_as_table"><a class="viewcode-back" href="../../modules/models.html#scipost.models.Contributor.public_info_as_table">[docs]</a>    <span class="k">def</span> <span class="nf">public_info_as_table</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">        Prints out all publicly-accessible info as a table.</span>
-<span class="sd">        &quot;&quot;&quot;</span>
+<div class="viewcode-block" id="Contributor.public_info_as_table"><a class="viewcode-back" href="../../modules/models.html#scipost.models.Contributor.public_info_as_table">[docs]</a>    <span class="k">def</span> <span class="nf">public_info_as_table</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Prints out all publicly-accessible info as a table.&quot;&quot;&quot;</span>
+        
         <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span>
-<span class="s1">        &lt;table&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Title: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ title }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;First name: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ first_name }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Last name: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ last_name }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;ORCID id: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ orcid_id }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Country of employment: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;</span>
-<span class="s1">        &lt;td&gt;{{ country_of_employment }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Affiliation: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ affiliation }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;tr&gt;&lt;td&gt;Personal web page: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ personalwebpage }}&lt;/td&gt;&lt;/tr&gt;</span>
-<span class="s1">        &lt;/table&gt;</span>
+<span class="s1">            &lt;table&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Title: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ title }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;First name: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ first_name }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Last name: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ last_name }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;ORCID id: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ orcid_id }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Country of employment: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;</span>
+<span class="s1">            &lt;td&gt;{{ country_of_employment }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Affiliation: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ affiliation }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;tr&gt;&lt;td&gt;Personal web page: &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;{{ personalwebpage }}&lt;/td&gt;&lt;/tr&gt;</span>
+<span class="s1">            &lt;/table&gt;</span>
 <span class="s1">        &#39;&#39;&#39;</span><span class="p">)</span>
         <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span>
                 <span class="s1">&#39;title&#39;</span><span class="p">:</span> <span class="n">title_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">],</span>
@@ -426,7 +425,7 @@
     <span class="k">def</span> <span class="nf">expertises_as_ul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
         <span class="n">output</span> <span class="o">=</span> <span class="s1">&#39;&lt;ul&gt;&#39;</span>
         <span class="k">for</span> <span class="n">exp</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expertises</span><span class="p">:</span>
-            <span class="n">output</span> <span class="o">+=</span> <span class="s1">&#39;&lt;li&gt;&#39;</span> <span class="o">+</span> <span class="n">subject_areas_dict</span><span class="p">[</span><span class="n">exp</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;&lt;/li&gt;&#39;</span>
+            <span class="n">output</span> <span class="o">+=</span> <span class="s1">&#39;&lt;li&gt;</span><span class="si">%s</span><span class="s1">&lt;/li&gt;&#39;</span> <span class="o">%</span> <span class="n">subject_areas_dict</span><span class="p">[</span><span class="n">exp</span><span class="p">]</span>
         <span class="n">output</span> <span class="o">+=</span> <span class="s1">&#39;&lt;/ul&gt;&#39;</span>
         <span class="k">return</span> <span class="n">mark_safe</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
 
@@ -521,6 +520,31 @@
     <span class="p">(</span><span class="s1">&#39;P&#39;</span><span class="p">,</span> <span class="s1">&#39;personal&#39;</span><span class="p">),</span>
     <span class="p">)</span>
 
+<div class="viewcode-block" id="DraftInvitation"><a class="viewcode-back" href="../../modules/models.html#scipost.models.DraftInvitation">[docs]</a><span class="k">class</span> <span class="nc">DraftInvitation</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Draft of an invitation, filled in by an officer.</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">title</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">TITLE_CHOICES</span><span class="p">)</span>
+    <span class="n">first_name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
+    <span class="n">last_name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
+    <span class="n">email</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">EmailField</span><span class="p">()</span>
+    <span class="n">invitation_type</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">INVITATION_TYPE</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">&#39;C&#39;</span><span class="p">)</span>
+    <span class="n">cited_in_submission</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s1">&#39;submissions.Submission&#39;</span><span class="p">,</span>
+                                            <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span>
+                                            <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+    <span class="n">cited_in_publication</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s1">&#39;journals.Publication&#39;</span><span class="p">,</span>
+                                             <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span>
+                                             <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+    <span class="n">drafted_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span>
+                                   <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span>
+                                   <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+    <span class="n">date_drafted</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span>
+    <span class="n">processed</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">__str__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">invitation_type</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span></div>
+
+
 <div class="viewcode-block" id="RegistrationInvitation"><a class="viewcode-back" href="../../modules/models.html#scipost.models.RegistrationInvitation">[docs]</a><span class="k">class</span> <span class="nc">RegistrationInvitation</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
     <span class="sd">&quot;&quot;&quot;</span>
 <span class="sd">    Invitation to particular persons for registration</span>
@@ -580,88 +604,6 @@
     <span class="n">status</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">AUTHORSHIP_CLAIM_STATUS</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span></div>
 
 
-
-<span class="c1">#######################</span>
-<span class="c1">### Assessments objects</span>
-<span class="c1">#######################</span>
-
-
-<span class="c1">### Assessments</span>
-
-<span class="c1">#ASSESSMENT_CHOICES = (</span>
-<span class="c1">#    (101, &#39;-&#39;), # Only values between 0 and 100 are kept, anything outside limits is discarded.</span>
-<span class="c1">#    (100, &#39;top&#39;), (80, &#39;high&#39;), (60, &#39;good&#39;), (40, &#39;ok&#39;), (20, &#39;low&#39;), (0, &#39;poor&#39;)</span>
-<span class="c1">#    )</span>
-
-<span class="c1">#class Assessment(models.Model):</span>
-<span class="c1">#    &quot;&quot;&quot;</span>
-<span class="c1">#    Base class for all assessments.</span>
-<span class="c1">#    &quot;&quot;&quot;</span>
-<span class="c1">#    rater = models.ForeignKey(Contributor, on_delete=models.CASCADE)</span>
-<span class="c1">#    submission = models.ForeignKey(&#39;submissions.Submission&#39;, on_delete=models.CASCADE, blank=True, null=True)</span>
-<span class="c1">#    comment = models.ForeignKey(&#39;comments.Comment&#39;, on_delete=models.CASCADE, blank=True, null=True)</span>
-<span class="c1">#    relevance = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span>
-<span class="c1">#    importance = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span>
-<span class="c1">#    clarity = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span>
-<span class="c1">#    validity = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span>
-<span class="c1">#    rigour = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span>
-<span class="c1">#    originality = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span>
-<span class="c1">#    significance = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span>
-
-
-<span class="c1">### Opinions</span>
-
-<span class="c1">#OPINION_CHOICES = (</span>
-<span class="c1">#    (&#39;ABS&#39;, &#39;-&#39;),</span>
-<span class="c1">#    (&#39;A&#39;, &#39;agree&#39;),</span>
-<span class="c1">#    (&#39;N&#39;, &#39;not sure&#39;),</span>
-<span class="c1">#    (&#39;D&#39;, &#39;disagree&#39;),</span>
-<span class="c1">#)</span>
-<span class="c1">#opinion_choices_dict = dict(OPINION_CHOICES)</span>
-
-<span class="c1">#class Opinion(models.Model):</span>
-<span class="c1">#    rater = models.ForeignKey(Contributor, on_delete=models.CASCADE)</span>
-<span class="c1">#    comment = models.ForeignKey(&#39;comments.Comment&#39;, on_delete=models.CASCADE)</span>
-<span class="c1">#    opinion = models.CharField(max_length=3, choices=OPINION_CHOICES, default=&#39;ABS&#39;)</span>
-
-
-<span class="c1">### AssessmentAggregates</span>
-
-<span class="c1">#class AssessmentAggregate(models.Model):</span>
-<span class="c1">#    &quot;&quot;&quot;</span>
-<span class="c1">#    Aggregated assessments for an object.</span>
-<span class="c1">#    &quot;&quot;&quot;</span>
-<span class="c1">#    nr = models.PositiveSmallIntegerField(default=0)</span>
-<span class="c1">#    nr_relevance_ratings = models.IntegerField(default=0)</span>
-<span class="c1">#    relevance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span>
-<span class="c1">#    nr_importance_ratings = models.IntegerField(default=0)</span>
-<span class="c1">#    importance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span>
-<span class="c1">#    nr_clarity_ratings = models.IntegerField(default=0)</span>
-<span class="c1">#    clarity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span>
-<span class="c1">#    nr_validity_ratings = models.IntegerField(default=0)</span>
-<span class="c1">#    validity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span>
-<span class="c1">#    nr_rigour_ratings = models.IntegerField(default=0)</span>
-<span class="c1">#    rigour_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span>
-<span class="c1">#    nr_originality_ratings = models.IntegerField(default=0)</span>
-<span class="c1">#    originality_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span>
-<span class="c1">#    nr_significance_ratings = models.IntegerField(default=0)</span>
-<span class="c1">#    significance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span>
-
-
-<span class="c1">##########</span>
-<span class="c1"># Emails #</span>
-<span class="c1">##########</span>
-
-<span class="c1"># class EmailedTo(models.Model):</span>
-<span class="c1">#     &quot;&quot;&quot;</span>
-<span class="c1">#     An email address used for emailing.</span>
-<span class="c1">#     An instance is created by a method as send_precooked_email</span>
-<span class="c1">#     if the chosen message hasn&#39;t been sent to this address before.</span>
-<span class="c1">#     Helps prevent multiple emailing with same message.</span>
-<span class="c1">#     &quot;&quot;&quot;</span>
-<span class="c1">#     email = models.EmailField()</span>
-
-
 <span class="n">SCIPOST_FROM_ADDRESSES</span> <span class="o">=</span> <span class="p">(</span>
     <span class="p">(</span><span class="s1">&#39;Admin&#39;</span><span class="p">,</span> <span class="s1">&#39;SciPost Admin &lt;admin@scipost.org&gt;&#39;</span><span class="p">),</span>
     <span class="p">(</span><span class="s1">&#39;J.-S. Caux&#39;</span><span class="p">,</span> <span class="s1">&#39;J.-S. Caux &lt;jscaux@scipost.org&gt;&#39;</span><span class="p">),</span>
@@ -680,7 +622,6 @@
     <span class="n">email_text</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span>
     <span class="n">email_text_html</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span>
     <span class="n">date_created</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span>
-    <span class="c1">#emailed_to = models.ManyToManyField(EmailedTo, blank=True)</span>
     <span class="n">emailed_to</span> <span class="o">=</span> <span class="n">ArrayField</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">EmailField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
     <span class="n">date_last_used</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span>
     <span class="n">deprecated</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
@@ -769,8 +710,7 @@
 
 
     <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39; (owner: &#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span>
-                <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="s1">&#39;</span><span class="si">%s</span><span class="s1"> (owner: </span><span class="si">%s</span><span class="s1"> </span><span class="si">%s</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">30</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span>
 
 
     <span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
@@ -839,7 +779,7 @@
 <span class="sd">    Team of Contributors, to enable private collaborations.</span>
 <span class="sd">    &quot;&quot;&quot;</span>
     <span class="n">leader</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span>
-    <span class="n">members</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;team_members&#39;</span><span class="p">)</span>
+    <span class="n">members</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;team_members&#39;</span><span class="p">)</span>
     <span class="n">name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span>
     <span class="n">established</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span>
 
@@ -888,8 +828,7 @@
 
 
     <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39; (owner: &#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span>
-                <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="s1">&#39;</span><span class="si">%s</span><span class="s1"> (owner: </span><span class="si">%s</span><span class="s1"> </span><span class="si">%s</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">30</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span>
 
     <span class="k">def</span> <span class="nf">header_as_li</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
         <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">&#39;id&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="s1">&#39;title&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span>
diff --git a/docs/_build/html/_modules/scipost/views.html b/docs/_build/html/_modules/scipost/views.html
index c193238b05712f53316097889d5da40acf5a7738..4cca70f90419dc3f3b005715ed618e5f35d0cf64 100644
--- a/docs/_build/html/_modules/scipost/views.html
+++ b/docs/_build/html/_modules/scipost/views.html
@@ -84,8 +84,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
@@ -141,7 +143,6 @@
 <span class="kn">from</span> <span class="nn">django.shortcuts</span> <span class="k">import</span> <span class="n">get_object_or_404</span><span class="p">,</span> <span class="n">render</span>
 <span class="kn">from</span> <span class="nn">django.contrib.auth</span> <span class="k">import</span> <span class="n">authenticate</span><span class="p">,</span> <span class="n">login</span><span class="p">,</span> <span class="n">logout</span>
 <span class="kn">from</span> <span class="nn">django.contrib.auth.decorators</span> <span class="k">import</span> <span class="n">login_required</span>
-<span class="c1">#from django.contrib.auth.decorators import permission_required   # Superseded by guardian</span>
 <span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">User</span><span class="p">,</span> <span class="n">Group</span><span class="p">,</span> <span class="n">Permission</span>
 <span class="kn">from</span> <span class="nn">django.contrib.auth.views</span> <span class="k">import</span> <span class="n">password_reset</span><span class="p">,</span> <span class="n">password_reset_confirm</span>
 <span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="k">import</span> <span class="n">MultipleObjectsReturned</span><span class="p">,</span> <span class="n">ObjectDoesNotExist</span><span class="p">,</span> <span class="n">PermissionDenied</span>
@@ -609,8 +610,109 @@
     <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;scipost/acknowledgement.html&#39;</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
 
 
+<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">&#39;scipost.can_draft_registration_invitations&#39;</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+<div class="viewcode-block" id="draft_registration_invitation"><a class="viewcode-back" href="../../modules/views.html#scipost.views.draft_registration_invitation">[docs]</a><span class="k">def</span> <span class="nf">draft_registration_invitation</span><span class="p">(</span><span class="n">request</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    For officers to prefill registration invitations.</span>
+<span class="sd">    This is similar to the registration_invitations method,</span>
+<span class="sd">    which is used to complete the invitation process.</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+    <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">&#39;POST&#39;</span><span class="p">:</span>
+        <span class="n">draft_inv_form</span> <span class="o">=</span> <span class="n">DraftInvitationForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span>
+        <span class="n">Utils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">&#39;contributor&#39;</span><span class="p">:</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> <span class="s1">&#39;form&#39;</span><span class="p">:</span> <span class="n">draft_inv_form</span><span class="p">})</span>
+        <span class="k">if</span> <span class="n">draft_inv_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span>
+            <span class="k">if</span> <span class="n">Utils</span><span class="o">.</span><span class="n">email_already_invited</span><span class="p">():</span>
+                <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;DUPLICATE ERROR: &#39;</span>
+                                <span class="s1">&#39;This email address has already been used for an invitation&#39;</span><span class="p">)</span>
+            <span class="k">elif</span> <span class="n">Utils</span><span class="o">.</span><span class="n">email_already_drafted</span><span class="p">():</span>
+                <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;DUPLICATE ERROR: &#39;</span>
+                                <span class="s1">&#39;This email address has already been used for a draft invitation&#39;</span><span class="p">)</span>
+            <span class="k">elif</span> <span class="n">Utils</span><span class="o">.</span><span class="n">email_already_taken</span><span class="p">():</span>
+                <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;DUPLICATE ERROR: &#39;</span>
+                                <span class="s1">&#39;This email address is already associated to a Contributor&#39;</span><span class="p">)</span>
+            <span class="k">elif</span> <span class="p">(</span><span class="n">draft_inv_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;invitation_type&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;F&#39;</span>
+                  <span class="ow">and</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">has_perm</span><span class="p">(</span><span class="s1">&#39;scipost.can_invite_Fellows&#39;</span><span class="p">)):</span>
+                <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;You do not have the authorization to send a Fellow-type &#39;</span>
+                                <span class="s1">&#39;invitation. Consider Contributor, or cited (sub/pub). &#39;</span><span class="p">)</span>
+            <span class="k">elif</span> <span class="p">(</span><span class="n">draft_inv_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;invitation_type&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;R&#39;</span><span class="p">):</span>
+                <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;Referee-type invitations must be made by the Editor-in-charge &#39;</span>
+                                <span class="s1">&#39;at the relevant Submission</span><span class="se">\&#39;</span><span class="s1">s Editorial Page. &#39;</span><span class="p">)</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="n">Utils</span><span class="o">.</span><span class="n">create_draft_invitation</span><span class="p">()</span>
+                <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;ack_header&#39;</span><span class="p">:</span> <span class="s1">&#39;Draft invitation saved.&#39;</span><span class="p">,</span>
+                           <span class="s1">&#39;followup_message&#39;</span><span class="p">:</span> <span class="s1">&#39;Return to the &#39;</span><span class="p">,</span>
+                           <span class="s1">&#39;followup_link&#39;</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">&#39;scipost:draft_registration_invitation&#39;</span><span class="p">),</span>
+                           <span class="s1">&#39;followup_link_label&#39;</span><span class="p">:</span> <span class="s1">&#39;drafting page&#39;</span><span class="p">}</span>
+                <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;scipost/acknowledgement.html&#39;</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">&#39;The form was not filled validly.&#39;</span>
+
+    <span class="k">else</span><span class="p">:</span>
+        <span class="n">draft_inv_form</span> <span class="o">=</span> <span class="n">DraftInvitationForm</span><span class="p">()</span>
+
+    <span class="n">sent_reg_inv</span> <span class="o">=</span> <span class="n">RegistrationInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">responded</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">declined</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+    <span class="n">sent_reg_inv_fellows</span> <span class="o">=</span> <span class="n">sent_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">&#39;F&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
+    <span class="n">nr_sent_reg_inv_fellows</span> <span class="o">=</span> <span class="n">sent_reg_inv_fellows</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+    <span class="n">sent_reg_inv_contrib</span> <span class="o">=</span> <span class="n">sent_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">&#39;C&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
+    <span class="n">nr_sent_reg_inv_contrib</span> <span class="o">=</span> <span class="n">sent_reg_inv_contrib</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+    <span class="n">sent_reg_inv_ref</span> <span class="o">=</span> <span class="n">sent_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">&#39;R&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
+    <span class="n">nr_sent_reg_inv_ref</span> <span class="o">=</span> <span class="n">sent_reg_inv_ref</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+    <span class="n">sent_reg_inv_cited_sub</span> <span class="o">=</span> <span class="n">sent_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">&#39;ci&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
+    <span class="n">nr_sent_reg_inv_cited_sub</span> <span class="o">=</span> <span class="n">sent_reg_inv_cited_sub</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+    <span class="n">sent_reg_inv_cited_pub</span> <span class="o">=</span> <span class="n">sent_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">&#39;cp&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
+    <span class="n">nr_sent_reg_inv_cited_pub</span> <span class="o">=</span> <span class="n">sent_reg_inv_cited_pub</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+
+    <span class="n">resp_reg_inv</span> <span class="o">=</span> <span class="n">RegistrationInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">responded</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">declined</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+    <span class="n">resp_reg_inv_fellows</span> <span class="o">=</span> <span class="n">resp_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">&#39;F&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
+    <span class="n">nr_resp_reg_inv_fellows</span> <span class="o">=</span> <span class="n">resp_reg_inv_fellows</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+    <span class="n">resp_reg_inv_contrib</span> <span class="o">=</span> <span class="n">resp_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">&#39;C&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
+    <span class="n">nr_resp_reg_inv_contrib</span> <span class="o">=</span> <span class="n">resp_reg_inv_contrib</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+    <span class="n">resp_reg_inv_ref</span> <span class="o">=</span> <span class="n">resp_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">&#39;R&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
+    <span class="n">nr_resp_reg_inv_ref</span> <span class="o">=</span> <span class="n">resp_reg_inv_ref</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+    <span class="n">resp_reg_inv_cited_sub</span> <span class="o">=</span> <span class="n">resp_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">&#39;ci&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
+    <span class="n">nr_resp_reg_inv_cited_sub</span> <span class="o">=</span> <span class="n">resp_reg_inv_cited_sub</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+    <span class="n">resp_reg_inv_cited_pub</span> <span class="o">=</span> <span class="n">resp_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">&#39;cp&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
+    <span class="n">nr_resp_reg_inv_cited_pub</span> <span class="o">=</span> <span class="n">resp_reg_inv_cited_pub</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+
+    <span class="n">decl_reg_inv</span> <span class="o">=</span> <span class="n">RegistrationInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
+        <span class="n">responded</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">declined</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
+
+    <span class="n">names_reg_contributors</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
+        <span class="n">status</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;user__last_name&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">values_list</span><span class="p">(</span>
+        <span class="s1">&#39;user__first_name&#39;</span><span class="p">,</span> <span class="s1">&#39;user__last_name&#39;</span><span class="p">)</span>
+    <span class="n">existing_drafts</span> <span class="o">=</span> <span class="n">DraftInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">processed</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
+
+    <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;draft_inv_form&#39;</span><span class="p">:</span> <span class="n">draft_inv_form</span><span class="p">,</span> <span class="s1">&#39;errormessage&#39;</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span>
+               <span class="s1">&#39;sent_reg_inv_fellows&#39;</span><span class="p">:</span> <span class="n">sent_reg_inv_fellows</span><span class="p">,</span>
+               <span class="s1">&#39;nr_sent_reg_inv_fellows&#39;</span><span class="p">:</span> <span class="n">nr_sent_reg_inv_fellows</span><span class="p">,</span>
+               <span class="s1">&#39;sent_reg_inv_contrib&#39;</span><span class="p">:</span> <span class="n">sent_reg_inv_contrib</span><span class="p">,</span>
+               <span class="s1">&#39;nr_sent_reg_inv_contrib&#39;</span><span class="p">:</span> <span class="n">nr_sent_reg_inv_contrib</span><span class="p">,</span>
+               <span class="s1">&#39;sent_reg_inv_ref&#39;</span><span class="p">:</span> <span class="n">sent_reg_inv_ref</span><span class="p">,</span>
+               <span class="s1">&#39;nr_sent_reg_inv_ref&#39;</span><span class="p">:</span> <span class="n">nr_sent_reg_inv_ref</span><span class="p">,</span>
+               <span class="s1">&#39;sent_reg_inv_cited_sub&#39;</span><span class="p">:</span> <span class="n">sent_reg_inv_cited_sub</span><span class="p">,</span>
+               <span class="s1">&#39;nr_sent_reg_inv_cited_sub&#39;</span><span class="p">:</span> <span class="n">nr_sent_reg_inv_cited_sub</span><span class="p">,</span>
+               <span class="s1">&#39;sent_reg_inv_cited_pub&#39;</span><span class="p">:</span> <span class="n">sent_reg_inv_cited_pub</span><span class="p">,</span>
+               <span class="s1">&#39;nr_sent_reg_inv_cited_pub&#39;</span><span class="p">:</span> <span class="n">nr_sent_reg_inv_cited_pub</span><span class="p">,</span>
+               <span class="s1">&#39;resp_reg_inv_fellows&#39;</span><span class="p">:</span> <span class="n">resp_reg_inv_fellows</span><span class="p">,</span>
+               <span class="s1">&#39;nr_resp_reg_inv_fellows&#39;</span><span class="p">:</span> <span class="n">nr_resp_reg_inv_fellows</span><span class="p">,</span>
+               <span class="s1">&#39;resp_reg_inv_contrib&#39;</span><span class="p">:</span> <span class="n">resp_reg_inv_contrib</span><span class="p">,</span>
+               <span class="s1">&#39;nr_resp_reg_inv_contrib&#39;</span><span class="p">:</span> <span class="n">nr_resp_reg_inv_contrib</span><span class="p">,</span>
+               <span class="s1">&#39;resp_reg_inv_ref&#39;</span><span class="p">:</span> <span class="n">resp_reg_inv_ref</span><span class="p">,</span>
+               <span class="s1">&#39;nr_resp_reg_inv_ref&#39;</span><span class="p">:</span> <span class="n">nr_resp_reg_inv_ref</span><span class="p">,</span>
+               <span class="s1">&#39;resp_reg_inv_cited_sub&#39;</span><span class="p">:</span> <span class="n">resp_reg_inv_cited_sub</span><span class="p">,</span>
+               <span class="s1">&#39;nr_resp_reg_inv_cited_sub&#39;</span><span class="p">:</span> <span class="n">nr_resp_reg_inv_cited_sub</span><span class="p">,</span>
+               <span class="s1">&#39;resp_reg_inv_cited_pub&#39;</span><span class="p">:</span> <span class="n">resp_reg_inv_cited_pub</span><span class="p">,</span>
+               <span class="s1">&#39;nr_resp_reg_inv_cited_pub&#39;</span><span class="p">:</span> <span class="n">nr_resp_reg_inv_cited_pub</span><span class="p">,</span>
+               <span class="s1">&#39;decl_reg_inv&#39;</span><span class="p">:</span> <span class="n">decl_reg_inv</span><span class="p">,</span>
+               <span class="s1">&#39;names_reg_contributors&#39;</span><span class="p">:</span> <span class="n">names_reg_contributors</span><span class="p">,</span>
+               <span class="s1">&#39;existing_drafts&#39;</span><span class="p">:</span> <span class="n">existing_drafts</span><span class="p">,</span>
+    <span class="p">}</span>
+    <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;scipost/draft_registration_invitation.html&#39;</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div>
+
+
 <span class="nd">@permission_required</span><span class="p">(</span><span class="s1">&#39;scipost.can_manage_registration_invitations&#39;</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-<div class="viewcode-block" id="registration_invitations"><a class="viewcode-back" href="../../modules/views.html#scipost.views.registration_invitations">[docs]</a><span class="k">def</span> <span class="nf">registration_invitations</span><span class="p">(</span><span class="n">request</span><span class="p">):</span>
+<div class="viewcode-block" id="registration_invitations"><a class="viewcode-back" href="../../modules/views.html#scipost.views.registration_invitations">[docs]</a><span class="k">def</span> <span class="nf">registration_invitations</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">draft_id</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
     <span class="sd">&quot;&quot;&quot; Overview and tools for administrators &quot;&quot;&quot;</span>
     <span class="c1"># List invitations sent; send new ones</span>
     <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
@@ -635,12 +737,35 @@
             <span class="k">else</span><span class="p">:</span>
                 <span class="n">Utils</span><span class="o">.</span><span class="n">create_invitation</span><span class="p">()</span>
                 <span class="n">Utils</span><span class="o">.</span><span class="n">send_registration_invitation_email</span><span class="p">()</span>
+                <span class="k">try</span><span class="p">:</span>
+                    <span class="n">draft</span> <span class="o">=</span> <span class="n">DraftInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+                        <span class="n">email</span><span class="o">=</span><span class="n">reg_inv_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;email&#39;</span><span class="p">])</span>
+                    <span class="n">draft</span><span class="o">.</span><span class="n">processed</span> <span class="o">=</span> <span class="kc">True</span>
+                    <span class="n">draft</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
+                <span class="k">except</span> <span class="n">ObjectDoesNotExist</span><span class="p">:</span>
+                    <span class="k">pass</span>
+                <span class="k">except</span> <span class="n">MultipleObjectsReturned</span><span class="p">:</span>
+                    <span class="c1"># Delete the first invitation</span>
+                    <span class="n">draft_to_delete</span> <span class="o">=</span> <span class="n">RegistrationInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
+                        <span class="n">email</span><span class="o">=</span><span class="n">reg_inv_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">&#39;email&#39;</span><span class="p">])</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
+                    <span class="n">draft_to_delete</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
                 <span class="k">return</span> <span class="n">HttpResponseRedirect</span><span class="p">(</span><span class="s1">&#39;registration_invitation_sent&#39;</span><span class="p">)</span>
         <span class="k">else</span><span class="p">:</span>
             <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">&#39;The form was not filled validly.&#39;</span>
 
     <span class="k">else</span><span class="p">:</span>
-        <span class="n">reg_inv_form</span> <span class="o">=</span> <span class="n">RegistrationInvitationForm</span><span class="p">()</span>
+        <span class="n">initial</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="k">if</span> <span class="n">draft_id</span><span class="p">:</span>
+            <span class="n">draft</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">DraftInvitation</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">draft_id</span><span class="p">)</span>
+            <span class="n">initial</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;title&#39;</span><span class="p">:</span> <span class="n">draft</span><span class="o">.</span><span class="n">title</span><span class="p">,</span>
+                       <span class="s1">&#39;first_name&#39;</span><span class="p">:</span> <span class="n">draft</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span>
+                       <span class="s1">&#39;last_name&#39;</span><span class="p">:</span> <span class="n">draft</span><span class="o">.</span><span class="n">last_name</span><span class="p">,</span>
+                       <span class="s1">&#39;email&#39;</span><span class="p">:</span> <span class="n">draft</span><span class="o">.</span><span class="n">email</span><span class="p">,</span>
+                       <span class="s1">&#39;invitation_type&#39;</span><span class="p">:</span> <span class="n">draft</span><span class="o">.</span><span class="n">invitation_type</span><span class="p">,</span>
+                       <span class="s1">&#39;cited_in_submission&#39;</span><span class="p">:</span> <span class="n">draft</span><span class="o">.</span><span class="n">cited_in_submission</span><span class="p">,</span>
+                       <span class="s1">&#39;cited_in_publication&#39;</span><span class="p">:</span> <span class="n">draft</span><span class="o">.</span><span class="n">cited_in_publication</span><span class="p">,</span>
+                   <span class="p">}</span>
+        <span class="n">reg_inv_form</span> <span class="o">=</span> <span class="n">RegistrationInvitationForm</span><span class="p">(</span><span class="n">initial</span><span class="o">=</span><span class="n">initial</span><span class="p">)</span>
 
     <span class="n">sent_reg_inv</span> <span class="o">=</span> <span class="n">RegistrationInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">responded</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">declined</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
     <span class="n">sent_reg_inv_fellows</span> <span class="o">=</span> <span class="n">sent_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">&#39;F&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
@@ -671,6 +796,7 @@
     <span class="n">names_reg_contributors</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
         <span class="n">status</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;user__last_name&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">values_list</span><span class="p">(</span>
         <span class="s1">&#39;user__first_name&#39;</span><span class="p">,</span> <span class="s1">&#39;user__last_name&#39;</span><span class="p">)</span>
+    <span class="n">existing_drafts</span> <span class="o">=</span> <span class="n">DraftInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">processed</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">)</span>
 
     <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;reg_inv_form&#39;</span><span class="p">:</span> <span class="n">reg_inv_form</span><span class="p">,</span> <span class="s1">&#39;errormessage&#39;</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span>
                <span class="s1">&#39;sent_reg_inv_fellows&#39;</span><span class="p">:</span> <span class="n">sent_reg_inv_fellows</span><span class="p">,</span>
@@ -695,6 +821,7 @@
                <span class="s1">&#39;nr_resp_reg_inv_cited_pub&#39;</span><span class="p">:</span> <span class="n">nr_resp_reg_inv_cited_pub</span><span class="p">,</span>
                <span class="s1">&#39;decl_reg_inv&#39;</span><span class="p">:</span> <span class="n">decl_reg_inv</span><span class="p">,</span>
                <span class="s1">&#39;names_reg_contributors&#39;</span><span class="p">:</span> <span class="n">names_reg_contributors</span><span class="p">,</span>
+               <span class="s1">&#39;existing_drafts&#39;</span><span class="p">:</span> <span class="n">existing_drafts</span><span class="p">,</span>
     <span class="p">}</span>
     <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;scipost/registration_invitations.html&#39;</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div>
 
diff --git a/docs/_build/html/_modules/submissions/models.html b/docs/_build/html/_modules/submissions/models.html
index a2ff681c22d9f599d7e8de22e5840d6238dc0f61..cc807b16363c484f8ad273bf2fc2c67d01b938ed 100644
--- a/docs/_build/html/_modules/submissions/models.html
+++ b/docs/_build/html/_modules/submissions/models.html
@@ -84,8 +84,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
@@ -141,8 +143,10 @@
 <span class="kn">from</span> <span class="nn">.models</span> <span class="k">import</span> <span class="o">*</span>
 
 <span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">ChoiceArrayField</span><span class="p">,</span> <span class="n">Contributor</span><span class="p">,</span> <span class="n">title_dict</span><span class="p">,</span> <span class="n">Remark</span>
-<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">SCIPOST_DISCIPLINES</span><span class="p">,</span> <span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">,</span> <span class="n">subject_areas_dict</span><span class="p">,</span> <span class="n">TITLE_CHOICES</span>
-<span class="kn">from</span> <span class="nn">journals.models</span> <span class="k">import</span> <span class="n">SCIPOST_JOURNALS_SUBMIT</span><span class="p">,</span> <span class="n">SCIPOST_JOURNALS_DOMAINS</span><span class="p">,</span> <span class="n">SCIPOST_JOURNALS_SPECIALIZATIONS</span>
+<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">SCIPOST_DISCIPLINES</span><span class="p">,</span> <span class="n">SCIPOST_SUBJECT_AREAS</span>
+<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">subject_areas_dict</span><span class="p">,</span> <span class="n">TITLE_CHOICES</span>
+<span class="kn">from</span> <span class="nn">journals.models</span> <span class="k">import</span> <span class="n">SCIPOST_JOURNALS_SUBMIT</span><span class="p">,</span> <span class="n">SCIPOST_JOURNALS_DOMAINS</span>
+<span class="kn">from</span> <span class="nn">journals.models</span> <span class="k">import</span> <span class="n">SCIPOST_JOURNALS_SPECIALIZATIONS</span>
 <span class="kn">from</span> <span class="nn">journals.models</span> <span class="k">import</span> <span class="n">journals_submit_dict</span><span class="p">,</span> <span class="n">journals_domains_dict</span><span class="p">,</span> <span class="n">journals_spec_dict</span>
 <span class="kn">from</span> <span class="nn">journals.models</span> <span class="k">import</span> <span class="n">Publication</span>
 
@@ -159,6 +163,9 @@
     <span class="c1"># If revisions required: resubmission creates a new Submission object</span>
     <span class="p">(</span><span class="s1">&#39;revision_requested&#39;</span><span class="p">,</span> <span class="s1">&#39;Editor-in-charge has requested revision&#39;</span><span class="p">),</span>
     <span class="p">(</span><span class="s1">&#39;resubmitted&#39;</span><span class="p">,</span> <span class="s1">&#39;Has been resubmitted&#39;</span><span class="p">),</span>
+    <span class="p">(</span><span class="s1">&#39;resubmitted_and_rejected&#39;</span><span class="p">,</span> <span class="s1">&#39;Has been resubmitted and subsequently rejected&#39;</span><span class="p">),</span>
+    <span class="p">(</span><span class="s1">&#39;resubmitted_and_rejected_visible&#39;</span><span class="p">,</span>
+     <span class="s1">&#39;Has been resubmitted and subsequently rejected (still publicly visible)&#39;</span><span class="p">),</span>
     <span class="c1"># If acceptance/rejection:</span>
     <span class="p">(</span><span class="s1">&#39;voting_in_preparation&#39;</span><span class="p">,</span> <span class="s1">&#39;Voting in preparation (eligible Fellows being selected)&#39;</span><span class="p">),</span>
     <span class="p">(</span><span class="s1">&#39;put_to_EC_voting&#39;</span><span class="p">,</span> <span class="s1">&#39;Undergoing voting at the Editorial College&#39;</span><span class="p">),</span>
@@ -179,22 +186,37 @@
     <span class="s1">&#39;withdrawn&#39;</span><span class="p">,</span>
 <span class="p">]</span>
 
+<span class="c1"># Submissions which should not appear in search lists</span>
 <span class="n">SUBMISSION_STATUS_PUBLICLY_UNLISTED</span> <span class="o">=</span> <span class="p">[</span>
     <span class="s1">&#39;unassigned&#39;</span><span class="p">,</span>
     <span class="s1">&#39;assignment_failed&#39;</span><span class="p">,</span>
     <span class="s1">&#39;resubmitted&#39;</span><span class="p">,</span>
+    <span class="s1">&#39;resubmitted_rejected&#39;</span><span class="p">,</span>
+    <span class="s1">&#39;resubmitted_rejected_visible&#39;</span><span class="p">,</span>
     <span class="s1">&#39;rejected&#39;</span><span class="p">,</span>
     <span class="s1">&#39;published&#39;</span><span class="p">,</span>
     <span class="s1">&#39;withdrawn&#39;</span><span class="p">,</span>
 <span class="p">]</span>
 
+<span class="c1"># Submissions which should not be viewable (except by admins, Fellows and authors)</span>
+<span class="n">SUBMISSION_STATUS_PUBLICLY_INVISIBLE</span> <span class="o">=</span> <span class="p">[</span>
+    <span class="s1">&#39;unassigned&#39;</span><span class="p">,</span>
+    <span class="s1">&#39;assignment_failed&#39;</span><span class="p">,</span>
+    <span class="s1">&#39;resubmitted_rejected&#39;</span><span class="p">,</span>
+    <span class="s1">&#39;rejected&#39;</span><span class="p">,</span>
+    <span class="s1">&#39;published&#39;</span><span class="p">,</span>
+    <span class="s1">&#39;withdrawn&#39;</span><span class="p">,</span>
+<span class="p">]</span>
+
+
 <span class="c1"># SUBMISSION_ACTION_REQUIRED = (</span>
 <span class="c1">#     (&#39;assign_EIC&#39;, &#39;Editor-in-charge to be assigned&#39;),</span>
 <span class="c1"># #    (&#39;Fellow_accepts_or_refuse_assignment&#39;, &#39;Fellow must accept or refuse assignment&#39;),</span>
 <span class="c1">#     (&#39;EIC_runs_refereeing_round&#39;, &#39;Editor-in-charge to run refereeing round (inviting referees)&#39;),</span>
 <span class="c1">#     (&#39;EIC_closes_refereeing_round&#39;, &#39;Editor-in-charge to close refereeing round&#39;),</span>
 <span class="c1">#     (&#39;EIC_invites_author_response&#39;, &#39;Editor-in-charge invites authors to complete their replies&#39;),</span>
-<span class="c1">#     (&#39;EIC_formulates_editorial_recommendation&#39;, &#39;Editor-in-charge to formulate editorial recommendation&#39;),</span>
+<span class="c1">#     (&#39;EIC_formulates_editorial_recommendation&#39;,</span>
+<span class="c1">#      &#39;Editor-in-charge to formulate editorial recommendation&#39;),</span>
 <span class="c1">#     (&#39;EC_ratification&#39;, &#39;Editorial College ratifies editorial recommendation&#39;),</span>
 <span class="c1">#     (&#39;Decision_to_authors&#39;, &#39;Editor-in-charge forwards decision to authors&#39;),</span>
 <span class="c1">#     )</span>
@@ -222,8 +244,9 @@
 <span class="c1">#    specialization = models.CharField(max_length=1, choices=SCIPOST_JOURNALS_SPECIALIZATIONS)</span>
     <span class="n">subject_area</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">,</span>
                                     <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;Primary subject area&#39;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">&#39;Phys:QP&#39;</span><span class="p">)</span>
-    <span class="n">secondary_areas</span> <span class="o">=</span> <span class="n">ChoiceArrayField</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">),</span>
-                                       <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+    <span class="n">secondary_areas</span> <span class="o">=</span> <span class="n">ChoiceArrayField</span><span class="p">(</span>
+        <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">),</span>
+        <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
     <span class="n">status</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SUBMISSION_STATUS</span><span class="p">)</span> <span class="c1"># set by Editors</span>
     <span class="n">author_comments</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
     <span class="n">list_of_changes</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
@@ -372,14 +395,17 @@
         <span class="n">nr_ref_invited</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
         <span class="n">nr_ref_accepted</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">accepted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
         <span class="n">nr_ref_declined</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">accepted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
-        <span class="n">nr_invited_reports_in</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">invited</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
-        <span class="n">nr_contrib_reports_in</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">invited</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+        <span class="n">nr_invited_reports_in</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span>
+                                                      <span class="n">status</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">invited</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+        <span class="n">nr_contrib_reports_in</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span>
+                                                      <span class="n">status</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">invited</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
         <span class="n">nr_reports_awaiting_vetting</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
         <span class="n">nr_reports_refused</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">status__lte</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
         <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;&lt;p&gt;Nr referees invited: &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr_ref_invited</span><span class="p">)</span> <span class="o">+</span>
                   <span class="s1">&#39; [&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr_ref_accepted</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39; accepted/ &#39;</span> <span class="o">+</span>
                   <span class="nb">str</span><span class="p">(</span><span class="n">nr_ref_declined</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39; declined/ &#39;</span> <span class="o">+</span>
-                  <span class="nb">str</span><span class="p">(</span><span class="n">nr_ref_invited</span> <span class="o">-</span> <span class="n">nr_ref_accepted</span> <span class="o">-</span> <span class="n">nr_ref_declined</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39; response pending]&lt;/p&gt;&#39;</span> <span class="o">+</span>
+                  <span class="nb">str</span><span class="p">(</span><span class="n">nr_ref_invited</span> <span class="o">-</span> <span class="n">nr_ref_accepted</span> <span class="o">-</span> <span class="n">nr_ref_declined</span><span class="p">)</span> <span class="o">+</span>
+                  <span class="s1">&#39; response pending]&lt;/p&gt;&#39;</span> <span class="o">+</span>
                   <span class="s1">&#39;&lt;p&gt;Nr reports obtained: &#39;</span> <span class="o">+</span>
                   <span class="nb">str</span><span class="p">(</span><span class="n">nr_invited_reports_in</span> <span class="o">+</span> <span class="n">nr_contrib_reports_in</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39; [&#39;</span> <span class="o">+</span>
                   <span class="nb">str</span><span class="p">(</span><span class="n">nr_invited_reports_in</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39; invited/ &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr_contrib_reports_in</span><span class="p">)</span> <span class="o">+</span>
@@ -408,7 +434,8 @@
         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">==</span> <span class="s1">&#39;unassigned&#39;</span><span class="p">:</span>
             <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">&#39;&lt;p style=&quot;color: red&quot;&gt;Status: {{ status }}.&#39;</span>
                        <span class="s1">&#39; You can volunteer to become Editor-in-charge by &#39;</span>
-                       <span class="s1">&#39;&lt;a href=&quot;/submissions/volunteer_as_EIC/{{ arxiv_identifier_w_vn_nr }}&quot;&gt;clicking here&lt;/a&gt;.&lt;/p&gt;&#39;</span><span class="p">)</span>
+                       <span class="s1">&#39;&lt;a href=&quot;/submissions/volunteer_as_EIC/{{ arxiv_identifier_w_vn_nr }}&quot;&gt;&#39;</span>
+                       <span class="s1">&#39;clicking here&lt;/a&gt;.&lt;/p&gt;&#39;</span><span class="p">)</span>
         <span class="k">else</span><span class="p">:</span>
             <span class="n">header</span> <span class="o">+=</span> <span class="s1">&#39;&lt;p&gt;Editor-in-charge: {{ EIC }}&lt;/p&gt;&lt;p&gt;Status: {{ status }}&lt;/p&gt;&#39;</span>
         <span class="n">header</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">refereeing_status_as_p</span><span class="p">()</span>
@@ -556,7 +583,8 @@
                   <span class="s1">&#39;&lt;p&gt;by {{ author_list }}&lt;/p&gt;&#39;</span>
                   <span class="s1">&#39;&lt;p&gt; (submitted {{ date }} to {{ to_journal }})&lt;/p&gt;&#39;</span>
                   <span class="s1">&#39;&lt;p&gt;Status: {{ status }}&lt;/p&gt;&lt;p&gt;Manage this Submission from its &#39;</span>
-                  <span class="s1">&#39;&lt;a href=&quot;/submissions/editorial_page/{{ arxiv_identifier_w_vn_nr }}&quot;&gt;Editorial Page&lt;/a&gt;.&#39;</span>
+                  <span class="s1">&#39;&lt;a href=&quot;/submissions/editorial_page/{{ arxiv_identifier_w_vn_nr }}&quot;&gt;&#39;</span>
+                  <span class="s1">&#39;Editorial Page&lt;/a&gt;.&#39;</span>
                   <span class="s1">&#39;&lt;/p&gt;&#39;</span>
                   <span class="c1">#&#39;&lt;/div&gt;&lt;/div&gt;&#39;</span>
                   <span class="s1">&#39;&lt;/li&gt;&#39;</span><span class="p">)</span>
@@ -640,7 +668,8 @@
     <span class="k">def</span> <span class="nf">summary_as_tds</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
         <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">&#39;first_name&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> <span class="s1">&#39;last_name&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_name</span><span class="p">,</span>
                            <span class="s1">&#39;date_invited&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_invited</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">&#39;%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M&#39;</span><span class="p">)})</span>
-        <span class="n">output</span> <span class="o">=</span> <span class="s1">&#39;&lt;td&gt;{{ first_name }} {{ last_name }}&lt;/td&gt;&lt;td&gt;invited &lt;br/&gt;{{ date_invited }}&lt;/td&gt;&lt;td&gt;&#39;</span>
+        <span class="n">output</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;&lt;td&gt;{{ first_name }} {{ last_name }}&lt;/td&gt;&lt;td&gt;invited &lt;br/&gt;&#39;</span>
+                  <span class="s1">&#39;{{ date_invited }}&lt;/td&gt;&lt;td&gt;&#39;</span><span class="p">)</span>
         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cancelled</span><span class="p">:</span>
             <span class="n">output</span> <span class="o">+=</span> <span class="s1">&#39;&lt;strong style=&quot;color: red;&quot;&gt;cancelled&lt;/strong&gt;&#39;</span>
         <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">accepted</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
@@ -719,8 +748,9 @@
     <span class="n">flagged</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
     <span class="n">date_submitted</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="s1">&#39;date submitted&#39;</span><span class="p">)</span>
     <span class="n">author</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span>
-    <span class="n">qualification</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">REFEREE_QUALIFICATION</span><span class="p">,</span>
-                                                     <span class="n">verbose_name</span><span class="o">=</span><span class="s2">&quot;Qualification to referee this: I am &quot;</span><span class="p">)</span>
+    <span class="n">qualification</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span>
+        <span class="n">choices</span><span class="o">=</span><span class="n">REFEREE_QUALIFICATION</span><span class="p">,</span>
+        <span class="n">verbose_name</span><span class="o">=</span><span class="s2">&quot;Qualification to referee this: I am &quot;</span><span class="p">)</span>
     <span class="c1"># Text-based reporting</span>
     <span class="n">strengths</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span>
     <span class="n">weaknesses</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span>
@@ -731,8 +761,10 @@
     <span class="n">significance</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">RANKING_CHOICES</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">101</span><span class="p">)</span>
     <span class="n">originality</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">RANKING_CHOICES</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">101</span><span class="p">)</span>
     <span class="n">clarity</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">RANKING_CHOICES</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">101</span><span class="p">)</span>
-    <span class="n">formatting</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">QUALITY_SPEC</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s2">&quot;Quality of paper formatting&quot;</span><span class="p">)</span>
-    <span class="n">grammar</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">QUALITY_SPEC</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s2">&quot;Quality of English grammar&quot;</span><span class="p">)</span>
+    <span class="n">formatting</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">QUALITY_SPEC</span><span class="p">,</span>
+                                          <span class="n">verbose_name</span><span class="o">=</span><span class="s2">&quot;Quality of paper formatting&quot;</span><span class="p">)</span>
+    <span class="n">grammar</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">QUALITY_SPEC</span><span class="p">,</span>
+                                       <span class="n">verbose_name</span><span class="o">=</span><span class="s2">&quot;Quality of English grammar&quot;</span><span class="p">)</span>
     <span class="c1">#</span>
     <span class="n">recommendation</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">REPORT_REC</span><span class="p">)</span>
     <span class="n">remarks_for_editors</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
@@ -861,7 +893,8 @@
         <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">comtype</span> <span class="o">==</span> <span class="s1">&#39;RtoE&#39;</span><span class="p">:</span>
             <span class="n">output</span> <span class="o">+=</span> <span class="s1">&#39;From Referee &#39;</span>
             <span class="k">try</span><span class="p">:</span>
-                <span class="n">output</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">referee</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">referee</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">&#39; to you&#39;</span>
+                <span class="n">output</span> <span class="o">+=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">referee</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span>
+                           <span class="bp">self</span><span class="o">.</span><span class="n">referee</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">&#39; to you&#39;</span><span class="p">)</span>
             <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
                 <span class="k">pass</span>
         <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">comtype</span> <span class="o">==</span> <span class="s1">&#39;StoE&#39;</span><span class="p">:</span>
@@ -887,7 +920,8 @@
         <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;optional remarks for the Editorial College&#39;</span><span class="p">)</span>
     <span class="n">recommendation</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">REPORT_REC</span><span class="p">)</span>
     <span class="c1"># Editorial Fellows who have assessed this recommendation:</span>
-    <span class="n">eligible_to_vote</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;eligible_to_vote&#39;</span><span class="p">)</span>
+    <span class="n">eligible_to_vote</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+                                               <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;eligible_to_vote&#39;</span><span class="p">)</span>
     <span class="n">voted_for</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;voted_for&#39;</span><span class="p">)</span>
     <span class="n">voted_against</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;voted_against&#39;</span><span class="p">)</span>
     <span class="n">voted_abstain</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;voted_abstain&#39;</span><span class="p">)</span>
diff --git a/docs/_build/html/_modules/submissions/views.html b/docs/_build/html/_modules/submissions/views.html
index 2228df5a9ff1221bb9e543f2029933bde7d6cc52..6e7dc05b44c743742ea38e10f07a793f9471c45f 100644
--- a/docs/_build/html/_modules/submissions/views.html
+++ b/docs/_build/html/_modules/submissions/views.html
@@ -84,8 +84,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
@@ -140,6 +142,7 @@
 <span class="kn">from</span> <span class="nn">django.contrib.auth</span> <span class="k">import</span> <span class="n">authenticate</span><span class="p">,</span> <span class="n">login</span><span class="p">,</span> <span class="n">logout</span>
 <span class="kn">from</span> <span class="nn">django.contrib.auth.decorators</span> <span class="k">import</span> <span class="n">login_required</span><span class="p">,</span> <span class="n">permission_required</span>
 <span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">User</span><span class="p">,</span> <span class="n">Group</span><span class="p">,</span> <span class="n">Permission</span>
+<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="k">import</span> <span class="n">PermissionDenied</span>
 <span class="kn">from</span> <span class="nn">django.core.mail</span> <span class="k">import</span> <span class="n">EmailMessage</span>
 <span class="kn">from</span> <span class="nn">django.core.urlresolvers</span> <span class="k">import</span> <span class="n">reverse</span>
 <span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">transaction</span>
@@ -200,6 +203,13 @@
             <span class="n">previous_submissions</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
                 <span class="n">arxiv_identifier_wo_vn_nr</span><span class="o">=</span><span class="n">identifier_without_vn_nr</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;-arxiv_vn_nr&#39;</span><span class="p">)</span>
             <span class="k">if</span> <span class="n">previous_submissions</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+                <span class="k">if</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">status</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;rejected&#39;</span><span class="p">,</span> <span class="s1">&#39;rejected_visible&#39;</span><span class="p">,]:</span>
+                    <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;&lt;p&gt;This arXiv preprint has previously undergone refereeing &#39;</span>
+                                    <span class="s1">&#39;and has been rejected. Resubmission is only possible &#39;</span>
+                                    <span class="s1">&#39;if the manuscript has been substantially reworked into &#39;</span>
+                                    <span class="s1">&#39;a new arXiv submission with distinct identifier.&lt;/p&gt;&#39;</span><span class="p">)</span>
+                    <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">&#39;scipost/error.html&#39;</span><span class="p">,</span>
+                                  <span class="p">{</span><span class="s1">&#39;errormessage&#39;</span><span class="p">:</span> <span class="n">mark_safe</span><span class="p">(</span><span class="n">errormessage</span><span class="p">)})</span>
                 <span class="c1"># If the Editorial Recommendation hasn&#39;t been formulated, ask to wait</span>
                 <span class="k">if</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">status</span> <span class="o">!=</span> <span class="s1">&#39;revision_requested&#39;</span><span class="p">:</span>
                     <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;&lt;p&gt;There exists a preprint with this arXiv identifier &#39;</span>
@@ -476,6 +486,17 @@
 
 <span class="k">def</span> <span class="nf">submission_detail</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span>
     <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span>
+    <span class="k">try</span><span class="p">:</span>
+        <span class="n">is_author</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span> <span class="ow">in</span> <span class="n">submission</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
+    <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
+        <span class="n">is_author</span> <span class="o">=</span> <span class="kc">False</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="ow">in</span> <span class="n">SUBMISSION_STATUS_PUBLICLY_INVISIBLE</span>
+        <span class="ow">and</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;SciPost Administrators&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span>
+        <span class="ow">and</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;Editorial Administrators&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span>
+        <span class="ow">and</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;Editorial College&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span>
+        <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_author</span>
+    <span class="p">):</span>
+        <span class="k">raise</span> <span class="n">PermissionDenied</span>
     <span class="n">other_versions</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
         <span class="n">arxiv_identifier_wo_vn_nr</span><span class="o">=</span><span class="n">submission</span><span class="o">.</span><span class="n">arxiv_identifier_wo_vn_nr</span>
     <span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">submission</span><span class="o">.</span><span class="n">id</span><span class="p">)</span>
@@ -1393,6 +1414,12 @@
     <span class="k">elif</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">recommendation</span><span class="o">==-</span><span class="mi">3</span><span class="p">:</span>
         <span class="c1"># Reject</span>
         <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span><span class="o">=</span><span class="s1">&#39;rejected&#39;</span>
+        <span class="n">previous_submissions</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
+            <span class="n">arxiv_identifier_wo_vn_nr</span><span class="o">=</span><span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">arxiv_identifier_wo_vn_nr</span>
+        <span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">id</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">sub</span> <span class="ow">in</span> <span class="n">previous_submissions</span><span class="p">:</span>
+            <span class="n">sub</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">&#39;resubmitted_rejected&#39;</span>
+            <span class="n">sub</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
 
     <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
     <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">&#39;submission&#39;</span><span class="p">:</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="p">,</span>
diff --git a/docs/_build/html/_modules/theses/models.html b/docs/_build/html/_modules/theses/models.html
index c63914aa817c7497f3248c147d92abccde79a193..343bf2461dfa9c725a41d25a37506cedf2b997a1 100644
--- a/docs/_build/html/_modules/theses/models.html
+++ b/docs/_build/html/_modules/theses/models.html
@@ -84,8 +84,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html
index 5976ed7ecd27699d44cb180c171db2994e85d846..03085596e5ba0c7d5c936ba55a7f6dd2d2068c1e 100644
--- a/docs/_build/html/genindex.html
+++ b/docs/_build/html/genindex.html
@@ -84,8 +84,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
@@ -282,12 +284,12 @@
   <dt><a href="modules/models.html#scipost.models.NewsItem.descriptor_full">descriptor_full() (scipost.models.NewsItem method)</a>
   </dt>
 
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="modules/models.html#scipost.models.NewsItem.descriptor_small">descriptor_small() (scipost.models.NewsItem method)</a>
   </dt>
 
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="modules/models.html#journals.models.Publication.details">details() (journals.models.Publication method)</a>
   </dt>
@@ -296,6 +298,14 @@
   <dt><a href="modules/views.html#scipost.views.documentsSearchResults">documentsSearchResults() (in module scipost.views)</a>
   </dt>
 
+      
+  <dt><a href="modules/views.html#scipost.views.draft_registration_invitation">draft_registration_invitation() (in module scipost.views)</a>
+  </dt>
+
+      
+  <dt><a href="modules/models.html#scipost.models.DraftInvitation">DraftInvitation (class in scipost.models)</a>
+  </dt>
+
   </dl></td>
 </tr></table>
 
diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html
index 6ac380fba5f19077ffadef77fe0f57e9085ce780..c27d7498c511a4b6ddc20841f08cf969ad26e8f0 100644
--- a/docs/_build/html/index.html
+++ b/docs/_build/html/index.html
@@ -34,7 +34,7 @@
               href="genindex.html"/>
         <link rel="search" title="Search" href="search.html"/>
     <link rel="top" title="SciPost 1.0 documentation" href="#"/>
-        <link rel="next" title="Models" href="modules/models.html"/> 
+        <link rel="next" title="Production of SciPost Publications" href="howto/production.html"/> 
 
   
   <script src="_static/js/modernizr.min.js"></script>
@@ -84,8 +84,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
@@ -135,8 +137,20 @@
 <p>Contents:</p>
 <div class="toctree-wrapper compound">
 <ul>
+<li class="toctree-l1"><a class="reference internal" href="howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="dev/maintenance/docs.html">Maintenance of SciPost documentation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="dev/maintenance/docs.html#sphinx-generated-docs">Sphinx-generated docs</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="dev/maintenance/docs.html#generating-the-static-html-files">Generating the static html files</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="dev/maintenance/docs.html#sphinxdoc-generated-docs-viewable-online">Sphinxdoc-generated docs (viewable online)</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="dev/maintenance/docs.html#updating-the-docs">Updating the docs:</a></li>
+</ul>
+</li>
+</ul>
+</li>
 </ul>
 </div>
 </div>
@@ -156,7 +170,7 @@
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="modules/models.html" class="btn btn-neutral float-right" title="Models" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="howto/production.html" class="btn btn-neutral float-right" title="Production of SciPost Publications" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
     </div>
diff --git a/docs/_build/html/modules/models.html b/docs/_build/html/modules/models.html
index 86f0fb2653cd71d5f01c03f319e981c1515834a4..b07a5315bb8a643068f2ddddc828025251db7fb5 100644
--- a/docs/_build/html/modules/models.html
+++ b/docs/_build/html/modules/models.html
@@ -35,7 +35,7 @@
         <link rel="search" title="Search" href="../search.html"/>
     <link rel="top" title="SciPost 1.0 documentation" href="../index.html"/>
         <link rel="next" title="Views" href="views.html"/>
-        <link rel="prev" title="Welcome to SciPost’s documentation!" href="../index.html"/> 
+        <link rel="prev" title="Production of SciPost Publications" href="../howto/production.html"/> 
 
   
   <script src="../_static/js/modernizr.min.js"></script>
@@ -85,8 +85,10 @@
             
             
                 <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
@@ -172,6 +174,12 @@ username, password, email, first_name and last_name are inherited from User.</p>
 
 </dd></dl>
 
+<dl class="class">
+<dt id="scipost.models.DraftInvitation">
+<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">DraftInvitation</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#DraftInvitation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.DraftInvitation" title="Permalink to this definition">¶</a></dt>
+<dd><p>Draft of an invitation, filled in by an officer.</p>
+</dd></dl>
+
 <dl class="class">
 <dt id="scipost.models.Graph">
 <em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">Graph</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#Graph"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.Graph" title="Permalink to this definition">¶</a></dt>
@@ -384,7 +392,7 @@ to and from Referees and Authors becomes an instance of this class.</p>
         <a href="views.html" class="btn btn-neutral float-right" title="Views" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="../index.html" class="btn btn-neutral" title="Welcome to SciPost’s documentation!" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="../howto/production.html" class="btn btn-neutral" title="Production of SciPost Publications" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/docs/_build/html/modules/views.html b/docs/_build/html/modules/views.html
index 3ca5170a024a00fef1239e9a31661a621be43926..2e438cd6a15cc75a86d9cc6a6e4943e293adfbbb 100644
--- a/docs/_build/html/modules/views.html
+++ b/docs/_build/html/modules/views.html
@@ -34,6 +34,7 @@
               href="../genindex.html"/>
         <link rel="search" title="Search" href="../search.html"/>
     <link rel="top" title="SciPost 1.0 documentation" href="../index.html"/>
+        <link rel="next" title="Maintenance of SciPost documentation" href="../dev/maintenance/docs.html"/>
         <link rel="prev" title="Models" href="models.html"/> 
 
   
@@ -84,8 +85,10 @@
             
             
                 <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="models.html">Models</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
@@ -177,6 +180,14 @@ Naive implementation based on exact match of query.
 NEEDS UPDATING with e.g. Haystack.</p>
 </dd></dl>
 
+<dl class="function">
+<dt id="scipost.views.draft_registration_invitation">
+<code class="descclassname">scipost.views.</code><code class="descname">draft_registration_invitation</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#draft_registration_invitation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.draft_registration_invitation" title="Permalink to this definition">¶</a></dt>
+<dd><p>For officers to prefill registration invitations.
+This is similar to the registration_invitations method,
+which is used to complete the invitation process.</p>
+</dd></dl>
+
 <dl class="function">
 <dt id="scipost.views.email_group_members">
 <code class="descclassname">scipost.views.</code><code class="descname">email_group_members</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#email_group_members"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.email_group_members" title="Permalink to this definition">¶</a></dt>
@@ -227,7 +238,7 @@ NEEDS UPDATING with e.g. Haystack.</p>
 
 <dl class="function">
 <dt id="scipost.views.registration_invitations">
-<code class="descclassname">scipost.views.</code><code class="descname">registration_invitations</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#registration_invitations"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.registration_invitations" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">scipost.views.</code><code class="descname">registration_invitations</code><span class="sig-paren">(</span><em>request</em>, <em>draft_id=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#registration_invitations"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.registration_invitations" title="Permalink to this definition">¶</a></dt>
 <dd><p>Overview and tools for administrators</p>
 </dd></dl>
 
@@ -459,6 +470,8 @@ This is an adapted version of the accept_or_decline_assignment_ack method.</p>
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
+        <a href="../dev/maintenance/docs.html" class="btn btn-neutral float-right" title="Maintenance of SciPost documentation" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
       
         <a href="models.html" class="btn btn-neutral" title="Models" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv
index 1bb1e0db757c291c2a48e29f5a9040f46d02b6c2..d59aa123b677371a5d7f4cc5d8b198e3a3148784 100644
Binary files a/docs/_build/html/objects.inv and b/docs/_build/html/objects.inv differ
diff --git a/docs/_build/html/py-modindex.html b/docs/_build/html/py-modindex.html
index 4b2fea650130acc7846179eff77f50587d99802d..db94055e403f6aff48526f6837b6093787d0aba2 100644
--- a/docs/_build/html/py-modindex.html
+++ b/docs/_build/html/py-modindex.html
@@ -86,8 +86,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html
index 7c63216f448fa84986018bcc4e4a17fb0911e669..cca61f696fe9f755fb89b2e67e956c0aa0ffa5d4 100644
--- a/docs/_build/html/search.html
+++ b/docs/_build/html/search.html
@@ -83,8 +83,10 @@
             
             
                 <ul>
+<li class="toctree-l1"><a class="reference internal" href="howto/production.html">Production of SciPost Publications</a></li>
 <li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li>
+<li class="toctree-l1"><a class="reference internal" href="dev/maintenance/docs.html">Maintenance of SciPost documentation</a></li>
 </ul>
 
             
diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js
index d8cbf55fd5dddf18f945cb7c894c0db1e262ec0e..c602a340e487acc7297c11ec9def937a9fc13126 100644
--- a/docs/_build/html/searchindex.js
+++ b/docs/_build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({envversion:50,filenames:["index","modules/models","modules/views"],objects:{"commentaries.models":{Commentary:[1,1,1,""]},"commentaries.models.Commentary":{parse_links_into_urls:[1,2,1,""],scipost_url:[1,2,1,""],scipost_url_full:[1,2,1,""]},"commentaries.views":{prefill_using_DOI:[2,3,1,""],prefill_using_identifier:[2,3,1,""]},"comments.models":{Comment:[1,1,1,""]},"journals.models":{Deposit:[1,1,1,""],Issue:[1,1,1,""],Journal:[1,1,1,""],Publication:[1,1,1,""],UnregisteredAuthor:[1,1,1,""],Volume:[1,1,1,""]},"journals.models.Publication":{details:[1,2,1,""]},"journals.views":{add_author:[2,3,1,""],create_citation_list_metadata:[2,3,1,""],create_funding_info_metadata:[2,3,1,""],create_metadata_xml:[2,3,1,""],initiate_publication:[2,3,1,""],metadata_xml_deposit:[2,3,1,""],scipost_physics_accepted:[2,3,1,""],scipost_physics_recent:[2,3,1,""],upload_proofs:[2,3,1,""],validate_publication:[2,3,1,""]},"scipost.models":{AffiliationObject:[1,1,1,""],Arc:[1,1,1,""],AuthorshipClaim:[1,1,1,""],ChoiceArrayField:[1,1,1,""],Contributor:[1,1,1,""],Graph:[1,1,1,""],List:[1,1,1,""],NewsItem:[1,1,1,""],Node:[1,1,1,""],PrecookedEmail:[1,1,1,""],RegistrationInvitation:[1,1,1,""],Remark:[1,1,1,""],SPBMembershipAgreement:[1,1,1,""],SupportingPartner:[1,1,1,""],Team:[1,1,1,""],UnavailabilityPeriod:[1,1,1,""]},"scipost.models.Contributor":{public_info_as_table:[1,2,1,""]},"scipost.models.NewsItem":{descriptor_full:[1,2,1,""],descriptor_small:[1,2,1,""]},"scipost.views":{activation:[2,3,1,""],api_graph:[2,3,1,""],base:[2,3,1,""],claim_authorships:[2,3,1,""],contributor_info:[2,3,1,""],documentsSearchResults:[2,3,1,""],email_group_members:[2,3,1,""],email_particular:[2,3,1,""],get_query:[2,3,1,""],index:[2,3,1,""],invitation:[2,3,1,""],mark_reg_inv_as_declined:[2,3,1,""],normalize_query:[2,3,1,""],personal_page:[2,3,1,""],registration_invitations:[2,3,1,""],registration_invitations_cleanup:[2,3,1,""],remove_registration_invitation:[2,3,1,""],renew_registration_invitation:[2,3,1,""],search:[2,3,1,""],send_precooked_email:[2,3,1,""]},"submissions.models":{EICRecommendation:[1,1,1,""],EditorialAssignment:[1,1,1,""],EditorialCommunication:[1,1,1,""],RefereeInvitation:[1,1,1,""],Report:[1,1,1,""],Submission:[1,1,1,""]},"submissions.models.EditorialAssignment":{header_as_li:[1,2,1,""]},"submissions.views":{assignment_failed:[2,3,1,""],cancel_ref_invitation:[2,3,1,""],close_refereeing_round:[2,3,1,""],communication:[2,3,1,""],editorial_workflow:[2,3,1,""],fix_College_decision:[2,3,1,""],pool:[2,3,1,""],recruit_referee:[2,3,1,""],ref_invitation_reminder:[2,3,1,""],send_refereeing_invitation:[2,3,1,""],submissions:[2,3,1,""],volunteer_as_EIC:[2,3,1,""]},"theses.models":{ThesisLink:[1,1,1,""]},commentaries:{models:[1,0,0,"-"],views:[2,0,0,"-"]},comments:{models:[1,0,0,"-"],views:[2,0,0,"-"]},journals:{models:[1,0,0,"-"],views:[2,0,0,"-"]},scipost:{models:[1,0,0,"-"],views:[2,0,0,"-"]},submissions:{models:[1,0,0,"-"],views:[2,0,0,"-"]},theses:{models:[1,0,0,"-"],views:[2,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function"},terms:{"abstract":1,"case":2,"class":1,"function":2,"import":2,"new":1,"public":[1,2],"return":[1,2],"true":2,"while":2,_sre:2,abov:[1,2],accept:[1,2],accept_or_decline_assignment_ack:2,acceptance_d:1,accepted_submiss:1,access:[1,2],accessibl:1,account:2,action:2,activ:2,adapt:2,add_author:2,address:2,adjust:1,admin:1,administr:2,affiliationobject:1,after:2,agreement:1,all:[1,2],allow:[1,2],among:2,ani:2,anoth:2,answer:2,api:2,api_graph:2,appear:2,arc:1,arg:1,arrai:1,arrayfield:1,arrow:1,arxiv:[1,2],arxiv_identifier_w_vn_nr:[1,2],arxiv_identifier_wo_vn_nr:1,arxiv_link:1,arxiv_vn_nr:1,ask:2,assignment_fail:2,associ:2,author:[1,2],author_com:1,author_list:1,authorship:2,authorshipclaim:1,auto:2,automat:2,base:2,base_field:1,becom:[1,2],been:2,befor:2,below:2,between:[1,2],bibtex_entri:1,blurb:1,board:1,both:1,built:2,bulk:2,call:[1,2],can:[1,2],cancel:1,cancel_ref_invit:2,charg:[1,2],choic:1,choicearrayfield:1,citation_list:2,citedbi:1,claim:2,claim_authorship:2,claimant:1,click:2,close_refereeing_round:2,collabor:1,collect:1,colleg:2,combin:2,comment:[1,2],commentari:[1,2],commun:[1,2],compar:2,complet:1,compos:1,comtyp:2,confirm:2,contact:2,contain:[1,2],content:[0,1,2],context:2,contribut:[1,2],contributor:[1,2],contributor_id:2,contributor_info:2,countri:1,creat:[1,2],create_citation_list_metadata:2,create_funding_info_metadata:2,create_metadata_xml:2,crossref:[1,2],current:1,data:2,databas:2,date:1,date_answ:1,date_cr:1,date_invit:1,date_last_remind:1,date_respond:1,date_submit:1,declin:2,defin:1,deni:2,deposit:[1,2],deprec:1,descriptor_ful:1,descriptor_smal:1,desir:2,detail:[1,2],detect:2,determin:1,dictionari:2,digest:2,direct:1,disciplin:1,displai:2,django:1,documentssearchresult:2,doe:2,doi:[1,2],doi_label:1,doi_str:[1,2],domain:1,dure:2,each:1,earlier:1,edadmin:2,edit:1,editor:[1,2],editor_in_charg:1,editori:[1,2],editorial_pag:2,editorial_workflow:2,editorialassign:1,editorialcommun:1,eic:2,eicrecommend:1,email:[1,2],email_address:1,email_group_memb:2,email_particular:2,enabl:1,end:1,entri:2,etc:1,exact:2,explor:1,fellow:2,field:[1,2],fill:2,find:2,findal:2,findterm:2,first_author:1,first_author_unregist:1,first_nam:1,fix_college_decis:2,flag:2,followup_link:1,followup_link_text:1,foreignkei:1,form:2,format:1,formfield:1,formul:2,from:[1,2],fulfil:1,funding_info:2,further:[1,2],gather:2,get_queri:2,given:1,global:2,graph:[1,2],graph_id:2,group:2,handl:2,hasn:2,have:2,haystack:2,header:2,header_as_li:1,headlin:1,here:1,histori:1,html:[1,2],identifi:2,implement:2,in_issu:1,in_journ:1,in_volum:1,index:[0,1,2],individu:[1,2],info:1,inherit:[1,2],initiate_publ:2,instanc:[1,2],instead:2,institut:1,invit:[1,2],invitat:1,invitation_id:2,invitation_kei:1,invited_bi:1,is_curr:1,is_resubmiss:1,isn:2,issn:1,issue:1,journal:[1,2],json:2,keep:2,kei:2,keyword:2,kwarg:1,last_nam:1,latest_act:1,length:1,link:[1,2],list:[1,2],list_of_chang:1,log:2,made:1,main:2,make:2,manuscript:2,mark:2,mark_reg_inv_as_declin:2,match:2,member:2,membership:1,metadata:[1,2],metadata_xml:[1,2],metadata_xml_deposit:2,method:[1,2],model:[],modul:[0,2],most:2,multiplechoicefield:1,must:2,naiv:2,name:[1,2],navbar:2,needs:2,newsitem:1,node:1,none:[1,2],normalize_queri:2,normspac:2,note:1,nr_remind:1,number:[1,2],object:[1,2],occur:2,off:2,once:2,onli:1,open_for_com:1,open_for_report:1,option:2,otherwis:2,out:1,overlap:2,overview:2,page:[0,1,2],paper:2,paper_nr:1,parse_links_into_url:1,particular:1,partner:1,password:1,path:1,pdf:2,pdf_file:1,pend:2,permiss:1,person:[1,2],personal_pag:2,perus:2,physic:2,plain:1,plot:2,point:1,pool:2,popul:2,postgr:1,potenti:2,pre:2,precook:2,precookedemail:1,prefil:2,prefill_using_doi:2,prefill_using_identifi:2,print:1,privat:1,probe:2,process:2,produc:2,product:2,proof:2,provid:[1,2],public_info_as_t:1,publication_d:1,publication_detail:1,publication_id:2,publicli:1,publish:2,python:2,queri:2,query_str:2,quot:2,read:1,rec_id:2,recent:2,recogn:2,recommend:[1,2],recruit_refere:2,ref_invitation_remind:2,refere:[1,2],referee_id:2,refereeinvit:1,referees_flag:1,referees_suggest:1,refusal_reason:1,regist:2,registr:[1,2],registration_invit:2,registration_invitations_cleanup:2,registrationinvit:1,reject:2,relev:2,remark:1,remarks_for_author:1,remarks_for_editor:1,remarks_for_editorial_colleg:1,remov:2,remove_registration_invit:2,renew:[1,2],renew_registration_invit:2,repli:[1,2],report:[1,2],reporting_deadlin:1,repres:1,request:2,requested_chang:1,right:1,round:2,same:1,satisfactori:2,scipost_physics_accept:2,scipost_physics_rec:2,scipost_url:1,scipost_url_ful:1,search:[0,2],search_field:2,secondary_area:1,see:[1,2],select:2,send:2,send_precooked_email:[1,2],send_refereeing_invit:2,sent:2,server:2,set:1,she:2,size:1,skeleton:2,somebodi:2,sourc:[1,2],spbmembershipagr:1,split:2,sre_pattern:2,start:1,start_dat:1,statu:1,store:1,string:2,sub:[1,2],subject:2,subject_area:1,submiss:[1,2],submission_d:1,submission_typ:1,submit:1,submitted_bi:1,submitted_to_journ:1,subunit:1,summari:2,support:1,supportingpartn:1,system:2,take:[1,2],team:[1,2],teams_with_access:1,templat:[1,2],termin:2,test:2,thei:2,them:2,thesi:1,thesislink:[1,2],thi:[1,2],those:2,through:2,thu:1,time:1,titl:1,to_journ:2,todo:2,togeth:2,token:2,tool:2,turn:1,two:1,type:1,unavailabilityperiod:1,undergo:2,unregist:2,unregistered_author_id:2,unregisteredauthor:1,unsollicit:1,until_d:1,updating:2,upload:2,upload_proof:2,upon:2,url:1,use:1,user:[1,2],usernam:1,validate_publ:2,validatepublicationform:2,verif:2,version:[1,2],vetted_bi:1,view:[],volum:1,volunt:2,volunteer_as_eic:2,vote:2,voting_deadlin:1,want:2,well:2,when:2,where:2,which:2,who:2,without:1,word:2,yet:2},titles:["Welcome to SciPost&#8217;s documentation!","Models","Views"],titleterms:{document:0,indice:0,model:1,scipost:0,tabl:0,view:2,welcom:0}})
\ No newline at end of file
+Search.setIndex({envversion:50,filenames:["dev/maintenance/docs","howto/production","index","modules/models","modules/views"],objects:{"commentaries.models":{Commentary:[3,1,1,""]},"commentaries.models.Commentary":{parse_links_into_urls:[3,2,1,""],scipost_url:[3,2,1,""],scipost_url_full:[3,2,1,""]},"commentaries.views":{prefill_using_DOI:[4,3,1,""],prefill_using_identifier:[4,3,1,""]},"comments.models":{Comment:[3,1,1,""]},"journals.models":{Deposit:[3,1,1,""],Issue:[3,1,1,""],Journal:[3,1,1,""],Publication:[3,1,1,""],UnregisteredAuthor:[3,1,1,""],Volume:[3,1,1,""]},"journals.models.Publication":{details:[3,2,1,""]},"journals.views":{add_author:[4,3,1,""],create_citation_list_metadata:[4,3,1,""],create_funding_info_metadata:[4,3,1,""],create_metadata_xml:[4,3,1,""],initiate_publication:[4,3,1,""],metadata_xml_deposit:[4,3,1,""],scipost_physics_accepted:[4,3,1,""],scipost_physics_recent:[4,3,1,""],upload_proofs:[4,3,1,""],validate_publication:[4,3,1,""]},"scipost.models":{AffiliationObject:[3,1,1,""],Arc:[3,1,1,""],AuthorshipClaim:[3,1,1,""],ChoiceArrayField:[3,1,1,""],Contributor:[3,1,1,""],DraftInvitation:[3,1,1,""],Graph:[3,1,1,""],List:[3,1,1,""],NewsItem:[3,1,1,""],Node:[3,1,1,""],PrecookedEmail:[3,1,1,""],RegistrationInvitation:[3,1,1,""],Remark:[3,1,1,""],SPBMembershipAgreement:[3,1,1,""],SupportingPartner:[3,1,1,""],Team:[3,1,1,""],UnavailabilityPeriod:[3,1,1,""]},"scipost.models.Contributor":{public_info_as_table:[3,2,1,""]},"scipost.models.NewsItem":{descriptor_full:[3,2,1,""],descriptor_small:[3,2,1,""]},"scipost.views":{activation:[4,3,1,""],api_graph:[4,3,1,""],base:[4,3,1,""],claim_authorships:[4,3,1,""],contributor_info:[4,3,1,""],documentsSearchResults:[4,3,1,""],draft_registration_invitation:[4,3,1,""],email_group_members:[4,3,1,""],email_particular:[4,3,1,""],get_query:[4,3,1,""],index:[4,3,1,""],invitation:[4,3,1,""],mark_reg_inv_as_declined:[4,3,1,""],normalize_query:[4,3,1,""],personal_page:[4,3,1,""],registration_invitations:[4,3,1,""],registration_invitations_cleanup:[4,3,1,""],remove_registration_invitation:[4,3,1,""],renew_registration_invitation:[4,3,1,""],search:[4,3,1,""],send_precooked_email:[4,3,1,""]},"submissions.models":{EICRecommendation:[3,1,1,""],EditorialAssignment:[3,1,1,""],EditorialCommunication:[3,1,1,""],RefereeInvitation:[3,1,1,""],Report:[3,1,1,""],Submission:[3,1,1,""]},"submissions.models.EditorialAssignment":{header_as_li:[3,2,1,""]},"submissions.views":{assignment_failed:[4,3,1,""],cancel_ref_invitation:[4,3,1,""],close_refereeing_round:[4,3,1,""],communication:[4,3,1,""],editorial_workflow:[4,3,1,""],fix_College_decision:[4,3,1,""],pool:[4,3,1,""],recruit_referee:[4,3,1,""],ref_invitation_reminder:[4,3,1,""],send_refereeing_invitation:[4,3,1,""],submissions:[4,3,1,""],volunteer_as_EIC:[4,3,1,""]},"theses.models":{ThesisLink:[3,1,1,""]},commentaries:{models:[3,0,0,"-"],views:[4,0,0,"-"]},comments:{models:[3,0,0,"-"],views:[4,0,0,"-"]},journals:{models:[3,0,0,"-"],views:[4,0,0,"-"]},scipost:{models:[3,0,0,"-"],views:[4,0,0,"-"]},submissions:{models:[3,0,0,"-"],views:[4,0,0,"-"]},theses:{models:[3,0,0,"-"],views:[4,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function"},terms:{"abstract":3,"case":4,"class":3,"function":4,"import":4,"new":3,"public":[],"return":[3,4],"true":4,"while":4,_sre:4,abov:[3,4],accept:[1,3,4],accept_or_decline_assignment_ack:4,acceptance_d:3,accepted_submiss:3,access:[3,4],accessibl:3,account:4,action:4,activ:4,adapt:4,add_author:4,address:4,adjust:3,admin:3,administr:[1,4],affiliationobject:3,after:4,agreement:3,all:[3,4],allow:[3,4],among:4,ani:4,anoth:4,answer:4,api:4,api_graph:4,appear:4,arc:3,arg:3,arrai:3,arrayfield:3,arrow:3,arxiv:[3,4],arxiv_identifier_w_vn_nr:[3,4],arxiv_identifier_wo_vn_nr:3,arxiv_link:3,arxiv_vn_nr:3,ask:4,assignment_fail:4,associ:4,author:[3,4],author_com:3,author_list:3,authorship:4,authorshipclaim:3,auto:4,automat:4,base:4,base_field:3,becom:[3,4],been:4,befor:4,below:4,between:[3,4],bibtex_entri:3,blurb:3,board:3,both:3,built:4,bulk:4,call:[3,4],can:[3,4],cancel:3,cancel_ref_invit:4,charg:[3,4],choic:3,choicearrayfield:3,citation_list:4,citedbi:3,claim:4,claim_authorship:4,claimant:3,click:4,close_refereeing_round:4,collabor:3,collect:3,colleg:4,combin:4,command:0,comment:[3,4],commentari:[3,4],commun:[3,4],compar:4,complet:[3,4],compos:3,comtyp:4,confirm:4,contact:4,contain:[3,4],content:[2,3,4],context:4,contribut:[3,4],contributor:[3,4],contributor_id:4,contributor_info:4,countri:3,creat:[3,4],create_citation_list_metadata:4,create_funding_info_metadata:4,create_metadata_xml:4,crossref:[3,4],current:3,data:4,databas:4,date:3,date_answ:3,date_cr:3,date_invit:3,date_last_remind:3,date_respond:3,date_submit:3,declin:4,defin:3,deni:4,deposit:[3,4],deprec:3,describ:1,descriptor_ful:3,descriptor_smal:3,desir:4,detail:[3,4],detect:4,determin:3,dictionari:4,digest:4,direct:3,disciplin:3,displai:4,django:3,documentssearchresult:4,doe:4,doi:[3,4],doi_label:3,doi_str:[3,4],domain:3,draft:3,draft_id:4,draft_registration_invit:4,draftinvit:3,dure:4,each:3,earlier:3,edadmin:4,edit:3,editor:[3,4],editor_in_charg:3,editori:[1,3,4],editorial_pag:4,editorial_workflow:4,editorialassign:3,editorialcommun:3,eic:4,eicrecommend:3,email:[3,4],email_address:3,email_group_memb:4,email_particular:4,enabl:3,end:3,entri:4,etc:3,exact:4,explor:3,fellow:4,field:[3,4],fill:[3,4],find:4,findal:4,findterm:4,first_author:3,first_author_unregist:3,first_nam:3,fix_college_decis:4,flag:4,folder:0,followup_link:3,followup_link_text:3,foreignkei:3,form:4,format:3,formfield:3,formul:4,from:[1,3,4],fulfil:3,funding_info:4,further:[3,4],gather:4,get_queri:4,given:3,global:4,graph:[3,4],graph_id:4,group:4,guid:1,handl:4,hasn:4,have:4,haystack:4,header:4,header_as_li:3,headlin:3,here:3,histori:3,html:[],identifi:4,implement:4,in_issu:3,in_journ:3,in_volum:3,index:[2,3,4],individu:[3,4],info:3,inherit:[3,4],initiate_publ:4,instanc:[3,4],instead:4,institut:3,invit:[3,4],invitat:3,invitation_id:4,invitation_kei:3,invited_bi:3,invok:0,is_curr:3,is_resubmiss:3,isn:4,issn:3,issue:3,journal:[3,4],json:4,keep:4,kei:4,keyword:4,kwarg:3,last_nam:3,latest_act:3,length:3,link:[3,4],list:[3,4],list_of_chang:3,log:4,made:3,main:4,make:[0,4],manag:0,manuscript:4,mark:4,mark_reg_inv_as_declin:4,match:4,meant:1,member:4,membership:3,metadata:[3,4],metadata_xml:[3,4],metadata_xml_deposit:4,method:[3,4],model:[],modul:[2,4],most:4,multiplechoicefield:3,must:4,naiv:4,name:[3,4],navbar:4,needs:4,newsitem:3,node:3,none:[3,4],normalize_queri:4,normspac:4,note:3,nr_remind:3,number:[3,4],object:[3,4],occur:4,off:4,offic:[3,4],officer:1,once:4,onli:3,open_for_com:3,open_for_report:3,option:4,otherwis:4,out:3,overlap:4,overview:4,page:[2,3,4],paper:[1,4],paper_nr:3,parse_links_into_url:3,particular:3,partner:3,password:3,path:3,pdf:4,pdf_file:3,pend:4,permiss:3,person:[3,4],personal_pag:4,perus:4,physic:4,plain:3,plot:4,point:3,pool:4,popul:4,post:1,postgr:3,potenti:4,pre:4,precook:4,precookedemail:3,prefil:4,prefill_using_doi:4,prefill_using_identifi:4,print:3,privat:3,probe:4,process:4,produc:4,product:[],project:0,proof:4,provid:[3,4],public_info_as_t:3,publication_d:3,publication_detail:3,publication_id:4,publicli:3,publish:4,python:[0,4],queri:4,query_str:4,quot:4,read:3,rec_id:4,recent:4,recogn:4,recommend:[3,4],recruit_refere:4,ref_invitation_remind:4,refere:[3,4],referee_id:4,refereeinvit:3,referees_flag:3,referees_suggest:3,refusal_reason:3,regist:4,registr:[3,4],registration_invit:4,registration_invitations_cleanup:4,registrationinvit:3,reject:4,relev:4,remark:3,remarks_for_author:3,remarks_for_editor:3,remarks_for_editorial_colleg:3,remov:4,remove_registration_invit:4,renew:[3,4],renew_registration_invit:4,repli:[3,4],report:[3,4],reporting_deadlin:3,repres:3,request:4,requested_chang:3,right:3,round:4,same:3,satisfactori:4,scipost_physics_accept:4,scipost_physics_rec:4,scipost_url:3,scipost_url_ful:3,search:[2,4],search_field:4,secondary_area:3,see:[3,4],select:4,send:4,send_precooked_email:[3,4],send_refereeing_invit:4,sent:4,server:4,set:3,she:4,similar:4,size:3,skeleton:4,slug:0,somebodi:4,sourc:[3,4],spbmembershipagr:3,split:4,sre_pattern:4,start:3,start_dat:3,statu:3,store:3,string:4,sub:[3,4],subject:4,subject_area:3,submiss:[3,4],submission_d:3,submission_typ:3,submit:3,submitted_bi:3,submitted_to_journ:3,subunit:3,summari:4,support:3,supportingpartn:3,system:4,take:[3,4],team:[3,4],teams_with_access:3,templat:[3,4],termin:4,test:4,thei:4,them:4,thesi:3,thesislink:[3,4],thi:[1,3,4],those:4,through:4,thu:3,time:3,titl:3,to_journ:4,todo:4,togeth:4,token:4,tool:4,turn:3,two:3,type:3,unavailabilityperiod:3,undergo:4,unregist:4,unregistered_author_id:4,unregisteredauthor:3,unsollicit:3,until_d:3,updatedoc:0,updating:4,upload:4,upload_proof:4,upon:4,url:3,use:[0,3],user:[3,4],usernam:3,validate_publ:4,validatepublicationform:4,verif:4,version:[3,4],vetted_bi:3,view:[],volum:3,volunt:4,volunteer_as_eic:4,vote:4,voting_deadlin:3,want:4,well:4,when:4,where:4,which:4,who:4,without:3,word:4,workflow:1,yet:4},titles:["Maintenance of SciPost documentation","Production of SciPost Publications","Welcome to SciPost&#8217;s documentation!","Models","Views"],titleterms:{"public":1,"static":0,doc:0,document:[0,2],file:0,gener:0,html:0,indice:2,mainten:0,model:3,onlin:0,product:1,scipost:[0,1,2],sphinx:0,sphinxdoc:0,tabl:2,update:0,view:4,viewabl:0,welcom:2}})
\ No newline at end of file
diff --git a/docs/contributors/contributors.rst b/docs/contributors/contributors.rst
new file mode 100644
index 0000000000000000000000000000000000000000..c732f35bff4dd4dba49d7f0129f3a4e7177af147
--- /dev/null
+++ b/docs/contributors/contributors.rst
@@ -0,0 +1,8 @@
+For Contributors
+================
+
+
+.. toctree::
+   :maxdepth: 2
+
+   editorial_administrators/editorial_administrators
diff --git a/docs/contributors/editorial_administrators/#production.rst# b/docs/contributors/editorial_administrators/#production.rst#
new file mode 100644
index 0000000000000000000000000000000000000000..be80d8e9e78b00c5b8934b6ba0fe99f941e9ab32
--- /dev/null
+++ b/docs/contributors/editorial_administrators/#production.rst#
@@ -0,0 +1,8 @@
+.. Howto for publication production
+
+Production of SciPost Publications
+==================================
+
+This guide is meant for **Editorial Administrators** and **Production Officers**. It describes the post-acceptance workflow from paper acceptance to publication.
+
+
diff --git a/docs/contributors/editorial_administrators/.#production.rst b/docs/contributors/editorial_administrators/.#production.rst
new file mode 120000
index 0000000000000000000000000000000000000000..056404ec50d17d6b0698fdda1bf43a37cff93414
--- /dev/null
+++ b/docs/contributors/editorial_administrators/.#production.rst
@@ -0,0 +1 @@
+jscaux@MacBook-Pro-7.local.2955
\ No newline at end of file
diff --git a/docs/contributors/editorial_administrators/editorial_administrators.rst b/docs/contributors/editorial_administrators/editorial_administrators.rst
new file mode 100644
index 0000000000000000000000000000000000000000..03174bbbdd6e1706baabbefc4e254d7cec4db835
--- /dev/null
+++ b/docs/contributors/editorial_administrators/editorial_administrators.rst
@@ -0,0 +1,8 @@
+Editorial Administrators
+========================
+
+
+.. toctree::
+   :maxdepth: 2
+
+   production
diff --git a/docs/contributors/editorial_administrators/production.rst b/docs/contributors/editorial_administrators/production.rst
new file mode 100644
index 0000000000000000000000000000000000000000..9dfdf28a313d1309f63eb37aed3e62a3c43bafe1
--- /dev/null
+++ b/docs/contributors/editorial_administrators/production.rst
@@ -0,0 +1,6 @@
+.. Howto for publication production
+
+Production of SciPost Publications
+==================================
+
+This guide is meant for **Editorial Administrators** and **Production Officers**. It describes the post-acceptance workflow from paper acceptance to publication.
diff --git a/docs/developers/codebase/codebase.rst b/docs/developers/codebase/codebase.rst
new file mode 100644
index 0000000000000000000000000000000000000000..936a62247219a43e5cdb921cd6e505c64098f92d
--- /dev/null
+++ b/docs/developers/codebase/codebase.rst
@@ -0,0 +1,9 @@
+SciPost codebase
+================
+
+
+.. toctree::
+   :maxdepth: 2
+
+   modules/models
+   modules/views
diff --git a/docs/modules/models.rst b/docs/developers/codebase/modules/models.rst
similarity index 100%
rename from docs/modules/models.rst
rename to docs/developers/codebase/modules/models.rst
diff --git a/docs/modules/views.rst b/docs/developers/codebase/modules/views.rst
similarity index 100%
rename from docs/modules/views.rst
rename to docs/developers/codebase/modules/views.rst
diff --git a/docs/developers/developers.rst b/docs/developers/developers.rst
new file mode 100644
index 0000000000000000000000000000000000000000..557c2eaf7ba92fea4f507844425a4920b0c464ea
--- /dev/null
+++ b/docs/developers/developers.rst
@@ -0,0 +1,9 @@
+For Developers
+==============
+
+
+.. toctree::
+   :maxdepth: 2
+
+   maintenance/maintenance
+   codebase/codebase
diff --git a/docs/developers/maintenance/docs.rst b/docs/developers/maintenance/docs.rst
new file mode 100644
index 0000000000000000000000000000000000000000..784ada5758831940930019f828c95c6c354d8de4
--- /dev/null
+++ b/docs/developers/maintenance/docs.rst
@@ -0,0 +1,22 @@
+Maintenance of SciPost documentation
+====================================
+
+
+Sphinx-generated docs
+---------------------
+
+
+Generating the static html files
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In the docs folder, invoke ``make html``.
+
+
+
+Sphinxdoc-generated docs (viewable online)
+------------------------------------------
+
+Updating the docs:
+~~~~~~~~~~~~~~~~~~
+
+Use the management command ``python manage.py updatedoc -b <project-slug>`` with slug scipost.
diff --git a/docs/developers/maintenance/maintenance.rst b/docs/developers/maintenance/maintenance.rst
new file mode 100644
index 0000000000000000000000000000000000000000..3122094aaccb78ef912ad93b26daff58a6b985b7
--- /dev/null
+++ b/docs/developers/maintenance/maintenance.rst
@@ -0,0 +1,8 @@
+Maintenance
+===========
+
+
+.. toctree::
+   :maxdepth: 2
+
+   docs
diff --git a/docs/index.rst b/docs/index.rst
index 1fae5f89bd05e67441af1490d9bb6ec64e4bae1b..5b4a14377165a55f0ee5a0355ad9ec4095e357c9 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -9,10 +9,10 @@ Welcome to SciPost's documentation!
 Contents:
 
 .. toctree::
-   :maxdepth: 2
+   :maxdepth: 3
 
-   modules/models
-   modules/views
+   contributors/contributors
+   developers/developers
 
 
 Indices and tables
diff --git a/scipost/templates/scipost/howto.html b/scipost/templates/scipost/howto.html
new file mode 100644
index 0000000000000000000000000000000000000000..f01dfda26dbd2a5a387fb77e4b2463485c38f77a
--- /dev/null
+++ b/scipost/templates/scipost/howto.html
@@ -0,0 +1,25 @@
+{% extends 'scipost/base.html' %}
+
+{% block pagetitle %}: Howto Guides{% endblock pagetitle %}
+
+{% block bodysup %}
+
+{% load scipost_extras %}
+
+
+<section>
+  <h1>SciPost Howto Guides</h1>
+
+  <ul>
+    <li>
+      Post-acceptance:
+      <ul>
+	<li><a href="{% url 'scipost:howto_production' %}">production</a></li>
+      </ul>
+    </li>
+  </ul>
+
+</section>
+
+
+{% endblock bodysup %}
diff --git a/scipost/templates/scipost/howto_production.html b/scipost/templates/scipost/howto_production.html
new file mode 100644
index 0000000000000000000000000000000000000000..d5fe13f22ab35ee5919adfc486e2f095b9909076
--- /dev/null
+++ b/scipost/templates/scipost/howto_production.html
@@ -0,0 +1,135 @@
+{% extends 'scipost/base.html' %}
+
+{% block pagetitle %}: Howto: Production{% endblock pagetitle %}
+
+{% block bodysup %}
+
+{% load scipost_extras %}
+
+
+<section>
+  <h1>SciPost Publications: Production</h1>
+  <ul><li>Go back to the <a href="{% url 'scipost:howto' %}">Howto Guides</a> Page</li></ul>
+
+  <p>This guide is meant for <strong>Editorial Administrators</strong> and <strong>Production Officers</strong>. It describes the post-acceptance workflow from paper acceptance to publication.</p>
+
+  <p>Version: 2016-12-16</p>
+
+  <hr class="hr12"/>
+
+  <ol>
+    <li>
+      <h3>Preparation</h3>
+      <ol>
+	<li>
+	  <p>Check the Submission's list of references: if the syle isn’t right (most importantly: DOI missing), ask authors to provide an updated <code>bibliography</code> or <code>.bbl</code> file by email.</p>
+	</li>
+      </ol>
+    </li><!-- Preparation -->
+
+    <li>
+      <h3>Source retrieval and folder preparation</h3>
+
+      <ol>
+	<li>
+	  <p>On the SciPost server, navigate to folder <code>[Journal full name]/IN PRODUCTION</code>.</p>
+	</li>
+	<li>
+	  <p>Create a folder <code>[journal abbrev. name]_[arxiv identifier]_[first author last name]</code>, e.g. <code>SciPost_Phys_1604.98141v3_Smart</code>.</p>
+	</li>
+	<li>
+	  <p>Save the source from arXiv into this folder.</p>
+	</li>
+	<li>
+	  <p>NOTE: the file will be named <code>####.#####v#</code>, which is not recognized as a <code>.tar.gz</code> file on a UNIX system.</p>
+	  <p>Rename the file <code>####.####v#.tar.gz</code>. Unzipping it produces the folder <code>####.#####v#</code>.</p>
+	</li>
+	<li>
+	  <p>Copy the files in <code>[Journal full name]/v##_production/FILES_TO_COPY_IN_PAPER_DIR</code> to the paper-in-production’s folder. There are 4 files: <code>by.eps, logo_scipost_with_bgd.pdf, SciPost_bibstyle.bst, SciPost.cls</code>.</p>
+	  </p>
+	</li>
+	<li>
+	  <p>Copy all the paper’s sources one level down (so from <code>####.#####v#</code> to the current directory).</p>
+	</li>
+	<li>
+	  <p>Copy the <code>.tex</code> source to a new file using the name convention <code>[Journal abbrev. name]_####_#####v#_[first author last name].tex</code> (careful: use underscore instead of . between numbers).</p>
+	</li>
+      </ol>
+
+    </li><!-- Source retrieval -->
+
+    <li>
+      <h3>LaTeX file preparation</h3>
+
+
+      <ol>
+	<li>
+	  <h4>Handling references</h4>
+	</li>
+
+	<li>
+	  <h4>Implementing the SciPost style</h4>
+	  <ol>
+	    <li>
+	      <pre><code>
+%%%%%%%% Begin SciPost Production addition
+
+\usepackage[bitstream-charter]{mathdesign}
+
+\hypersetup{
+colorlinks,
+linkcolor={red!50!black},
+citecolor={blue!50!black},
+urlcolor={blue!80!black}
+}
+
+\urlstyle{sf}
+
+\fancypagestyle{SPtitlepage}{%
+\fancyhf{}
+\fancyfoot[C]{\textbf{\thepage}}
+\lhead{\raisebox{-1.5mm}[0pt][0pt]{\href{https://scipost.org}{\includegraphics[width=20mm]{logo_scipost_with_bgd.pdf}}}}
+\chead{}
+\rhead{\small \href{https://scipost.org/SciPostPhys.1.1.???}{SciPost Phys. 1, ??? (2016)}}
+\renewcommand{\headrulewidth}{1pt}
+}
+
+\fancypagestyle{SPbulk}{
+\fancyhf{}
+\lhead{\raisebox{-1.5mm}[0pt][0pt]{\href{https://scipost.org}{\includegraphics[width=20mm]{logo_scipost_with_bgd.pdf}}}}
+\rhead{\small \href{https://scipost.org/SciPostPhys.1.1.???}{SciPost Phys. 1, ??? (2016)}}
+\fancyfoot[C]{\textbf{\thepage}}
+\renewcommand{\headrulewidth}{1pt}
+}
+
+%%%%%%%% End SciPost Production addition
+	      </code></pre>
+	    </li>
+	  </ol>
+	</li>
+      </ol>
+    </li><!-- Implementing the SciPost style -->
+
+    <li>
+      <h3>References validation</h3>
+    </li><!-- References validation -->
+
+    <li>
+      <h3>Proofs</h3>
+    </li><!-- Proofs -->
+
+    <li>
+      <h3>Online publication</h3>
+    </li><!-- Online publication -->
+
+    <li>
+      <h3>Metadata preparation and DOI registration with Crossref</h3>
+    </li><!-- Metadata, DOI -->
+
+  </ol>
+
+
+</section>
+
+
+{% endblock bodysup %}