This repository was archived by the owner on Jun 7, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathhistory.py
67 lines (56 loc) · 2.45 KB
/
history.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from PySide2.QtCore import QObject, Signal, Slot, Property, QAbstractListModel, QByteArray, QModelIndex
from models import Database, Task
class TaskListModel(QAbstractListModel):
def __init__(self, engine):
QAbstractListModel.__init__(self, engine)
self.engine = engine
self._COLUMNS = (QByteArray(b'description'),
QByteArray(b'id'),
QByteArray(b'date_start'),
QByteArray(b'date_stop'),
QByteArray(b'duration'),)
self.db = Database()
self.task_query = list(self.db.session.query(Task).all())
def data(self, index, role):
if role == self._COLUMNS.index('description'):
return self.task_query[index.row()].description
elif role == self._COLUMNS.index('id'):
return self.task_query[index.row()].id
elif role == self._COLUMNS.index('date_start'):
date_formated = self.task_query[index.row()].date_start.strftime("%d/%m/%Y, %H:%M:%S")
return date_formated
elif role == self._COLUMNS.index('date_stop'):
date_formated = self.task_query[index.row()].date_stop.strftime("%d/%m/%Y, %H:%M:%S")
return date_formated
elif role == self._COLUMNS.index('duration'):
duration = self.task_query[index.row()].get_duration()
return duration
return None
@Slot(int)
def delete_task(self, index):
self.endResetModel()
self.removeRow(index)
def roleNames(self):
a = dict(enumerate(self._COLUMNS))
return a
def rowCount(self, parent):
return len(self.task_query)
@Slot(int)
def removeRow(self, index, parent=QModelIndex()):
task = self.db.session.query(Task).filter_by(id=int(index))
task.delete()
self.db.session.commit()
self.task_query = list(self.db.session.query(Task).all())
self.dataChanged.emit(index, index, self.task_query)
self.endResetModel()
@Slot()
def update(self):
self.task_query = list(self.db.session.query(Task).all())
index = self.rowCount(QModelIndex()) + 1
self.dataChanged.emit(index, index, self.task_query)
self.endResetModel()
def setData(self, index, value, role):
self.task_query = list(self.db.session.query(Task).all())
self.dataChanged.emit(index, index, self.task_query)
self.endResetModel()
return True