refactor: port api/fields/file_fields.py#30638
Conversation
Summary of ChangesHello @asukaminato0721, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request undertakes a significant refactoring effort to modernize the API response serialization for file-related functionalities. By migrating from Flask-RestX's native field definitions to Pydantic Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request refactors the API field definitions from flask-restx fields to pydantic models, which is a great improvement for type safety and maintainability. The changes are consistently applied across all relevant controllers, and new tests have been added for the pydantic models. My main feedback is to reduce code duplication in the new pydantic models by using a base class.
There was a problem hiding this comment.
Pull request overview
This PR refactors the file field definitions from Flask-RestX field dictionaries to Pydantic models as part of a larger modernization effort (#28015). The change improves type safety, validation, and maintainability by leveraging Pydantic's features.
- Replaces Flask-RestX field definitions with Pydantic BaseModel classes
- Adds field validators for datetime-to-timestamp conversion
- Updates all controller endpoints to use the new Pydantic models with proper serialization
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| api/fields/file_fields.py | Complete rewrite from Flask-RestX field dictionaries to Pydantic models (FileResponse, FileWithSignedUrl, RemoteFileInfo, UploadConfig) |
| api/tests/unit_tests/fields/test_file_fields.py | New test file covering Pydantic model serialization and validation |
| api/tests/unit_tests/controllers/console/test_files_security.py | Updates mock patch paths and adds MethodView to builtins |
| api/controllers/web/remote_files.py | Migrates from marshal_with to Pydantic model validation and serialization |
| api/controllers/web/files.py | Migrates from marshal_with to Pydantic model validation and serialization |
| api/controllers/service_api/app/file.py | Migrates from marshal_with to Pydantic model validation and serialization |
| api/controllers/files/upload.py | Migrates to Pydantic models, removes some type annotations |
| api/controllers/console/remote_files.py | Migrates from marshal_with to Pydantic model validation and serialization |
| api/controllers/console/files.py | Migrates from marshal_with to Pydantic model validation and serialization for both GET and POST endpoints |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Important
Fixes #<issue number>.Summary
part of #28015
Screenshots
Checklist
make lintandmake type-check(backend) andcd web && npx lint-staged(frontend) to appease the lint gods