132 Zeilen
4.3 KiB
Python
132 Zeilen
4.3 KiB
Python
"""
|
|
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, "" |