diff --git a/src/repository/models.py b/src/repository/models.py index c10859e3da..e9761f204a 100755 --- a/src/repository/models.py +++ b/src/repository/models.py @@ -1043,6 +1043,12 @@ def submit_preprint(self): self.current_step = 5 self.save() + # The most recently uploaded submission file automatically becomes + # version 1, so managers do not have to select it manually before + # starting their review. + if self.submission_file and not self.has_version(): + self.make_new_version(self.submission_file) + def subject_editors(self): editors = [] for subject in self.subject.all(): diff --git a/src/repository/tests/test_models.py b/src/repository/tests/test_models.py index 1a1f2c3c5e..ecca6fb951 100644 --- a/src/repository/tests/test_models.py +++ b/src/repository/tests/test_models.py @@ -135,6 +135,23 @@ def test_create_article_force(self): article_two, ) + def test_submit_preprint_creates_first_version(self): + self.preprint_one.submit_preprint() + self.assertEqual(self.preprint_one.preprintversion_set.count(), 1) + version = self.preprint_one.current_version + self.assertEqual(version.version, 1) + self.assertEqual(version.file, self.preprint_one.submission_file) + + def test_submit_preprint_does_not_duplicate_existing_version(self): + self.preprint_one.make_new_version(self.preprint_one.submission_file) + self.preprint_one.submit_preprint() + self.assertEqual(self.preprint_one.preprintversion_set.count(), 1) + + def test_submit_preprint_without_file_creates_no_version(self): + self.preprint_one.submission_file = None + self.preprint_one.submit_preprint() + self.assertEqual(self.preprint_one.preprintversion_set.count(), 0) + class TestRepositoryOrganisationUnit(TestCase): """Tests for the RepositoryOrganisationUnit model introduced in iowa-and-isolinear."""