Fix Select.BLANK checks across all screens

Replace `is Select.BLANK` / `is not Select.BLANK` with isinstance
checks, as the sentinel identity varies across Textual versions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
shuki
2026-03-06 02:12:58 +02:00
parent e6b6d7684a
commit 4bd9df3b5e
7 changed files with 13 additions and 13 deletions

View File

@@ -46,12 +46,12 @@ class BackupScreen(Screen):
self.app.pop_screen() self.app.pop_screen()
elif event.button.id == "btn-backup": elif event.button.id == "btn-backup":
target_sel = self.query_one("#backup-target", Select) target_sel = self.query_one("#backup-target", Select)
if target_sel.value is Select.BLANK: if not isinstance(target_sel.value, str):
self.notify("Please select a target", severity="error") self.notify("Please select a target", severity="error")
return return
target = str(target_sel.value) target = str(target_sel.value)
remote_sel = self.query_one("#backup-remote", Select) remote_sel = self.query_one("#backup-remote", Select)
remote = str(remote_sel.value) if remote_sel.value != Select.BLANK else "" remote = str(remote_sel.value) if isinstance(remote_sel.value, str) else ""
msg = f"Run backup for target '{target}'?" msg = f"Run backup for target '{target}'?"
if remote: if remote:
msg += f"\nRemote: {remote}" msg += f"\nRemote: {remote}"

View File

@@ -95,7 +95,7 @@ class RemoteEditScreen(Screen):
def _update_field_visibility(self) -> None: def _update_field_visibility(self) -> None:
type_sel = self.query_one("#re-type", Select) type_sel = self.query_one("#re-type", Select)
rtype = str(type_sel.value) if type_sel.value is not Select.BLANK else "ssh" rtype = str(type_sel.value) if isinstance(type_sel.value, str) else "ssh"
for w in self.query(".ssh-field"): for w in self.query(".ssh-field"):
w.display = rtype == "ssh" w.display = rtype == "ssh"
for w in self.query(".s3-field"): for w in self.query(".s3-field"):
@@ -125,7 +125,7 @@ class RemoteEditScreen(Screen):
name = self._edit_name name = self._edit_name
type_sel = self.query_one("#re-type", Select) type_sel = self.query_one("#re-type", Select)
rtype = str(type_sel.value) if type_sel.value is not Select.BLANK else "ssh" rtype = str(type_sel.value) if isinstance(type_sel.value, str) else "ssh"
remote = Remote( remote = Remote(
name=name, name=name,
@@ -133,7 +133,7 @@ class RemoteEditScreen(Screen):
host=self.query_one("#re-host", Input).value.strip(), host=self.query_one("#re-host", Input).value.strip(),
port=self.query_one("#re-port", Input).value.strip() or "22", port=self.query_one("#re-port", Input).value.strip() or "22",
user=self.query_one("#re-user", Input).value.strip() or "root", user=self.query_one("#re-user", Input).value.strip() or "root",
auth_method=str(self.query_one("#re-auth", Select).value) if self.query_one("#re-auth", Select).value is not Select.BLANK else "key", auth_method=str(self.query_one("#re-auth", Select).value) if isinstance(self.query_one("#re-auth", Select).value, str) else "key",
key=self.query_one("#re-key", Input).value.strip(), key=self.query_one("#re-key", Input).value.strip(),
password=self.query_one("#re-password", Input).value, password=self.query_one("#re-password", Input).value,
base=self.query_one("#re-base", Input).value.strip() or "/backups", base=self.query_one("#re-base", Input).value.strip() or "/backups",

View File

@@ -52,7 +52,7 @@ class RestoreScreen(Screen):
remote_sel = self.query_one("#restore-remote", Select) remote_sel = self.query_one("#restore-remote", Select)
except Exception: except Exception:
return return
if target_sel.value is Select.BLANK or remote_sel.value is Select.BLANK: if not isinstance(target_sel.value, str) or not isinstance(remote_sel.value, str):
return return
target = str(target_sel.value) target = str(target_sel.value)
remote = str(remote_sel.value) remote = str(remote_sel.value)
@@ -85,13 +85,13 @@ class RestoreScreen(Screen):
target_sel = self.query_one("#restore-target", Select) target_sel = self.query_one("#restore-target", Select)
remote_sel = self.query_one("#restore-remote", Select) remote_sel = self.query_one("#restore-remote", Select)
snap_sel = self.query_one("#restore-snapshot", Select) snap_sel = self.query_one("#restore-snapshot", Select)
if target_sel.value is Select.BLANK: if not isinstance(target_sel.value, str):
self.notify("Select a target", severity="error") self.notify("Select a target", severity="error")
return return
if remote_sel.value is Select.BLANK: if not isinstance(remote_sel.value, str):
self.notify("Select a remote", severity="error") self.notify("Select a remote", severity="error")
return return
if snap_sel.value is Select.BLANK: if not isinstance(snap_sel.value, str):
self.notify("Select a snapshot", severity="error") self.notify("Select a snapshot", severity="error")
return return
target = str(target_sel.value) target = str(target_sel.value)

View File

@@ -45,7 +45,7 @@ class RetentionScreen(Screen):
self.app.pop_screen() self.app.pop_screen()
elif event.button.id == "btn-cleanup": elif event.button.id == "btn-cleanup":
target_sel = self.query_one("#ret-target", Select) target_sel = self.query_one("#ret-target", Select)
if target_sel.value is Select.BLANK: if not isinstance(target_sel.value, str):
self.notify("Select a target first", severity="error") self.notify("Select a target first", severity="error")
return return
target = str(target_sel.value) target = str(target_sel.value)

View File

@@ -108,7 +108,7 @@ class ScheduleScreen(Screen):
self.notify(f"Schedule '{name}' already exists.", severity="error") self.notify(f"Schedule '{name}' already exists.", severity="error")
return return
type_sel = self.query_one("#sched-type", Select) type_sel = self.query_one("#sched-type", Select)
stype = str(type_sel.value) if type_sel.value is not Select.BLANK else "daily" stype = str(type_sel.value) if isinstance(type_sel.value, str) else "daily"
sched = Schedule( sched = Schedule(
name=name, name=name,
schedule=stype, schedule=stype,

View File

@@ -72,7 +72,7 @@ class SettingsScreen(Screen):
def _get_select_val(self, sel_id: str, default: str) -> str: def _get_select_val(self, sel_id: str, default: str) -> str:
sel = self.query_one(sel_id, Select) sel = self.query_one(sel_id, Select)
return str(sel.value) if sel.value is not Select.BLANK else default return str(sel.value) if isinstance(sel.value, str) else default
def _save(self) -> None: def _save(self) -> None:
settings = AppSettings( settings = AppSettings(

View File

@@ -47,7 +47,7 @@ class SnapshotsScreen(Screen):
async def _load_snapshots(self) -> None: async def _load_snapshots(self) -> None:
target_sel = self.query_one("#snap-target", Select) target_sel = self.query_one("#snap-target", Select)
remote_sel = self.query_one("#snap-remote", Select) remote_sel = self.query_one("#snap-remote", Select)
if target_sel.value is Select.BLANK or remote_sel.value is Select.BLANK: if not isinstance(target_sel.value, str) or not isinstance(remote_sel.value, str):
self.notify("Select target and remote first", severity="error") self.notify("Select target and remote first", severity="error")
return return
target = str(target_sel.value) target = str(target_sel.value)