diff --git a/opentech/apply/funds/files.py b/opentech/apply/funds/files.py index 5c05b703476bb54f6b361c7d49d40b8d0754ede5..72e2420fa71dfc6c76ea77291ac159a9f51ed618 100644 --- a/opentech/apply/funds/files.py +++ b/opentech/apply/funds/files.py @@ -14,7 +14,13 @@ def generate_submission_file_path(submission_id, field_id, file_name): class SubmissionStreamFieldFile(StreamFieldFile): def generate_filename(self): - return generate_submission_file_path(self.instance.pk, self.field.id, self.name) + from opentech.apply.funds.models.submissions import ApplicationRevision + submission_id = self.instance.pk + + if isinstance(self.instance, ApplicationRevision): + submission_id = self.instance.submission.pk + + return generate_submission_file_path(submission_id, self.field.id, self.name) @property def url(self): diff --git a/opentech/apply/funds/models/submissions.py b/opentech/apply/funds/models/submissions.py index 21294bec82d6626a115c65487debe19224ce00b8..11f98e2b1060877ab5916f40be05a02f0be7ec47 100644 --- a/opentech/apply/funds/models/submissions.py +++ b/opentech/apply/funds/models/submissions.py @@ -562,9 +562,10 @@ class ApplicationSubmission( self.form_data = current_submission.form_data else: self.live_revision = revision + self.search_data = ' '.join(self.prepare_search_values()) self.draft_revision = revision - self.save() + self.save(skip_custom=True) return revision return None diff --git a/opentech/apply/funds/tests/test_models.py b/opentech/apply/funds/tests/test_models.py index 3e7f9e7ba7b4c3314cd49464448aeba4e7f8783a..7921ee67fd2baab066eff1b0b233e3cdc02f3819 100644 --- a/opentech/apply/funds/tests/test_models.py +++ b/opentech/apply/funds/tests/test_models.py @@ -402,6 +402,24 @@ class TestApplicationSubmission(TestCase): # Check we saved the file somewhere beneath it self.assertIn(filename, found_files) + def test_correct_file_path_generated(self): + submission = ApplicationSubmissionFactory() + + for file_id in submission.file_field_ids: + + def check_generated_file_path(file_to_test): + file_path_generated = file_to_test.generate_filename() + file_path_required = os.path.join('submission', str(submission.id), str(file_id), file_to_test.basename) + + self.assertEqual(file_path_generated, file_path_required) + + file_response = submission.data(file_id) + if isinstance(file_response, list): + for stream_file in file_response: + check_generated_file_path(stream_file) + else: + check_generated_file_path(file_response) + def test_create_revision_on_create(self): submission = ApplicationSubmissionFactory() self.assertEqual(submission.revisions.count(), 1)