-
Notifications
You must be signed in to change notification settings - Fork 19.6k
refactor: port controllers/console/app/app.py #30522
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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 of the application controller, transitioning its data models and serialization mechanisms to leverage Pydantic BaseModels. This change aims to modernize the API response structures, enforce stricter type validation, and streamline the development process by providing a more robust and maintainable data layer. 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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request refactors the API response serialization in api/controllers/console/app/app.py by migrating from flask_restx.fields and marshal to Pydantic BaseModel for defining all response schemas. The changes involve removing flask_restx.fields imports and related model definitions, introducing a ResponseModel base class with Pydantic ConfigDict for attribute mapping and serialization, and utilizing AliasChoices, computed_field, and field_validator for flexible data handling, including timestamp conversions and icon URL generation. API endpoints are updated to explicitly validate and serialize responses using Pydantic's model_validate and model_dump methods, replacing the marshal_with decorator. A new test file, api/tests/unit_tests/controllers/console/app/test_app_response_models.py, was added to verify the correct serialization behavior of the new Pydantic models.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR refactors controllers/console/app/app.py to use Pydantic BaseModel for response serialization instead of flask-restx's field-based marshaling approach. This is part of a larger effort (#28015) to modernize the codebase with Pydantic models for better type safety and validation.
Key Changes:
- Replaced flask-restx field definitions with Pydantic response models (AppPartial, AppDetail, AppDetailWithSite, etc.)
- Migrated from
marshalandmarshal_withdecorators to explicitmodel_validateandmodel_dumpcalls - Added comprehensive unit tests for response model serialization and field aliasing
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| api/controllers/console/app/app.py | Replaced flask-restx field definitions with Pydantic BaseModel classes for response serialization; refactored endpoints to use explicit model validation and dumping instead of marshal decorators |
| api/tests/unit_tests/controllers/console/app/test_app_response_models.py | Added comprehensive unit tests validating response model serialization, field aliasing, timestamp conversion, and icon URL generation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Important
Fixes #<issue number>.Summary
part of #28015 , port controllers/console/app/app.py to BaseModel
Screenshots
Checklist
dev/reformat(backend) andcd web && npx lint-staged(frontend) to appease the lint gods