Merge remote-tracking branch 'origin/master'

This commit is contained in:
Eduardo 2024-12-02 17:02:51 +01:00
commit 96a162fe90
6 changed files with 30 additions and 4 deletions

View File

@ -20,6 +20,7 @@ from requests.adapters import HTTPAdapter, Retry
from urllib3.exceptions import InsecureRequestWarning from urllib3.exceptions import InsecureRequestWarning
from .component import Component from .component import Component
from ui.helpers import get_main_window
# Suppress insecure request warning # Suppress insecure request warning
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning) requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
@ -27,6 +28,7 @@ requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
class ArchiveSynchronizer(Component): class ArchiveSynchronizer(Component):
def __init__(self, config=None, name=None, period=1, lazy=True, paused=False, threaded=True): def __init__(self, config=None, name=None, period=1, lazy=True, paused=False, threaded=True):
super().__init__(config=config, name=name, period=period, lazy=lazy, paused=paused, threaded=threaded) super().__init__(config=config, name=name, period=period, lazy=lazy, paused=paused, threaded=threaded)
self.main_window = None
self.simulate = "--sim-archiver" in sys.argv self.simulate = "--sim-archiver" in sys.argv
self.machine_status = "logged-in" self.machine_status = "logged-in"
self.machine_id = None self.machine_id = None
@ -52,6 +54,10 @@ class ArchiveSynchronizer(Component):
@db.connection_context() @db.connection_context()
def _get(self): def _get(self):
if self.main_window is None:
self.main_window = get_main_window()
for record in list(Archive.select().where((Archive.archived != True) | (Archive.uploaded != True))): # using "is not True" breaks the query.. # list() forces the complete execution of the query unlocking the db unlike __enter__() for record in list(Archive.select().where((Archive.archived != True) | (Archive.uploaded != True))): # using "is not True" breaks the query.. # list() forces the complete execution of the query unlocking the db unlike __enter__()
if not self.simulate: if not self.simulate:
if record.archived is not True: if record.archived is not True:
@ -60,7 +66,9 @@ class ArchiveSynchronizer(Component):
record.uploaded = self.remote_store(record) is True record.uploaded = self.remote_store(record) is True
else: else:
self.log.info("simulated archive synchronizer cycle") self.log.info("simulated archive synchronizer cycle")
record.save() #record.save()
self.main_window.run_request.emit(record.save, [], {})
if self.hold_time > 0: if self.hold_time > 0:
QThread.msleep(self.hold_time) QThread.msleep(self.hold_time)
self.gcs_bucket = None self.gcs_bucket = None
@ -151,6 +159,8 @@ class ArchiveSynchronizer(Component):
except (requests.ConnectionError, requests.Timeout) as e: except (requests.ConnectionError, requests.Timeout) as e:
self.log.warning(f"id: {record.id}: failed to archive remotely, archive_endpoint might be unreachable: {str(e)}") self.log.warning(f"id: {record.id}: failed to archive remotely, archive_endpoint might be unreachable: {str(e)}")
return False return False
self.log.info(f"Archived successfully: {record.id}")
return True return True
def remote_store(self, record): def remote_store(self, record):
@ -183,7 +193,7 @@ class ArchiveSynchronizer(Component):
return False return False
except Exception: except Exception:
self.log.error(f"id: {record.id}: failed to store remotely:\n{traceback.format_exc()}") self.log.error(f"id: {record.id}: failed to store remotely:\n{traceback.format_exc()}")
self.log.info(f"id: {record.id}: stored remotely") self.log.info(f"Stored successfully: {record.id}")
return True return True
def remote_fetch(self, remote_path=None, local_path=None): def remote_fetch(self, remote_path=None, local_path=None):

View File

@ -174,7 +174,6 @@ try:
# GUI INIT # GUI INIT
if "--no-gui" not in sys.argv: if "--no-gui" not in sys.argv:
# self.main_window = Main_Window(self.bench)
self.main_window = Main_Window() self.main_window = Main_Window()
# CONNECT MAIN WINDOW ACTIONS # CONNECT MAIN WINDOW ACTIONS
self.main_window.logout_a.triggered.connect(lambda checked, selfie=weakref.ref(self): selfie().logout()) self.main_window.logout_a.triggered.connect(lambda checked, selfie=weakref.ref(self): selfie().logout())

View File

@ -1,2 +1,3 @@
from .calc_foreground_color import calc_foreground_color from .calc_foreground_color import calc_foreground_color
from .get_main_window import get_main_window
from .replace_widget import replace_widget from .replace_widget import replace_widget

View File

@ -0,0 +1,8 @@
from PyQt5.QtWidgets import QApplication, QMainWindow
def get_main_window():
tws = QApplication.topLevelWidgets()
for w in tws:
if isinstance(w, QMainWindow):
return w

View File

@ -5,10 +5,16 @@ from ui.window import Window
class Main_Window(Window): class Main_Window(Window):
do = pyqtSignal(dict) do = pyqtSignal(dict)
run_request = pyqtSignal(object, list, dict)
@staticmethod
def run_request_handler(fn, a, ka):
fn(*a, **ka)
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.do.connect(self._do) self.do.connect(self._do)
self.run_request.connect(self.run_request_handler)
# print("MAIN_WINDOW ", str(int(QThread.currentThreadId())), flush=True) # print("MAIN_WINDOW ", str(int(QThread.currentThreadId())), flush=True)
@staticmethod @staticmethod

View File

@ -369,7 +369,9 @@ class Test(Widget):
elif self.step.step_type == "print": elif self.step.step_type == "print":
compiled_label = self.print(self.archived, self.step.spec.get("template", "EtichettaR5")) compiled_label = self.print(self.archived, self.step.spec.get("template", "EtichettaR5"))
self.archived.label = compiled_label self.archived.label = compiled_label
self.archived.save() self.log.info(f"Label printed. Saving...")
#self.archived.save()
self.main_window.run_request.emit(self.archived.save, [], {})
self.next_timer.start(500) self.next_timer.start(500)
elif self.step.step_type == "wait": elif self.step.step_type == "wait":
self.next_timer.start(500) self.next_timer.start(500)