AOSSIE-Org / AOSSIE-Org/PictoPy
Feat: Allow users to rename image files
- Lingua principale
- Python
- Stelle
- 283
- Fork
- 679
- Merge medio
- 7g 2h
- PR unite (30g)
- 3
Descrizione
### 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
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.