From 44732b18d1bec919af29a054f319d36894f6ad02 Mon Sep 17 00:00:00 2001
From: Jorran de Wit <jorrandewit@outlook.com>
Date: Tue, 19 Jun 2018 22:02:25 +0200
Subject: [PATCH] Preprint finishing some day...

---
 preprints/helpers.py                          |  2 +-
 preprints/models.py                           |  3 ++-
 preprints/urls.py                             |  4 +++-
 submissions/constants.py                      | 15 ++++++++-----
 submissions/forms.py                          |  6 ++---
 submissions/models.py                         |  1 +
 .../pool/submission_info_table.html           | 21 +++++++++++++-----
 .../submissions/submission_summary.html       | 22 +++++++++++++------
 8 files changed, 49 insertions(+), 25 deletions(-)

diff --git a/preprints/helpers.py b/preprints/helpers.py
index 3ec5dcb31..d5437b287 100644
--- a/preprints/helpers.py
+++ b/preprints/helpers.py
@@ -20,7 +20,7 @@ def generate_new_scipost_identifier():
         existing_identifier = str(existing_identifier + 1)
     return '{year}{month}_{identifier}'.format(
         year=now.year, month=str(now.month).rjust(2, '0'),
-        identifier=existing_identifier.rjust(5, '0'))
+        identifier=existing_identifier.rjust(5, '0')), int(existing_identifier)
 
 
 def format_scipost_identifier(identifier, version=1):
diff --git a/preprints/models.py b/preprints/models.py
index ed13fd0a6..a6dca72d1 100644
--- a/preprints/models.py
+++ b/preprints/models.py
@@ -36,8 +36,9 @@ class Preprint(models.Model):
         return 'Preprint {}'.format(self.identifier_w_vn_nr)
 
     def get_absolute_url(self):
+        """Return either saved url or url to open the pdf."""
         if self.url:
             return self.url
         if self._file:
-            return reverse('preprints:pdf', self.identifier_w_vn_nr)
+            return reverse('preprints:pdf', args=(self.identifier_w_vn_nr,))
         raise Http404
diff --git a/preprints/urls.py b/preprints/urls.py
index 6f5dc5eec..bb01e05f5 100644
--- a/preprints/urls.py
+++ b/preprints/urls.py
@@ -6,7 +6,9 @@ from django.conf.urls import url
 
 from . import views
 
+from submissions.constants import SCIPOST_PREPRINT_W_VN_REGEX
+
 
 urlpatterns = [
-    url(r'^$', views.preprint_pdf, name='pdf'),
+    url(r'^{regex}/$'.format(regex=SCIPOST_PREPRINT_W_VN_REGEX), views.preprint_pdf, name='pdf'),
 ]
diff --git a/submissions/constants.py b/submissions/constants.py
index e7540234b..adbd4d36b 100644
--- a/submissions/constants.py
+++ b/submissions/constants.py
@@ -186,11 +186,14 @@ EIC_REC_STATUSES = (
     (DEPRECATED, 'Editorial Recommendation deprecated'),
 )
 
-# Use `.format()` https://docs.python.org/3.5/library/string.html#format-string-syntax
-# In your regex multiple brackets may occur;
-# Please make sure to double them in that case as per instructions in the reference!
-SUBMISSIONS_NO_VN_REGEX = '(?P<identifier_wo_vn_nr>[0-9]{4,}.[0-9]{4,})'
-SUBMISSIONS_COMPLETE_REGEX = '(?P<identifier_w_vn_nr>[0-9]{4,}.[0-9]{4,}v[0-9]{1,2})'
+# Define regexes
+arxiv_regex_wo_vn = '[0-9]{4,}.[0-9]{4,}'
+arxiv_regex_w_vn = '[0-9]{4,}.[0-9]{4,}v[0-9]{1,2}'
+scipost_regex_wo_vn = 'scipost_[0-9]{4,}.[0-9]{4,}'
+scipost_regex_w_vn = 'scipost_[0-9]{4,}.[0-9]{4,}v[0-9]{1,2}'
+SUBMISSIONS_NO_VN_REGEX = '(?P<identifier_wo_vn_nr>(%s|%s))' % (arxiv_regex_wo_vn, scipost_regex_wo_vn)
+SUBMISSIONS_COMPLETE_REGEX = '(?P<identifier_w_vn_nr>(%s|%s))' % (arxiv_regex_w_vn, scipost_regex_w_vn)
+SCIPOST_PREPRINT_W_VN_REGEX = '(?P<identifier_w_vn_nr>%s)' % scipost_regex_w_vn
 
 
 # `EXPLICIT_REGEX_MANUSCRIPT_CONSTRAINTS` tracks the regex rules for the manuscripts
@@ -198,6 +201,6 @@ SUBMISSIONS_COMPLETE_REGEX = '(?P<identifier_w_vn_nr>[0-9]{4,}.[0-9]{4,}v[0-9]{1
 #
 # CAUTION: *triple* check whether the `default` regex also meets any other explicit journal regex!
 EXPLICIT_REGEX_MANUSCRIPT_CONSTRAINTS = {
-    SCIPOST_JOURNAL_PHYSICS: '(?P<identifier_w_vn_nr>[0-9]{4,}.[0-9]{4,}v[0-9]{1,2})',
+    # SCIPOST_JOURNAL_PHYSICS: '(?P<identifier_w_vn_nr>[0-9]{4,}.[0-9]{4,}v[0-9]{1,2})',
     'default': SUBMISSIONS_COMPLETE_REGEX
 }
diff --git a/submissions/forms.py b/submissions/forms.py
index a607e7b79..638ec4221 100644
--- a/submissions/forms.py
+++ b/submissions/forms.py
@@ -341,8 +341,8 @@ class RequestSubmissionForm(SubmissionChecks, forms.ModelForm):
         """Do all prechecks which are also done in the prefiller."""
         cleaned_data = super().clean(*args, **kwargs)
         if 'identifier_w_vn_nr' not in cleaned_data:
-            self.scipost_identifier = generate_new_scipost_identifier()
-            cleaned_data['identifier_w_vn_nr'] = format_scipost_identifier(self.scipost_identifier)
+            identifier_str, self.scipost_identifier = generate_new_scipost_identifier()
+            cleaned_data['identifier_w_vn_nr'] = format_scipost_identifier(identifier_str)
 
         self.do_pre_checks(cleaned_data['identifier_w_vn_nr'])
         self.identifier_meets_regex(
@@ -446,7 +446,7 @@ class RequestSubmissionForm(SubmissionChecks, forms.ModelForm):
             _file=self.cleaned_data.get('preprint_file', None), )
 
         # Save metadata directly from ArXiv call without possible user interception
-        submission.metadata = self.metadata
+        submission.metadata = self.metadata if hasattr(self, 'metadata') else {}
         submission.preprint = preprint
 
         if self.submission_is_resubmission():
diff --git a/submissions/models.py b/submissions/models.py
index f7d34928e..690980565 100644
--- a/submissions/models.py
+++ b/submissions/models.py
@@ -131,6 +131,7 @@ class Submission(models.Model):
 
     # Temporary
     needs_conflicts_update = models.BooleanField(default=False)
+    invitation_order = models.IntegerField(default=0)
 
     class Meta:
         app_label = 'submissions'
diff --git a/submissions/templates/partials/submissions/pool/submission_info_table.html b/submissions/templates/partials/submissions/pool/submission_info_table.html
index b9fa74f83..e157ee74d 100644
--- a/submissions/templates/partials/submissions/pool/submission_info_table.html
+++ b/submissions/templates/partials/submissions/pool/submission_info_table.html
@@ -3,12 +3,21 @@
         <td style="min-width: 40%;">Version</td>
         <td>{{submission.arxiv_vn_nr}} ({% if submission.is_current %}current version{% else %}deprecated version {{submission.arxiv_vn_nr}}{% endif %})</td>
     </tr>
-    <tr>
-        <td>Arxiv Link:</td>
-        <td>
-            <a href="{{ submission.preprint.url }}" target="_blank">{{ submission.preprint.url }}</a>
-        </td>
-    </tr>
+    {% if submission.preprint.url %}
+        <tr>
+            <td>Arxiv Link:</td>
+            <td>
+                <a href="{{ submission.preprint.url }}" target="_blank">{{ submission.preprint.url }}</a>
+            </td>
+        </tr>
+        {% elif submission.preprint.get_absolute_url %}
+            <tr>
+                <td>Preprint link:</td>
+                <td>
+                    <a href="{{ submission.preprint.get_absolute_url }}" target="_blank">{{ submission.preprint.identifier_w_vn_nr }}</a>
+                </td>
+            </tr>
+        {% endif %}
     <tr>
         <td>Submitted</td>
         <td>{{submission.submission_date}} to {{submission.get_submitted_to_journal_display}}</td>
diff --git a/submissions/templates/partials/submissions/submission_summary.html b/submissions/templates/partials/submissions/submission_summary.html
index a7acdbc3b..99e0db023 100644
--- a/submissions/templates/partials/submissions/submission_summary.html
+++ b/submissions/templates/partials/submissions/submission_summary.html
@@ -19,13 +19,21 @@
             {% endfor %}
         </td>
     </tr>
-
-    <tr>
-        <td>Arxiv Link:</td>
-        <td>
-            <a href="{{submission.preprint.url}}" target="_blank">{{submission.preprint.url}}</a>
-        </td>
-    </tr>
+    {% if submission.preprint.url %}
+        <tr>
+            <td>Arxiv Link:</td>
+            <td>
+                <a href="{{submission.preprint.url}}" target="_blank">{{submission.preprint.url}}</a>
+            </td>
+        </tr>
+    {% elif submission.preprint.get_absolute_url %}
+        <tr>
+            <td>Preprint link:</td>
+            <td>
+                <a href="{{ submission.preprint.get_absolute_url }}" target="_blank">{{ submission.preprint.identifier_w_vn_nr }}</a>
+            </td>
+        </tr>
+    {% endif %}
     {% if submission.acceptance_date %}
         <tr>
             <td>Date accepted:</td>
-- 
GitLab