Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 8 additions & 11 deletions hypha/apply/funds/files.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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)
14 changes: 12 additions & 2 deletions hypha/apply/projects/reports/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -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:
Expand Down
Loading