drivers: include source.search_drivers in GET /drivers

The search_drivers attribute is set at the source model level, not at
the the drivers model level.

Having said that, by adding its value in the response to GET /drivers,
we can avoid doing multiple HTTP calls in the make_ui function.

Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
This commit is contained in:
Olivier Gayot 2022-04-26 10:55:19 +02:00
parent 79326cf2eb
commit 8929197010
3 changed files with 8 additions and 5 deletions

View File

@ -31,13 +31,11 @@ class DriversController(SubiquityTuiController):
endpoint_name = 'drivers'
async def make_ui(self) -> DriversView:
source_endpoint = self.app.client.source
source_response = await source_endpoint.GET()
response: DriversResponse = await self.endpoint.GET()
if not source_response.search_drivers:
if not response.search_drivers:
raise Skip
response: DriversResponse = await self.endpoint.GET()
return DriversView(self, response.drivers,
response.install, response.local_only)

View File

@ -399,10 +399,12 @@ class DriversResponse:
to do it. It will bet set to None until we figure out what drivers are
available.
:local_only: tells if we are looking for drivers only from the ISO.
:search_drivers: enables or disables drivers listing.
"""
install: bool
drivers: Optional[List[str]]
local_only: bool
search_drivers: bool
@attr.s(auto_attribs=True)

View File

@ -102,9 +102,12 @@ class DriversController(SubiquityController):
if wait:
await asyncio.shield(self._drivers_task)
search_drivers = self.app.controllers.Source.model.search_drivers
return DriversResponse(install=self.model.do_install,
drivers=self.drivers,
local_only=local_only)
local_only=local_only,
search_drivers=search_drivers)
async def POST(self, data: DriversPayload) -> None:
self.model.do_install = data.install