Natalie/natalie.py
2024-11-24 10:28:21 +03:30

52 lines
1.9 KiB
Python

import sys
from PyQt6.QtWidgets import (QApplication, QListWidgetItem)
from PyQt6.QtCore import Qt
from portainer_api import PortainerService
from gui.portainer_ui import PortainerUi
from config.settings import PortainerConfig
from gui.workers.load_stacks_worker import LoadStacksWorker
from gui.workers.load_endpoints_worker import LoadEndpointsWorker
class Natalie(PortainerUi):
def __init__(self, portainer_url, portainer_token):
super().__init__()
self.portainer = PortainerService(portainer_url, portainer_token)
self.endpoints_worker = LoadEndpointsWorker(self.portainer)
self.endpoints_worker.endpoints_retrieved.connect(self.load_endpoints)
self.endpoints_worker.error_occurred.connect(self.error_occurred)
self.endpoints_worker.start()
self.stacks_worker = LoadStacksWorker(self.portainer)
self.stacks_worker.stacks_retrieved.connect(self.load_stacks)
self.stacks_worker.error_occurred.connect(self.error_occurred)
self.stacks_worker.start()
def load_endpoints(self, endpoints):
self.endpoints_list = endpoints
self.combo_box.clear()
self.combo_box.addItem("All")
for endpoint in endpoints:
self.combo_box.addItem(endpoint['name'])
def load_stacks(self, stacks):
current_group = self.combo_box.currentText()
self.stacks_list.clear()
for stack in stacks:
item = QListWidgetItem(stack['name'])
item.setData(Qt.ItemDataRole.UserRole, stack)
self.stacks_list.addItem(item)
def error_occurred(self, error_message):
print(f"Error occurred: {error_message}")
if __name__ == '__main__':
portainer_config = PortainerConfig()
instances = portainer_config.get_portainer_instances()
base_url, token = portainer_config.get_portainer_info(instances[0])
app = QApplication(sys.argv)
win = Natalie(base_url, token)
win.show()
sys.exit(app.exec())