Skip to content

Commit eb6f9a0

Browse files
Fix report file path issue and duplicate file issue, Fix file path issue for Project and SOW Form (#4580)
Fixes #4574 As reports are project documents so we added a different path for its files but we used ReportVersion instance checks and missed Report instances so reports files and its version files were having different path and were creating issues. We could solve it in that way as well but I realise as projects are also the extension of submission and we have been trying to merge them so keep everything similar with same url pattern. Now it uses submission id to generate path and render the file similar to other submission files. Now, it also handles the duplicate file issue on every upload. It was resolved for the application form but not for the report forms.
1 parent 74e8e2f commit eb6f9a0

2 files changed

Lines changed: 20 additions & 13 deletions

File tree

hypha/apply/funds/files.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,24 @@ class PrivateStreamFieldFile(StreamFieldFile):
2222

2323
def get_entity_id(self):
2424
from hypha.apply.funds.models import ApplicationRevision
25-
from hypha.apply.projects.reports.models import ReportVersion
25+
from hypha.apply.projects.models.project import Project, ProjectSOW
26+
from hypha.apply.projects.reports.models import Report, ReportVersion
2627

2728
entity_id = self.instance.pk
2829

29-
if isinstance(self.instance, ApplicationRevision):
30+
if isinstance(self.instance, ApplicationRevision) or isinstance(
31+
self.instance, Project
32+
):
3033
entity_id = self.instance.submission.pk
34+
elif isinstance(self.instance, Report) or isinstance(self.instance, ProjectSOW):
35+
entity_id = self.instance.project.submission.pk
3136
elif isinstance(self.instance, ReportVersion):
3237
# Reports are project documents.
33-
entity_id = self.instance.report.project.pk
38+
entity_id = self.instance.report.project.submission.pk
3439
return entity_id
3540

3641
def generate_filename(self):
37-
from hypha.apply.projects.reports.models import ReportVersion
38-
3942
path_start = "submission"
40-
if isinstance(self.instance, ReportVersion):
41-
path_start = "project"
4243
return generate_private_file_path(
4344
self.get_entity_id(),
4445
self.field.id,
@@ -48,14 +49,10 @@ def generate_filename(self):
4849

4950
@property
5051
def url(self):
51-
from hypha.apply.projects.reports.models import ReportVersion
52-
5352
view_name = "apply:submissions:serve_private_media"
5453
kwargs = {
5554
"pk": self.get_entity_id(),
5655
"field_id": self.field.id,
5756
"file_name": self.basename,
5857
}
59-
if isinstance(self.instance, ReportVersion):
60-
view_name = "apply:projects:document"
6158
return reverse(viewname=view_name, kwargs=kwargs)

hypha/apply/projects/reports/forms.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,12 @@ def save(self, commit=True, form_fields=dict):
5757
if field.split("_")[0] in instance.question_field_ids
5858
}
5959
# In case there are stream form file fields, process those here.
60-
instance.process_file_data(self.cleaned_data["form_data"])
60+
instance.process_file_data(
61+
self.cleaned_data["form_data"],
62+
latest_existing_data=instance.current.form_data
63+
if instance.current
64+
else None,
65+
)
6166

6267
is_draft = "save" in self.data
6368
version = ReportVersion.objects.create(
@@ -68,7 +73,12 @@ def save(self, commit=True, form_fields=dict):
6873
draft=is_draft,
6974
author=self.user,
7075
)
71-
version.process_file_data(self.cleaned_data["form_data"])
76+
version.process_file_data(
77+
self.cleaned_data["form_data"],
78+
latest_existing_data=instance.current.form_data
79+
if instance.current
80+
else None,
81+
)
7282
version.save()
7383

7484
if is_draft:

0 commit comments

Comments
 (0)