add export to json

This commit is contained in:
Thomas Peetz
2025-01-13 16:18:13 +01:00
parent 3f0a37ff19
commit 89b7b87b8c
8 changed files with 150 additions and 54 deletions
+6 -7
View File
@@ -1,7 +1,6 @@
from typing import List
from PyQt5.QtCore import QAbstractTableModel
from PySide6.QtCore import QModelIndex
from PySide6.QtCore import QModelIndex, QAbstractTableModel
from PySide6.QtGui import Qt
from gui.data_view import DataViewMeta
@@ -14,19 +13,19 @@ class DataViewModel(QAbstractTableModel):
self._config = None
self._data = List[DataViewMeta]
def rowCount(self, parent = QModelIndex()):
def rowCount(self, parent=QModelIndex()):
return len(self._data)
def columnCount(self, parent = QModelIndex()):
def columnCount(self, parent=QModelIndex()):
return 0
def headerData(self, section, orientation, role = Qt.ItemDataRole.DisplayRole):
def headerData(self, section, orientation, role=Qt.ItemDataRole.DisplayRole):
return None
def data(self, index, role = Qt.ItemDataRole.DisplayRole):
def data(self, index, role=Qt.ItemDataRole.DisplayRole):
return None
def setData(self, index, value, role = Qt.ItemDataRole.EditRole):
def setData(self, index, value, role=Qt.ItemDataRole.EditRole):
return False
def flags(self, index):
+2 -2
View File
@@ -1,7 +1,7 @@
from pathlib import Path
from PySide6.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QHBoxLayout, QPushButton, QFileDialog, \
QGroupBox, QCheckBox, QComboBox
QCheckBox, QComboBox
class ExportKontorDialog(QDialog):
@@ -10,7 +10,7 @@ class ExportKontorDialog(QDialog):
self.parent = parent
self.kontor_db = kontor_db
self.file_name = None
self.file_name = "data.json"
self.tables = []
self._table_options = {}
+5 -4
View File
@@ -34,8 +34,8 @@ class MainWindow(QMainWindow):
parent_layout = QVBoxLayout()
self.central_widget.setLayout(parent_layout)
self.tabs = QTabWidget()
self.tabs.addTab(self.generate_data_tab("comic"), "Comics")
self.tabs.addTab(self.generate_data_tab("media_file"), "MediaFile")
self.tabs.addTab(self.generate_data_tab("comic", Comic), "Comics")
self.tabs.addTab(self.generate_data_tab("media_file", MediaFile), "MediaFile")
self.tabs.currentChanged.connect(self._tab_changed)
#label.setAlignment(Qt.AlignmentFlag.AlignCenter)
parent_layout.addWidget(self.tabs)
@@ -112,6 +112,7 @@ class MainWindow(QMainWindow):
print(export_dlg.get_tables_to_export())
print(f"export DB to {export_dlg.file_name}")
self.statusBar.showMessage(f"export DB to {export_dlg.file_name}", 3000)
self.kontor_db.export_db(export_dlg.current_export_type, export_dlg.file_name, export_dlg.get_tables_to_export())
else:
self.statusBar.showMessage("Export cancelled", 3000)
@@ -121,9 +122,9 @@ class MainWindow(QMainWindow):
def _tab_changed(self, tab_index):
self.data[tab_index].refresh()
def generate_data_tab(self, table_name):
def generate_data_tab(self, table_name, table):
data_tab = QWidget()
table_config = KontorModelConfig(self.kontor_db, self, table_name)
table_config = KontorModelConfig(self.kontor_db, self, table_name, table)
model = KontorTableModel(table_config)
layout = QVBoxLayout()
self.data.append(model)
+18 -13
View File
@@ -6,25 +6,18 @@ from database import KontorDB
class KontorModelConfig:
def __init__(self, kontor_db: KontorDB, main_window, table_name: str):
def __init__(self, kontor_db: KontorDB, main_window, table_name: str, table):
self.header = {}
self.filter = {}
self.main_window = main_window
self._table = table_name
self._table_id = None
self._table_name = table_name
self._table = table
self.kontor_db = kontor_db
self.get_table_config()
def get_table_id(self):
if self._table_id is not None:
return
self._table_id = self.kontor_db.get_table_id(self._table)
def get_table_config(self):
if self._table_id is None:
self.get_table_id()
self.header = self.kontor_db.get_column_meta_data(self._table_id, self._table)
self.filter = self.kontor_db.get_filters(self._table_id)
self.header = self.kontor_db.get_column_meta_data(self._table_name)
self.filter = self.kontor_db.get_filters(self._table_name)
def get_filter(self) -> str:
filter_rule = ""
@@ -41,8 +34,20 @@ class KontorModelConfig:
# print(f"{filter_rule=}")
return filter_rule
def filters(self) -> dict:
_filters = {}
# print(self.filter["download"].isChecked())
for column, filter_info in self.filter.items():
# print(column, filter_info)
if filter_info['widget'].isChecked():
_filters[column] = True
# print(f"{filter_rule=}")
return _filters
def get_data(self) -> list:
data = self.kontor_db.get_data(self._table, self.header, self.get_filter())
# data = self.kontor_db.get_data(self._table_name, self.header, self.get_filter())
# data.clear()
data = self.kontor_db.data(self._table, self.header, self.filters())
# print(f"KontorModelConfig.get_data: {len(data)}")
# comics = self.kontor_db.session.query(Comic).all()
# print(f'{len(comics)} Comics loaded')
+1 -1
View File
@@ -57,7 +57,7 @@ class KontorTableModel(QAbstractTableModel):
else:
return self._main_window.cross
if isinstance(value, int):
print('{}:: {}: {}'.format(index, value, type(value)))
# print('{}:: {}: {}'.format(index, value, type(value)))
if value == 1:
return self._main_window.tick
else: