Skip to content

Commit 42f0e7a

Browse files
committed
Removed some easily avoidable multiple inheritance
This is a purely mechanical minimum change, one can and probably should massage the class hierarchy afterwards a bit: Various classes pairs can be merged into each other. But that's something for a future commit, the main point here is that WatoMode is only used in a single-inheritance way. Change-Id: I785df6f81a175f9cac27dbb37e17cc1a7995e42d
1 parent 760a501 commit 42f0e7a

File tree

5 files changed

+32
-35
lines changed

5 files changed

+32
-35
lines changed

cmk/gui/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1088,6 +1088,7 @@ py_library(
10881088
"//cmk/gui/utils:transaction_manager",
10891089
"//cmk/gui/utils:urls",
10901090
"//cmk/gui/valuespec",
1091+
"//cmk/gui/watolib:registries",
10911092
"//cmk/utils",
10921093
"//packages/cmk-ccc:site",
10931094
"//packages/cmk-ccc:user",

cmk/gui/backup/handler.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
)
8585
from cmk.gui.utils.user_errors import user_errors
8686
from cmk.gui.valuespec import AbsoluteDirname, ID, SchedulePeriod
87+
from cmk.gui.watolib.mode import WatoMode
8788
from cmk.rulesets.internal.form_specs import (
8889
ListExtended,
8990
SimplePassword,
@@ -448,7 +449,7 @@ def _cron_cmdline(self) -> str:
448449
return "mkbackup backup %s >/dev/null" % self.ident
449450

450451

451-
class PageBackup:
452+
class ModeBackup(WatoMode[object]):
452453
def title(self) -> str:
453454
return _("Site backup")
454455

@@ -744,7 +745,7 @@ def _show_job_list(self, backup_jobs: Sequence[Job]) -> None:
744745
)
745746

746747

747-
class PageEditBackupJob:
748+
class ModeEditBackupJob(WatoMode[object]):
748749
def __init__(self, key_store: keypair_store.KeypairStore) -> None:
749750
super().__init__()
750751
self.key_store = key_store
@@ -999,8 +1000,9 @@ def backup_key_choices(self) -> Sequence[SingleChoiceElementExtended]:
9991000
for ident, title in self.key_store.choices()
10001001
]
10011002

1003+
@classmethod
10021004
def backup_target_choices(
1003-
self, backup_config: BackupConfig
1005+
cls, backup_config: BackupConfig
10041006
) -> Sequence[SingleChoiceElementExtended[str]]:
10051007
return [
10061008
SingleChoiceElementExtended(
@@ -1122,7 +1124,7 @@ def show_job_details(job: MKBackupJob) -> None:
11221124
html.close_table()
11231125

11241126

1125-
class PageBackupJobState:
1127+
class ModeBackupJobState(WatoMode[object]):
11261128
def __init__(self) -> None:
11271129
super().__init__()
11281130
self._from_vars()
@@ -1767,7 +1769,7 @@ def _show_target_list(targets: Iterable[Target], targets_are_cma: bool) -> None:
17671769
table.cell(_("Destination"), target.render_destination())
17681770

17691771

1770-
class PageBackupTargets:
1772+
class ModeBackupTargets(WatoMode[object]):
17711773
def title(self) -> str:
17721774
return _("Site backup targets")
17731775

@@ -1835,7 +1837,7 @@ def page(self, config: Config) -> None:
18351837
_show_site_and_system_targets(BackupConfig.load())
18361838

18371839

1838-
class PageEditBackupTarget:
1840+
class ModeEditBackupTarget(WatoMode[object]):
18391841
def __init__(self) -> None:
18401842
super().__init__()
18411843
target_ident = request.var("target")
@@ -2007,7 +2009,7 @@ class BackupKeypairStore(keypair_store.KeypairStore):
20072009
pass
20082010

20092011

2010-
class PageBackupKeyManagement(key_mgmt.PageKeyManagement):
2012+
class ModeBackupKeyManagement(key_mgmt.ModeKeyManagement):
20112013
edit_mode = "backup_edit_key"
20122014
upload_mode = "backup_upload_key"
20132015
download_mode = "backup_download_key"
@@ -2042,7 +2044,7 @@ def component_name(self) -> CertManagementEvent.ComponentType:
20422044
return "backup encryption keys"
20432045

20442046

2045-
class PageBackupEditKey(key_mgmt.PageEditKey):
2047+
class ModeBackupEditKey(key_mgmt.ModeEditKey):
20462048
back_mode = "backup_keys"
20472049

20482050
def title(self) -> str:
@@ -2062,7 +2064,7 @@ def component_name(self) -> CertManagementEvent.ComponentType:
20622064
return "backup encryption keys"
20632065

20642066

2065-
class PageBackupUploadKey(key_mgmt.PageUploadKey):
2067+
class ModeBackupUploadKey(key_mgmt.ModeUploadKey):
20662068
back_mode = "backup_keys"
20672069

20682070
def title(self) -> str:
@@ -2082,7 +2084,7 @@ def component_name(self) -> CertManagementEvent.ComponentType:
20822084
return "backup encryption keys"
20832085

20842086

2085-
class PageBackupDownloadKey(key_mgmt.PageDownloadKey):
2087+
class ModeBackupDownloadKey(key_mgmt.ModeDownloadKey):
20862088
back_mode = "backup_keys"
20872089

20882090
def title(self) -> str:
@@ -2163,7 +2165,7 @@ def start(self, **env_updates: str) -> None:
21632165
super().start(**env_updates)
21642166

21652167

2166-
class PageBackupRestore:
2168+
class ModeBackupRestore(WatoMode[object]):
21672169
def __init__(self, key_store: keypair_store.KeypairStore) -> None:
21682170
super().__init__()
21692171
self.key_store = key_store

cmk/gui/backup/pages.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def register(page_registry: PageRegistry, mode_registry: ModeRegistry) -> None:
3535
mode_registry.register(ModeBackupRestore)
3636

3737

38-
class ModeBackup(handler.PageBackup, WatoMode):
38+
class ModeBackup(handler.ModeBackup):
3939
@classmethod
4040
def name(cls) -> str:
4141
return "backup"
@@ -51,7 +51,7 @@ def title(self) -> str:
5151
return _("Site backup")
5252

5353

54-
class ModeBackupTargets(handler.PageBackupTargets, WatoMode):
54+
class ModeBackupTargets(handler.ModeBackupTargets):
5555
@classmethod
5656
def name(cls) -> str:
5757
return "backup_targets"
@@ -65,7 +65,7 @@ def parent_mode(cls) -> type[WatoMode] | None:
6565
return ModeBackup
6666

6767

68-
class ModeEditBackupTarget(handler.PageEditBackupTarget, WatoMode):
68+
class ModeEditBackupTarget(handler.ModeEditBackupTarget):
6969
@classmethod
7070
def name(cls) -> str:
7171
return "edit_backup_target"
@@ -79,7 +79,7 @@ def parent_mode(cls) -> type[WatoMode] | None:
7979
return ModeBackupTargets
8080

8181

82-
class ModeEditBackupJob(handler.PageEditBackupJob, WatoMode):
82+
class ModeEditBackupJob(handler.ModeEditBackupJob):
8383
@classmethod
8484
def name(cls) -> str:
8585
return "edit_backup_job"
@@ -96,7 +96,7 @@ def __init__(self) -> None:
9696
super().__init__(key_store=make_site_backup_keypair_store())
9797

9898

99-
class ModeBackupJobState(handler.PageBackupJobState, WatoMode):
99+
class ModeBackupJobState(handler.ModeBackupJobState):
100100
@classmethod
101101
def name(cls) -> str:
102102
return "backup_job_state"
@@ -132,7 +132,7 @@ def make_site_backup_keypair_store() -> handler.BackupKeypairStore:
132132
return handler.BackupKeypairStore(cmk.utils.paths.default_config_dir / "backup_keys.mk", "keys")
133133

134134

135-
class ModeBackupKeyManagement(handler.PageBackupKeyManagement, WatoMode):
135+
class ModeBackupKeyManagement(handler.ModeBackupKeyManagement):
136136
@classmethod
137137
def name(cls) -> str:
138138
return "backup_keys"
@@ -149,7 +149,7 @@ def __init__(self) -> None:
149149
super().__init__(key_store=make_site_backup_keypair_store())
150150

151151

152-
class ModeBackupEditKey(handler.PageBackupEditKey, WatoMode):
152+
class ModeBackupEditKey(handler.ModeBackupEditKey):
153153
@classmethod
154154
def name(cls) -> str:
155155
return "backup_edit_key"
@@ -166,7 +166,7 @@ def __init__(self) -> None:
166166
super().__init__(key_store=make_site_backup_keypair_store())
167167

168168

169-
class ModeBackupUploadKey(handler.PageBackupUploadKey, WatoMode):
169+
class ModeBackupUploadKey(handler.ModeBackupUploadKey):
170170
@classmethod
171171
def name(cls) -> str:
172172
return "backup_upload_key"
@@ -192,7 +192,7 @@ def _upload_key(self, key_file: str, alias: str, passphrase: Password) -> None:
192192
super()._upload_key(key_file, alias, passphrase)
193193

194194

195-
class ModeBackupDownloadKey(handler.PageBackupDownloadKey, WatoMode):
195+
class ModeBackupDownloadKey(handler.ModeBackupDownloadKey):
196196
@classmethod
197197
def name(cls) -> str:
198198
return "backup_download_key"
@@ -209,7 +209,7 @@ def __init__(self) -> None:
209209
super().__init__(key_store=make_site_backup_keypair_store())
210210

211211

212-
class ModeBackupRestore(handler.PageBackupRestore, WatoMode):
212+
class ModeBackupRestore(handler.ModeBackupRestore):
213213
@classmethod
214214
def name(cls) -> str:
215215
return "backup_restore"

cmk/gui/key_mgmt.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,13 @@
4444
TextAreaUnicode,
4545
TextInput,
4646
)
47+
from cmk.gui.watolib.mode import WatoMode
4748
from cmk.utils.certs import CertManagementEvent
4849
from cmk.utils.keypair_store import Key, KeyAlreadyExists, KeyId, KeypairMap, KeypairStore
4950
from cmk.utils.security_event import log_security_event
5051

5152

52-
class PageKeyManagement:
53+
class ModeKeyManagement(WatoMode[object]):
5354
edit_mode = "edit_key"
5455
upload_mode = "upload_key"
5556
download_mode = "download_key"
@@ -198,7 +199,7 @@ def page(self, config: Config) -> None:
198199
table.cell(_("Key ID"), key_id)
199200

200201

201-
class PageEditKey:
202+
class ModeEditKey(WatoMode[object]):
202203
back_mode: str
203204

204205
def __init__(self, key_store: KeypairStore) -> None:
@@ -297,7 +298,7 @@ def _passphrase_help(self) -> str:
297298
raise NotImplementedError()
298299

299300

300-
class PageUploadKey:
301+
class ModeUploadKey(WatoMode[object]):
301302
back_mode: str
302303

303304
def __init__(self, key_store: KeypairStore) -> None:
@@ -464,7 +465,7 @@ def _passphrase_help(self) -> str:
464465
raise NotImplementedError()
465466

466467

467-
class PageDownloadKey:
468+
class ModeDownloadKey(WatoMode[object]):
468469
back_mode: str
469470

470471
def __init__(self, key_store: KeypairStore) -> None:

tests/unit/cmk/gui/test_backup_unit.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,12 @@
1010
import cmk.utils.paths
1111
from cmk.ccc.user import UserId
1212
from cmk.crypto.password import Password
13-
from cmk.gui.backup.handler import BackupConfig, PageEditBackupJob
13+
from cmk.gui.backup.handler import BackupConfig, ModeEditBackupJob
1414
from cmk.gui.backup.pages import ModeBackupEditKey
1515
from cmk.gui.logged_in import user
1616
from cmk.utils.backup.config import CMASystemConfig, Config, SiteConfig
1717
from cmk.utils.backup.targets import TargetId
1818
from cmk.utils.backup.targets.config import LocalTargetConfig, TargetConfig
19-
from cmk.utils.keypair_store import KeypairStore
2019

2120

2221
@pytest.mark.usefixtures("request_context")
@@ -44,10 +43,7 @@ def test_backup_key_create_web(monkeypatch: pytest.MonkeyPatch) -> None:
4443
store_path.unlink()
4544

4645

47-
@pytest.mark.usefixtures("request_context")
48-
def test_backup_target_choices_with_hyphenated_ident(
49-
tmp_path: Path,
50-
) -> None:
46+
def test_backup_target_choices_with_hyphenated_ident(tmp_path: Path) -> None:
5147
"""Regression test for CMK-32749: backup target IDs with hyphens must not raise ValueError.
5248
5349
Before the fix, SingleChoiceElement validated that 'name' was a valid Python identifier,
@@ -68,11 +64,8 @@ def test_backup_target_choices_with_hyphenated_ident(
6864
)
6965
backup_config = BackupConfig(raw_config)
7066

71-
key_store = KeypairStore(tmp_path / "backup_keys.mk", "keys")
72-
page = PageEditBackupJob(key_store)
73-
7467
# Must not raise ValueError
75-
choices = page.backup_target_choices(backup_config)
68+
choices = ModeEditBackupJob.backup_target_choices(backup_config)
7669

7770
assert len(choices) == 1
7871
assert choices[0].name == "backup-local"

0 commit comments

Comments
 (0)