Skip to content

[ENG-10341] Recast to OsfStorageFileNode after restore does not clear delete_* fields - #11871

Open
ihorsokhanexoft wants to merge 3 commits into
CenterForOpenScience:feature/pbs-26-15from
ihorsokhanexoft:fix/ENG-10341
Open

[ENG-10341] Recast to OsfStorageFileNode after restore does not clear delete_* fields#11871
ihorsokhanexoft wants to merge 3 commits into
CenterForOpenScience:feature/pbs-26-15from
ihorsokhanexoft:fix/ENG-10341

Conversation

@ihorsokhanexoft

@ihorsokhanexoft ihorsokhanexoft commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Ticket

https://openscience.atlassian.net/browse/ENG-10341

Purpose

Restored files are considered as deleted and not shown on UI

Changes

In fact, when user restores TrashedFileNode, we recast this object to OsfStorageFileNode but this object still contains deleted, deleted_on, deleted_by field values that make this file unreachable

  • Now restore() method for TrashedFileNode objects clears values for the deleted field before recasting to OsfStorageFileNode
  • Management command fixes all OsfStorageFileNode objects that were restored via restore() and have values in deleted field
  • deleted_on field is not cleared because when we restore a folder, it restores ONLY children within the same deleted_on datetime. Therefore, we preserve deleted_by to know who triggered deletion
    Code reference:

    osf.io/osf/models/files.py

    Lines 751 to 766 in e2f47e9

    def restore(self, recursive=True, parent=None, save=True, deleted_on=None):
    """
    Restore a folder
    :param recursive:
    :param parent:
    :param save:
    :param deleted_on:
    :return:
    """
    tf = super().restore(recursive=True, parent=None, save=True, deleted_on=None)
    if not self.is_file and recursive:
    deleted_on = deleted_on or self.deleted_on
    for child in TrashedFileNode.objects.filter(parent=self.id, deleted_on=deleted_on):
    child.restore(recursive=True, save=save, deleted_on=deleted_on)
    return tf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant