This commit is contained in:
matteo porta 2022-11-07 16:26:57 +01:00
parent 353c51aa95
commit 86953df8cd
4 changed files with 79 additions and 9 deletions

View File

@ -1,5 +1,10 @@
import csv
import os
import weakref
from lib.db import Archive as ArchiveDbModel
from lib.db import Users
from PyQt5.QtWidgets import QAbstractItemView
from PyQt5.QtWidgets import QAbstractItemView, QFileDialog
from ui.crud import Crud, Json_External_Dialog_Cell_Widget
from ui.helpers import replace_widget
from ui.widget import Widget
@ -50,6 +55,7 @@ class Archive(Widget):
self.crud.db_tw.setSelectionMode(QAbstractItemView.SingleSelection)
self.crud.db_tw.itemSelectionChanged.connect(self.check)
self.print_b.clicked.connect(self.print_label)
self.export_b.clicked.connect(lambda checked, self=weakref.ref(self): self().export())
def check(self):
if not self.crud.modified:
@ -68,3 +74,50 @@ class Archive(Widget):
self.check()
if self.selected is not None and self.printer is not None:
self.printer.print_archive_label(self.selected)
def export(self, csv_path=None):
if csv_path is None:
csv_path, _ = QFileDialog.getSaveFileName(
None,
"Esportazione archivio",
"archivio.csv",
"CSV data (*.csv);;All Files (*)",
)
csv_path = str(csv_path)
if not len(csv_path):
return
if not csv_path.lower().endswith(".csv"):
csv_path += ".csv"
csv_dir = os.path.dirname(csv_path)
if len(csv_dir):
os.makedirs(csv_dir, exist_ok=True)
data = []
fieldnames = [
# "id",
"time",
"user",
"result",
"overridden",
"test_data",
"label",
# "archived",
# "uploaded",
]
for archived in list(ArchiveDbModel.select()):
exportable = {
# "id": archived.id,
"time": archived.time,
"user": archived.user,
"result": archived.result,
"overridden": archived.overridden,
"test_data": archived.test_data,
# "label": archived.label,
# "archived": archived.archived,
# "uploaded": archived.uploaded,
}
data.append(exportable)
if len(data):
with open(csv_path, "w", newline="") as f:
w = csv.DictWriter(f, fieldnames, extrasaction="ignore")
w.writeheader()
w.writerows(data)

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>98</width>
<height>61</height>
<width>184</width>
<height>51</height>
</rect>
</property>
<property name="windowTitle">
@ -27,7 +27,14 @@
</property>
</widget>
</item>
<item row="0" column="0">
<item row="1" column="1">
<widget class="QPushButton" name="export_b">
<property name="text">
<string>Esporta</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QWidget" name="crud_w" native="true"/>
</item>
</layout>

View File

@ -6,6 +6,10 @@ from PyQt5.QtGui import QKeySequence
from PyQt5.QtWidgets import QMessageBox, QShortcut
from ui.widget import Widget
# TESTING
login_count = 0
# /TESTING
class Login(Widget):
wrong_credentials = pyqtSignal()
@ -26,6 +30,8 @@ class Login(Widget):
self.user_cb.setCurrentText("USER")
self.password_le.setText("user")
if "--auto-login-admin" in sys.argv or "--auto-login-user" in sys.argv or "--test" in sys.argv:
global login_count
if login_count <= 0:
self.test_timer = QTimer()
self.test_timer.setSingleShot(True)
self.test_timer.timeout.connect(self.login_b.clicked.emit)
@ -40,4 +46,8 @@ class Login(Widget):
self.wrong_credentials.emit()
QMessageBox.critical(None, "Errore login", "Credenziali errate")
else:
# TESTING
global login_count
login_count += 1
# /TESTING
self.successful_login.emit()

View File

@ -368,7 +368,7 @@ class Recipe_Selection(Widget):
"stampa_etichetta_abilitata",
print_template_field,
]
for recipe in Recipes.select():
for recipe in list(Recipes.select()):
steps = recipe.get_steps_map()
exportable = {
recipe_name_field: recipe.name,