[PR #17875] [CLOSED] feat: Refactor Workspace Model Import to Backend #11383

Closed
opened 2025-11-11 19:30:24 -06:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/open-webui/open-webui/pull/17875
Author: @silentoplayz
Created: 9/29/2025
Status: Closed

Base: devHead: feat-workspace-model-import-refactor


📝 Commits (1)

  • d4c4080 feat: Refactor Workspace Model Import to Backend

📊 Changes

3 files changed (+101 additions, -37 deletions)

View changed files

📝 backend/open_webui/routers/models.py (+41 -0)
📝 src/lib/apis/models/index.ts (+28 -0)
📝 src/lib/components/workspace/Models.svelte (+32 -37)

📄 Description

Pull Request Checklist

  • Target branch: Please verify that the pull request targets the dev branch.
  • Description: Provide a concise description of the changes made in this pull request.
  • Changelog: Ensure a changelog entry following the format of Keep a Changelog is added at the bottom of the PR description.
  • Documentation: Have you updated relevant documentation Open WebUI Docs, or other documentation sources?
  • Dependencies: Are there any new dependencies? Have you updated the dependency versions in the documentation?
  • Testing: Have you written and run sufficient tests to validate the changes?
  • Code review: Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards?
  • Prefix: To clearly categorize this pull request, prefix the pull request title using one of the following:
    • BREAKING CHANGE: Significant changes that may affect compatibility
    • build: Changes that affect the build system or external dependencies
    • ci: Changes to our continuous integration processes or workflows
    • chore: Refactor, cleanup, or other non-functional code changes
    • docs: Documentation update or addition
    • feat: Introduces a new feature or enhancement to the codebase
    • fix: Bug fix or error correction
    • i18n: Internationalization or localization changes
    • perf: Performance improvement
    • refactor: Code restructuring for better maintainability, readability, or scalability
    • style: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc.)
    • test: Adding missing tests or correcting existing tests
    • WIP: Work in progress, a temporary label for incomplete or ongoing work

Changelog Entry

Description

  • This pull request refactors the model import functionality within the Workspace section. The core logic for processing imported models has been moved from the frontend to the backend to improve performance and reliability. Instead of the client sending an individual API request for each model in a JSON file, it now sends the entire set of models to a new backend endpoint in a single, efficient transaction.

Added

  • A new backend endpoint, POST /api/v1/models/import, that accepts a list of model objects and handles their creation or update in the database.

Changed

  • The "Import Models" feature in the Workspace now reads the selected JSON file on the client-side, parses it, and sends the resulting data to the new backend endpoint.
  • The frontend now displays a loading indicator during the import process and provides success or error feedback via toast notifications.

Removed

  • The client-side logic that was responsible for iterating through imported models and sending individual API requests for each one.

Security

  • The new /api/v1/models/import endpoint is restricted to admin users, ensuring that only authorized users can perform bulk model imports.

Additional Information

  • This refactoring makes the import process more atomic and robust. A single backend transaction is more reliable than multiple client-side requests, which could result in a partial import if one of the requests failed.
  • The backend logic is designed to gracefully handle different model structures found in exported JSON files.

Screenshots or Videos

Time to import workspace custom models from a JSON file previously (1 REQUEST PER WORKSPACE MODEL):
image

Time to import workspace custom models from a JSON file with these changes applied (1 REQUEST):
image

Contributor License Agreement

By submitting this pull request, I confirm that I have read and fully agree to the Contributor License Agreement (CLA), and I am providing my contributions under its terms.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/open-webui/open-webui/pull/17875 **Author:** [@silentoplayz](https://github.com/silentoplayz) **Created:** 9/29/2025 **Status:** ❌ Closed **Base:** `dev` ← **Head:** `feat-workspace-model-import-refactor` --- ### 📝 Commits (1) - [`d4c4080`](https://github.com/open-webui/open-webui/commit/d4c408059369087e1c8d731555cc41891de6ffa6) feat: Refactor Workspace Model Import to Backend ### 📊 Changes **3 files changed** (+101 additions, -37 deletions) <details> <summary>View changed files</summary> 📝 `backend/open_webui/routers/models.py` (+41 -0) 📝 `src/lib/apis/models/index.ts` (+28 -0) 📝 `src/lib/components/workspace/Models.svelte` (+32 -37) </details> ### 📄 Description # Pull Request Checklist - [X] **Target branch:** Please verify that the pull request targets the `dev` branch. - [X] **Description:** Provide a concise description of the changes made in this pull request. - [X] **Changelog:** Ensure a changelog entry following the format of [Keep a Changelog](https://keepachangelog.com/) is added at the bottom of the PR description. - [X] **Documentation:** Have you updated relevant documentation [Open WebUI Docs](https://github.com/open-webui/docs), or other documentation sources? - [X] **Dependencies:** Are there any new dependencies? Have you updated the dependency versions in the documentation? - [X] **Testing:** Have you written and run sufficient tests to validate the changes? - [X] **Code review:** Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards? - [X] **Prefix:** To clearly categorize this pull request, prefix the pull request title using one of the following: - **BREAKING CHANGE**: Significant changes that may affect compatibility - **build**: Changes that affect the build system or external dependencies - **ci**: Changes to our continuous integration processes or workflows - **chore**: Refactor, cleanup, or other non-functional code changes - **docs**: Documentation update or addition - **feat**: Introduces a new feature or enhancement to the codebase - **fix**: Bug fix or error correction - **i18n**: Internationalization or localization changes - **perf**: Performance improvement - **refactor**: Code restructuring for better maintainability, readability, or scalability - **style**: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc.) - **test**: Adding missing tests or correcting existing tests - **WIP**: Work in progress, a temporary label for incomplete or ongoing work # Changelog Entry ### Description - This pull request refactors the model import functionality within the `Workspace` section. The core logic for processing imported models has been moved from the frontend to the backend to improve performance and reliability. Instead of the client sending an individual API request for each model in a JSON file, it now sends the entire set of models to a new backend endpoint in a single, efficient transaction. ### Added - A new backend endpoint, `POST /api/v1/models/import`, that accepts a list of model objects and handles their creation or update in the database. ### Changed - The "Import Models" feature in the Workspace now reads the selected JSON file on the client-side, parses it, and sends the resulting data to the new backend endpoint. - The frontend now displays a loading indicator during the import process and provides success or error feedback via toast notifications. ### Removed - The client-side logic that was responsible for iterating through imported models and sending individual API requests for each one. ### Security - The new `/api/v1/models/import` endpoint is restricted to admin users, ensuring that only authorized users can perform bulk model imports. ### Additional Information - This refactoring makes the import process more atomic and robust. A single backend transaction is more reliable than multiple client-side requests, which could result in a partial import if one of the requests failed. - The backend logic is designed to gracefully handle different model structures found in exported JSON files. ### Screenshots or Videos **Time to import workspace custom models from a JSON file previously (1 REQUEST PER WORKSPACE MODEL):** <img width="2560" height="349" alt="image" src="https://github.com/user-attachments/assets/48e92ad6-3545-4969-92a0-a50bab2c5601" /> **Time to import workspace custom models from a JSON file with these changes applied (1 REQUEST):** <img width="2560" height="349" alt="image" src="https://github.com/user-attachments/assets/f8bdf045-bd40-4ec5-a26f-3b98eb902326" /> ### Contributor License Agreement By submitting this pull request, I confirm that I have read and fully agree to the [Contributor License Agreement (CLA)](https://github.com/open-webui/open-webui/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2025-11-11 19:30:24 -06:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#11383