AOSSIE-Org / AOSSIE-Org/PictoPy

Feat: Allow users to rename image files

未关闭
#1,192 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
283
派生
679
平均合并
7 天 2 小时
30 天内合并 PR
3

描述

### Describe the feature

### Description
I have added a feature that allows users to rename images directly from the App. Users no longer need to navigate to the file path to rename an image.

### Current Problem
- There is no option to rename an image directly within the app.
- If a user wants to rename an image, they must locate the file path and rename it using the traditional method.

### Expected Feature
- The app should provide an option to rename images internally, so users do not have to worry about file paths or manually opening folders.

## Implementation
### Backend
- Added a `PUT` endpoint: "/rename-image" in `backend/app/routes/images.py`. It accepts an image ID and a new name, and returns a success status and message.
```python
class RenameImageRequest(BaseModel):
image_id: str
rename: str
class RenameImageResponse(BaseModel):
success: bool
message: str
```
- Used `os` module to rename the Image file.
```python
folder_path = os.path.dirname(image_path)
extention = os.path.splitext(image_path)[1]
new_file = os.path.join(folder_path, rename+extention)
os.rename(image_path, new_file)
```
- The sync microservice automatically updates the database with the new image name.

### Frontend
- Added API endpoint in `apiEndpoints.ts` and implemented the `renameImage` function in `frontend/src/api/api-functions/images.ts`
```tsx
export const renameImage = async (
imageId: string,
newName: string,
): Promise<{ success: boolean; message: string }> => {
const response = await apiClient.put(imagesEndpoints.renameImage, {
image_id: imageId,
rename: newName,
});
return response.data;
};
```
- Added Rename functionality to `MediaInfoPanel.tsx`
- Disabled shortcut keys while renaming an image (e.g., Rotation r, Media Info Panel i, etc.).
### Precautions
- Renaming will fail if the new image name contains unsupported special characters (e.g., `*`, `^`, `!`, etc.).

### Add ScreenShots

## Screenshots
### Before

https://github.com/user-attachments/assets/c43a38cf-09ca-46c7-b846-19e4d09a23da

### After

https://github.com/user-attachments/assets/cb3fffcb-2b9e-43a3-8b69-bb2d25322d55

### Record

- [x] I agree to follow this project's Code of Conduct
- [x] I want to work on this issue

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。