""" Basis-Controller für Plattform-spezifische Funktionalität. """ import logging from PyQt5.QtCore import QObject from views.tabs.generator_tab import GeneratorTab from views.tabs.accounts_tab import AccountsTab from views.tabs.settings_tab import SettingsTab class BasePlatformController(QObject): """Basis-Controller-Klasse für Plattformspezifische Logik.""" def __init__(self, platform_name, db_manager, proxy_rotator, email_handler, language_manager=None): super().__init__() self.platform_name = platform_name self.logger = logging.getLogger(f"{platform_name.lower()}_controller") # Modelle self.db_manager = db_manager self.proxy_rotator = proxy_rotator self.email_handler = email_handler self.language_manager = language_manager # Tabs self._generator_tab = None self._accounts_tab = None self._settings_tab = None # Plattformspezifische Initialisierungen self.init_platform() def init_platform(self): """ Initialisiert plattformspezifische Komponenten. Diese Methode sollte von Unterklassen überschrieben werden. """ pass def get_generator_tab(self): """Gibt den Generator-Tab zurück oder erstellt ihn bei Bedarf.""" if not self._generator_tab: self._generator_tab = self.create_generator_tab() return self._generator_tab def get_accounts_tab(self): """Gibt den Accounts-Tab zurück oder erstellt ihn bei Bedarf.""" if not self._accounts_tab: self._accounts_tab = self.create_accounts_tab() return self._accounts_tab def get_settings_tab(self): """Gibt den Settings-Tab zurück oder erstellt ihn bei Bedarf.""" if not self._settings_tab: self._settings_tab = self.create_settings_tab() return self._settings_tab def create_generator_tab(self): """ Erstellt den Generator-Tab. Diese Methode sollte von Unterklassen überschrieben werden. """ return GeneratorTab(self.platform_name, self.language_manager) def create_accounts_tab(self): """ Erstellt den Accounts-Tab. Diese Methode sollte von Unterklassen überschrieben werden. """ return AccountsTab(self.platform_name, self.db_manager, self.language_manager) def create_settings_tab(self): """ Erstellt den Settings-Tab. Diese Methode sollte von Unterklassen überschrieben werden. """ return SettingsTab( self.platform_name, self.proxy_rotator, self.email_handler, self.language_manager ) def start_account_creation(self, params): """ Startet die Account-Erstellung. Diese Methode sollte von Unterklassen überschrieben werden. Args: params: Parameter für die Account-Erstellung """ self.logger.info(f"Account-Erstellung für {self.platform_name} gestartet") # In Unterklassen implementieren def validate_inputs(self, inputs): """ Validiert die Eingaben für die Account-Erstellung. Args: inputs: Eingaben für die Account-Erstellung Returns: (bool, str): (Ist gültig, Fehlermeldung falls nicht gültig) """ # Basis-Validierungen if not inputs.get("full_name"): return False, "Bitte geben Sie einen vollständigen Namen ein." # Alter prüfen age_text = inputs.get("age_text", "") if not age_text: return False, "Bitte geben Sie ein Alter ein." # Alter muss eine Zahl sein try: age = int(age_text) inputs["age"] = age # Füge das konvertierte Alter zu den Parametern hinzu except ValueError: return False, "Das Alter muss eine ganze Zahl sein." # Alter-Bereich prüfen if age < 13 or age > 99: return False, "Das Alter muss zwischen 13 und 99 liegen." # Telefonnummer prüfen, falls erforderlich if inputs.get("registration_method") == "phone" and not inputs.get("phone_number"): return False, "Telefonnummer erforderlich für Registrierung via Telefon." return True, ""