add export to json
This commit is contained in:
@@ -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
@@ -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 = {}
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@ from PySide6.QtWidgets import QWidget, QVBoxLayout, QMenu, QMessageBox, QTabWidg
|
||||
from PySide6.QtWidgets import QLabel, QMainWindow
|
||||
|
||||
from database import KontorDB
|
||||
from database.media import MediaFile
|
||||
from database.comic import Comic
|
||||
from gui.dialogs import ExportKontorDialog, ImportKontorDialog
|
||||
from gui.model_config import KontorModelConfig
|
||||
from gui.table_model import KontorTableModel
|
||||
@@ -33,8 +35,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)
|
||||
@@ -111,6 +113,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)
|
||||
|
||||
@@ -120,9 +123,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
@@ -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')
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user