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:
@@ -46,12 +46,12 @@ class BackupScreen(Screen):
|
||||
self.app.pop_screen()
|
||||
elif event.button.id == "btn-backup":
|
||||
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")
|
||||
return
|
||||
target = str(target_sel.value)
|
||||
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}'?"
|
||||
if remote:
|
||||
msg += f"\nRemote: {remote}"
|
||||
|
||||
@@ -95,7 +95,7 @@ class RemoteEditScreen(Screen):
|
||||
|
||||
def _update_field_visibility(self) -> None:
|
||||
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"):
|
||||
w.display = rtype == "ssh"
|
||||
for w in self.query(".s3-field"):
|
||||
@@ -125,7 +125,7 @@ class RemoteEditScreen(Screen):
|
||||
name = self._edit_name
|
||||
|
||||
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(
|
||||
name=name,
|
||||
@@ -133,7 +133,7 @@ class RemoteEditScreen(Screen):
|
||||
host=self.query_one("#re-host", Input).value.strip(),
|
||||
port=self.query_one("#re-port", Input).value.strip() or "22",
|
||||
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(),
|
||||
password=self.query_one("#re-password", Input).value,
|
||||
base=self.query_one("#re-base", Input).value.strip() or "/backups",
|
||||
|
||||
@@ -52,7 +52,7 @@ class RestoreScreen(Screen):
|
||||
remote_sel = self.query_one("#restore-remote", Select)
|
||||
except Exception:
|
||||
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
|
||||
target = str(target_sel.value)
|
||||
remote = str(remote_sel.value)
|
||||
@@ -85,13 +85,13 @@ class RestoreScreen(Screen):
|
||||
target_sel = self.query_one("#restore-target", Select)
|
||||
remote_sel = self.query_one("#restore-remote", 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")
|
||||
return
|
||||
if remote_sel.value is Select.BLANK:
|
||||
if not isinstance(remote_sel.value, str):
|
||||
self.notify("Select a remote", severity="error")
|
||||
return
|
||||
if snap_sel.value is Select.BLANK:
|
||||
if not isinstance(snap_sel.value, str):
|
||||
self.notify("Select a snapshot", severity="error")
|
||||
return
|
||||
target = str(target_sel.value)
|
||||
|
||||
@@ -45,7 +45,7 @@ class RetentionScreen(Screen):
|
||||
self.app.pop_screen()
|
||||
elif event.button.id == "btn-cleanup":
|
||||
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")
|
||||
return
|
||||
target = str(target_sel.value)
|
||||
|
||||
@@ -108,7 +108,7 @@ class ScheduleScreen(Screen):
|
||||
self.notify(f"Schedule '{name}' already exists.", severity="error")
|
||||
return
|
||||
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(
|
||||
name=name,
|
||||
schedule=stype,
|
||||
|
||||
@@ -72,7 +72,7 @@ class SettingsScreen(Screen):
|
||||
|
||||
def _get_select_val(self, sel_id: str, default: str) -> str:
|
||||
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:
|
||||
settings = AppSettings(
|
||||
|
||||
@@ -47,7 +47,7 @@ class SnapshotsScreen(Screen):
|
||||
async def _load_snapshots(self) -> None:
|
||||
target_sel = self.query_one("#snap-target", 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")
|
||||
return
|
||||
target = str(target_sel.value)
|
||||
|
||||
Reference in New Issue
Block a user