diff --git a/preprints/helpers.py b/preprints/helpers.py index 3ec5dcb31ffdaf16d8de641baa993b9bd3a98e89..d5437b287c6539ca03ce34265425af7b6438b19c 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 ed13fd0a6aa18f4b50fb14f63eee6c40b3531e10..a6dca72d189134b7b757d64b28fc17a40403ae6d 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 6f5dc5eecd2a3cf5e60abaf2cec74b5ab0eaa42a..bb01e05f5242c61471cbc17f83aeebf3ecd1d92b 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 e7540234bc34661a66a07ccceac81dd70dc28ad8..adbd4d36bd3777abf12d71187f0e13841e01b177 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 a607e7b7944f6c0510200ff28558ad3e41569c36..638ec42215f579882cd246cc047092927072b670 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 f7d34928ec1012b93204ec9b21e60247ba120a43..69098056575033d2f2d09ba60e6ce6340119c050 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 b9fa74f8303699fca4c995d5ec7dc023debf367f..e157ee74d8bdd64851adf7351434d7644409da74 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 a7acdbc3bbbb16fe237f355ca7996c2a71b9027a..99e0db0235f17ee1aca40e8a5bb2dce50e9517c6 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>