Skip to content

Export entire folder recursively#711

Merged
kernicPanel merged 4 commits into
mainfrom
feat/folder-export
May 28, 2026
Merged

Export entire folder recursively#711
kernicPanel merged 4 commits into
mainfrom
feat/folder-export

Conversation

@kernicPanel
Copy link
Copy Markdown
Contributor

Purpose

Export entire folder recursively

Fixes #412.

Proposal

  • Add an export ability for accessible folders
  • Add the GET /api/v1.0/items/<id>/export/ endpoint
  • Stream the ZIP archive without loading all files in memory
  • Preserve the folder hierarchy through relative archive paths
  • Exclude soft-deleted descendants and files that are not ready

@kernicPanel kernicPanel requested a review from lunika May 15, 2026 13:30
@kernicPanel kernicPanel force-pushed the feat/folder-export branch from 33de0d1 to e8dea81 Compare May 15, 2026 13:36
Comment thread src/backend/core/api/viewsets.py Outdated
Comment thread src/backend/core/services/item_exports.py Outdated
Comment thread src/backend/core/services/item_exports.py
Comment thread src/backend/core/services/item_exports.py
Comment thread src/backend/core/tests/items/test_api_items_export.py Outdated
Comment thread src/backend/core/tests/items/test_api_items_export.py Outdated
@kernicPanel kernicPanel requested a review from lunika May 20, 2026 09:22
Copy link
Copy Markdown
Member

@lunika lunika left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome feature, congrats.

},
{
icon: <Download />,
label: t("explorer.item.actions.download"),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe export is more explicit ?

Copy link
Copy Markdown
Contributor

@PanchoutNathan PanchoutNathan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A really cool feature. One small bug before validating its functionality: the complete directory structure isn't displayed. If I have a folder A with a folder A.1 and a file X, if I export A, I only get file X by itself.

Introduce a new "export" entry in Item.get_abilities, true only for
folders the user can read. Will be the gate for the upcoming recursive
folder export endpoint.
Used to stream a zip archive of a folder's content over HTTP without
buffering the whole archive in memory.
Issue #412 asks for a way to download an entire folder. Add a
GET /items/<id>/export/ action that streams a recursive ZIP archive of
the folder, preserving the directory hierarchy and skipping soft-deleted
or not-yet-uploaded descendants.
Expose the backend folder ZIP export from explorer folder menus
through the Download action.
@kernicPanel kernicPanel force-pushed the feat/folder-export branch from fd68a2d to cd7bebf Compare May 28, 2026 08:44
@sonarqubecloud
Copy link
Copy Markdown

@kernicPanel kernicPanel merged commit cd7bebf into main May 28, 2026
32 checks passed
@kernicPanel kernicPanel deleted the feat/folder-export branch May 28, 2026 09:05
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.

Export entire folder recursively

3 participants