diff --git a/hypha/apply/funds/files.py b/hypha/apply/funds/files.py index b4e8d7fe27..63f6b40cd9 100644 --- a/hypha/apply/funds/files.py +++ b/hypha/apply/funds/files.py @@ -22,23 +22,24 @@ class PrivateStreamFieldFile(StreamFieldFile): def get_entity_id(self): from hypha.apply.funds.models import ApplicationRevision - from hypha.apply.projects.reports.models import ReportVersion + from hypha.apply.projects.models.project import Project, ProjectSOW + from hypha.apply.projects.reports.models import Report, ReportVersion entity_id = self.instance.pk - if isinstance(self.instance, ApplicationRevision): + if isinstance(self.instance, ApplicationRevision) or isinstance( + self.instance, Project + ): entity_id = self.instance.submission.pk + elif isinstance(self.instance, Report) or isinstance(self.instance, ProjectSOW): + entity_id = self.instance.project.submission.pk elif isinstance(self.instance, ReportVersion): # Reports are project documents. - entity_id = self.instance.report.project.pk + entity_id = self.instance.report.project.submission.pk return entity_id def generate_filename(self): - from hypha.apply.projects.reports.models import ReportVersion - path_start = "submission" - if isinstance(self.instance, ReportVersion): - path_start = "project" return generate_private_file_path( self.get_entity_id(), self.field.id, @@ -48,14 +49,10 @@ def generate_filename(self): @property def url(self): - from hypha.apply.projects.reports.models import ReportVersion - view_name = "apply:submissions:serve_private_media" kwargs = { "pk": self.get_entity_id(), "field_id": self.field.id, "file_name": self.basename, } - if isinstance(self.instance, ReportVersion): - view_name = "apply:projects:document" return reverse(viewname=view_name, kwargs=kwargs) diff --git a/hypha/apply/projects/reports/forms.py b/hypha/apply/projects/reports/forms.py index 9a9e42508b..f5ece422d9 100644 --- a/hypha/apply/projects/reports/forms.py +++ b/hypha/apply/projects/reports/forms.py @@ -57,7 +57,12 @@ def save(self, commit=True, form_fields=dict): if field.split("_")[0] in instance.question_field_ids } # In case there are stream form file fields, process those here. - instance.process_file_data(self.cleaned_data["form_data"]) + instance.process_file_data( + self.cleaned_data["form_data"], + latest_existing_data=instance.current.form_data + if instance.current + else None, + ) is_draft = "save" in self.data version = ReportVersion.objects.create( @@ -68,7 +73,12 @@ def save(self, commit=True, form_fields=dict): draft=is_draft, author=self.user, ) - version.process_file_data(self.cleaned_data["form_data"]) + version.process_file_data( + self.cleaned_data["form_data"], + latest_existing_data=instance.current.form_data + if instance.current + else None, + ) version.save() if is_draft: