tirilane
/
egon
Archived
1
0
Fork 0

Egon is (almost) done. The printing function (not really important) is not implemented, and it needs documentation. But now it can actually be used.

This commit is contained in:
Tiril Anette Langfeldt Rødland 2008-06-17 13:39:39 +00:00
parent 3616dd3394
commit 6d5deaa787
2 changed files with 316 additions and 131 deletions

BIN
egon.db

Binary file not shown.

435
egon.py
View File

@ -25,12 +25,15 @@ __version__ = "0.0.2"
main = None main = None
semesters = []
semester = None
courses = [] courses = []
coursesString = [] coursesString = []
books = [] books = []
booksString = [] booksString = []
chosenDay = QDate() chosenDay = QDate()
colors = [] colors = []
termList = None
class MainWindow(QMainWindow): class MainWindow(QMainWindow):
@ -75,11 +78,20 @@ class MainWindow(QMainWindow):
self.calendarFrame.hide() self.calendarFrame.hide()
self.calendarDockWidget.setWidget(self.calendarFrame) self.calendarDockWidget.setWidget(self.calendarFrame)
# The semesters
global semester, semesters, termList
termList = QStringList()
termList.append(self.trUtf8("Spring"))
termList.append(self.trUtf8("Autumn"))
semesters = getSemestersFromDB()
semester = self.getLatestSemester(semesters)
if semester:
print semester.getTerm(), semester.getYear()
self.load(semester)
# Actions # Actions
fileNewAction = self.createAction("&New", self.fileNew, QKeySequence.New, "filenew", "Create a new semester plan") fileNewAction = self.createAction("&New", self.fileNew, QKeySequence.New, "filenew", "Create a new semester plan")
fileOpenAction = self.createAction("&Open", self.fileOpen, QKeySequence.Open, "fileopen", "Open an existing semester plan") fileOpenAction = self.createAction("&Open", self.fileOpen, QKeySequence.Open, "fileopen", "Open an existing semester plan")
fileSaveAction = self.createAction("&Save", self.fileSave, QKeySequence.Save, "filesave", "Save semester plan")
fileSaveAsAction = self.createAction("Save as...", self.fileSaveAs, None, "filesaveas", "Save plan as...")
filePrintAction = self.createAction("&Print", self.filePrint, QKeySequence.Print, "fileprint", "Print plan") filePrintAction = self.createAction("&Print", self.filePrint, QKeySequence.Print, "fileprint", "Print plan")
fileQuitAction = self.createAction("&Quit", self.close, "Ctrl+Q", "filequit", "Quit program") fileQuitAction = self.createAction("&Quit", self.close, "Ctrl+Q", "filequit", "Quit program")
editAddCourse = self.createAction("Add &course", self.addCourse, "Ctrl+C", None, "Add a new course") editAddCourse = self.createAction("Add &course", self.addCourse, "Ctrl+C", None, "Add a new course")
@ -96,7 +108,7 @@ class MainWindow(QMainWindow):
self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu = self.menuBar().addMenu("&Help")
# Add actions to the menus # Add actions to the menus
self.addActions(self.fileMenu, (fileNewAction, fileOpenAction, None, fileSaveAction, fileSaveAsAction, None, filePrintAction, None, fileQuitAction)) self.addActions(self.fileMenu, (fileNewAction, fileOpenAction, None, filePrintAction, None, fileQuitAction))
self.addActions(self.editMenu, (editAddCourse, editAddBook, None, editAddAssignment, None, editAddReading, None, editAddLesson, None, editShowCalendar)) self.addActions(self.editMenu, (editAddCourse, editAddBook, None, editAddAssignment, None, editAddReading, None, editAddLesson, None, editShowCalendar))
self.addActions(self.helpMenu, (helpAboutScheduler, None)) self.addActions(self.helpMenu, (helpAboutScheduler, None))
@ -121,7 +133,7 @@ class MainWindow(QMainWindow):
# The toolbars # The toolbars
fileToolbar = self.addToolBar("File") fileToolbar = self.addToolBar("File")
fileToolbar.setObjectName("FileToolBar") fileToolbar.setObjectName("FileToolBar")
self.addActions(fileToolbar, (fileNewAction, fileOpenAction, None, fileSaveAction, fileSaveAsAction, None, filePrintAction, None, fileQuitAction)) self.addActions(fileToolbar, (fileNewAction, fileOpenAction, None, filePrintAction, None, fileQuitAction))
editToolbar = self.addToolBar("Edit") editToolbar = self.addToolBar("Edit")
editToolbar.setObjectName("EditToolBar") editToolbar.setObjectName("EditToolBar")
self.addActions(editToolbar, (editAddCourse, editAddBook, None, editShowCalendar)) self.addActions(editToolbar, (editAddCourse, editAddBook, None, editShowCalendar))
@ -147,6 +159,7 @@ class MainWindow(QMainWindow):
def deleteAssignment(self): def deleteAssignment(self):
course, number = self.getCourseAndNumber() course, number = self.getCourseAndNumber()
table, row = self.getAssignmentTableAndRow() table, row = self.getAssignmentTableAndRow()
global semester
removeAssignmentFromDB(course, number) removeAssignmentFromDB(course, number)
table.removeRow(row) table.removeRow(row)
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
@ -181,6 +194,7 @@ class MainWindow(QMainWindow):
def deleteReading(self): def deleteReading(self):
week, course, book = self.getWeekCourseAndBook() week, course, book = self.getWeekCourseAndBook()
table, row = self.getReadingTableAndRow() table, row = self.getReadingTableAndRow()
global semester
removeReadingFromDB(week, course, book) removeReadingFromDB(week, course, book)
table.removeRow(row) table.removeRow(row)
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
@ -228,6 +242,7 @@ class MainWindow(QMainWindow):
def deleteLesson(self): def deleteLesson(self):
table, row, column = self.getScheduleTableRowAndColumn() table, row, column = self.getScheduleTableRowAndColumn()
day, course, time = self.getDayCourseAndTime() day, course, time = self.getDayCourseAndTime()
global semester
removeLessonFromDB(day, course, time) removeLessonFromDB(day, course, time)
table.setItem(row, column, QTableWidgetItem()) table.setItem(row, column, QTableWidgetItem())
@ -251,6 +266,23 @@ class MainWindow(QMainWindow):
def getDayFromTable(self, column): def getDayFromTable(self, column):
return self.days[column] return self.days[column]
def getLatestSemester(self, semesters):
if len(semesters) == 0:
return None
global termList
max = semesters[0]
for s in semesters:
if s.getYear() > max.getYear():
max = s
if s.getYear() == max.getYear():
if s.getTerm() == self.trUtf8("Autumn"):
max = s
return max
def getTermList(self):
global termList
return termList
def helpAbout(self): def helpAbout(self):
QMessageBox.about(self, "About %s" % self.title, u""" QMessageBox.about(self, "About %s" % self.title, u"""
<b>%s</b> v %s <b>%s</b> v %s
@ -273,16 +305,12 @@ class MainWindow(QMainWindow):
chosenDay = self.calendar chosenDay = self.calendar
def fileNew(self): def fileNew(self):
pass self.nsdlg = NewSemesterDlg()
self.nsdlg.show()
def fileOpen(self): def fileOpen(self):
pass self.osdlg = OpenSemesterDlg()
self.osdlg.show()
def fileSave(self):
pass
def fileSaveAs(self):
pass
def filePrint(self): def filePrint(self):
pass pass
@ -315,8 +343,10 @@ class MainWindow(QMainWindow):
self.addDockWidget(Qt.BottomDockWidgetArea, self.calendarDockWidget) self.addDockWidget(Qt.BottomDockWidgetArea, self.calendarDockWidget)
self.calendarDockWidget.setVisible(True) self.calendarDockWidget.setVisible(True)
def refreshTable(self): def load(self, semester):
pass self.assignment.updateTable(semester)
self.reading.updateTable(semester)
self.schedule.updateTable(semester)
class AssignmentTab(QWidget): class AssignmentTab(QWidget):
@ -332,22 +362,21 @@ class AssignmentTab(QWidget):
self.makeTable() self.makeTable()
vlayout = QVBoxLayout() self.vlayout = QVBoxLayout()
hlayout = QHBoxLayout() self.hlayout = QHBoxLayout()
hlayout.addWidget(self.addAssignmentButton) self.hlayout.addWidget(self.addAssignmentButton)
hlayout.addWidget(self.deleteAssignmentButton) self.hlayout.addWidget(self.deleteAssignmentButton)
hlayout.addWidget(self.completeAssignmentBox) self.hlayout.addWidget(self.completeAssignmentBox)
hlayout.addStretch() self.hlayout.addStretch()
vlayout.addWidget(self.assignmentTable) self.vlayout.addWidget(self.assignmentTable)
vlayout.addLayout(hlayout) self.vlayout.addLayout(self.hlayout)
self.setLayout(vlayout) self.setLayout(self.vlayout)
def makeTable(self, current=None): def makeTable(self, current=None):
self.assignments = getAssignmentsFromDB() self.assignmentTable = QTableWidget(0, 5, self)
self.assignmentTable = QTableWidget(len(self.assignments), 5, self)
self.assignmentTable.clear() self.assignmentTable.clear()
self.assignmentHeaderList = QStringList() self.assignmentHeaderList = QStringList()
self.assignmentHeaderList.append(self.trUtf8("Date")) self.assignmentHeaderList.append(self.trUtf8("Date"))
@ -361,10 +390,12 @@ class AssignmentTab(QWidget):
self.assignmentTable.setSelectionBehavior(QAbstractItemView.SelectRows) self.assignmentTable.setSelectionBehavior(QAbstractItemView.SelectRows)
self.assignmentTable.setSelectionMode(QAbstractItemView.SingleSelection) self.assignmentTable.setSelectionMode(QAbstractItemView.SingleSelection)
selected = None selected = None
self.updateTable()
def updateTable(self, current=None): def updateTable(self, semester, current=None):
for row in range(len(self.assignments)): self.assignments = getAssignmentsFromDB(semester)
rows = len(self.assignments)
self.assignmentTable.setRowCount(rows)
for row in range(rows):
self.addAssignmentToTable(row) self.addAssignmentToTable(row)
self.assignmentTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) self.assignmentTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
self.assignmentTable.sortItems(0, Qt.AscendingOrder) self.assignmentTable.sortItems(0, Qt.AscendingOrder)
@ -495,7 +526,8 @@ class AddAssignmentDlg(AssignmentDlg):
course = getCourseFromDB(getCourseCode(courseFull)) course = getCourseFromDB(getCourseCode(courseFull))
addNewAssignmentToDB(datetime, course, number, description, complete) global semester
addNewAssignmentToDB(semester, datetime, course, number, description, complete)
assignment = AssignmentModel(datetime, course, number, description, complete) assignment = AssignmentModel(datetime, course, number, description, complete)
table = getMain().assignment.assignmentTable table = getMain().assignment.assignmentTable
@ -593,22 +625,21 @@ class ReadingTab(QWidget):
self.makeTable() self.makeTable()
vlayout = QVBoxLayout() self.vlayout = QVBoxLayout()
hlayout = QHBoxLayout() self.hlayout = QHBoxLayout()
hlayout.addWidget(self.addReadingButton) self.hlayout.addWidget(self.addReadingButton)
hlayout.addWidget(self.deleteReadingButton) self.hlayout.addWidget(self.deleteReadingButton)
hlayout.addWidget(self.readingDoneButton) self.hlayout.addWidget(self.readingDoneButton)
hlayout.addStretch() self.hlayout.addStretch()
vlayout.addWidget(self.readingTable) self.vlayout.addWidget(self.readingTable)
vlayout.addLayout(hlayout) self.vlayout.addLayout(self.hlayout)
self.setLayout(vlayout) self.setLayout(self.vlayout)
def makeTable(self, current=None): def makeTable(self, current=None):
self.readings = getReadingsFromDB() self.readingTable = QTableWidget(0, 7, self)
self.readingTable = QTableWidget(len(self.readings), 7, self)
self.readingTable.clear() self.readingTable.clear()
self.readingHeaderList = QStringList() self.readingHeaderList = QStringList()
self.readingHeaderList.append(self.trUtf8("Week")) self.readingHeaderList.append(self.trUtf8("Week"))
@ -624,10 +655,12 @@ class ReadingTab(QWidget):
self.readingTable.setSelectionBehavior(QAbstractItemView.SelectRows) self.readingTable.setSelectionBehavior(QAbstractItemView.SelectRows)
self.readingTable.setSelectionMode(QAbstractItemView.SingleSelection) self.readingTable.setSelectionMode(QAbstractItemView.SingleSelection)
selected = None selected = None
self.updateTable()
def updateTable(self): def updateTable(self, semester):
for row in range(len(self.readings)): self.readings = getReadingsFromDB(semester)
rows = len(self.readings)
self.readingTable.setRowCount(rows)
for row in range(rows):
self.addReadingToTable(row) self.addReadingToTable(row)
self.readingTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) self.readingTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
self.readingTable.sortItems(0, Qt.AscendingOrder) self.readingTable.sortItems(0, Qt.AscendingOrder)
@ -731,7 +764,8 @@ class AddReadingDlg(ReadingDlg):
course = getCourseFromDB(getCourseCode(courseFull)) course = getCourseFromDB(getCourseCode(courseFull))
book = getBookWithTitleFromDB(bookTitle) book = getBookWithTitleFromDB(bookTitle)
addNewReadingToDB(week, course, book, chapter, pages, False) global semester
addNewReadingToDB(semester, week, course, book, chapter, pages, False)
reading = ReadingModel(week, course, book, chapter, pages, False) reading = ReadingModel(week, course, book, chapter, pages, False)
table = getMain().reading.readingTable table = getMain().reading.readingTable
@ -838,20 +872,19 @@ class ScheduleTab(QWidget):
self.makeTable() self.makeTable()
vlayout = QVBoxLayout() self.vlayout = QVBoxLayout()
hlayout = QHBoxLayout() self.hlayout = QHBoxLayout()
hlayout.addWidget(self.addScheduleButton) self.hlayout.addWidget(self.addScheduleButton)
hlayout.addWidget(self.deleteScheduleButton) self.hlayout.addWidget(self.deleteScheduleButton)
hlayout.addStretch() self.hlayout.addStretch()
vlayout.addWidget(self.scheduleTable) self.vlayout.addWidget(self.scheduleTable)
vlayout.addLayout(hlayout) self.vlayout.addLayout(self.hlayout)
self.setLayout(vlayout) self.setLayout(self.vlayout)
def makeTable(self, current=None): def makeTable(self, current=None):
self.schedule = getLessonsFromDB()
self.scheduleTable = QTableWidget(12, 5, self) self.scheduleTable = QTableWidget(12, 5, self)
self.scheduleTable.clear() self.scheduleTable.clear()
self.scheduleHorizontalHeaderList = QStringList() self.scheduleHorizontalHeaderList = QStringList()
@ -870,10 +903,12 @@ class ScheduleTab(QWidget):
self.scheduleTable.setSelectionBehavior(QAbstractItemView.SelectItems) self.scheduleTable.setSelectionBehavior(QAbstractItemView.SelectItems)
self.scheduleTable.setSelectionMode(QAbstractItemView.SingleSelection) self.scheduleTable.setSelectionMode(QAbstractItemView.SingleSelection)
selected = None selected = None
self.updateTable()
def updateTable(self): def updateTable(self, semester):
for l in range(len(self.schedule)): self.schedule = getLessonsFromDB(semester)
rows = len(self.schedule)
self.scheduleTable.setRowCount(rows)
for l in range(rows):
self.addLessonToTable(self.schedule[l]) self.addLessonToTable(self.schedule[l])
self.scheduleTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) self.scheduleTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
self.scheduleTable.verticalHeader().setResizeMode(QHeaderView.ResizeToContents) self.scheduleTable.verticalHeader().setResizeMode(QHeaderView.ResizeToContents)
@ -1001,8 +1036,9 @@ class AddScheduleDlg(ScheduleDlg):
course = getCourseFromDB(getCourseCode(courseFull)) course = getCourseFromDB(getCourseCode(courseFull))
global semester
for t in range(fromtime, totime): for t in range(fromtime, totime):
addNewLessonToDB(SemesterModel("fall", 2008), day, t, course, type, room) addNewLessonToDB(semester, day, t, course, type, room)
getMain().schedule.addLessonToTable(ScheduleModel(day, t, course, type, room)) getMain().schedule.addLessonToTable(ScheduleModel(day, t, course, type, room))
self.close() self.close()
@ -1282,10 +1318,136 @@ class BookModel():
return self.edition return self.edition
class SemesterDlg(QDialog):
def __init__(self, parent=None):
super(SemesterDlg, self).__init__(parent)
self.oldLabel = QLabel(self.trUtf8("Earlier semesters:"))
self.newLabel = QLabel(self.trUtf8("New semester:"))
self.newTermLabel = QLabel(self.trUtf8("Term:"))
self.newYearLabel = QLabel(self.trUtf8("Year:"))
global semester, semesters, main
self.oldEdit = QListWidget()
self.oldEdit.addItems(semesters)
self.newTermEdit = QComboBox()
self.newTermEdit.addItems(getMain().getTermList())
self.newYearEdit = QSpinBox()
self.newYearEdit.setRange(2000, 2050)
self.newYearEdit.setSingleStep(1)
self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
layout = QGridLayout()
layout.addWidget(self.oldLabel, 0, 0)
layout.addWidget(self.oldEdit, 0, 1, 1, 2)
layout.addWidget(self.newLabel, 1, 0)
layout.addWidget(self.newTermLabel, 1, 1)
layout.addWidget(self.newTermEdit, 2, 1)
layout.addWidget(self.newYearLabel, 1, 2)
layout.addWidget(self.newYearEdit, 2, 2)
layout.addWidget(self.buttonBox, 3, 0, 1, 3)
layout.setColumnStretch(0, 0)
layout.setColumnStretch(1, 1)
layout.setColumnStretch(2, 1)
self.setLayout(layout)
self.connect(buttonBox, SIGNAL("accepted()"), self, SLOT("accept()"))
self.connect(buttonBox, SIGNAL("rejected()"), self, SLOT("reject()"))
self.setWindowTitle(self.trUtf8("Choose a semester or create a new"))
def accept(self):
pass
class NewSemesterDlg(QDialog):
def __init__(self, parent=None):
super(NewSemesterDlg, self).__init__(parent)
self.termLabel = QLabel(self.trUtf8("Term"))
self.yearLabel = QLabel(self.trUtf8("Year"))
self.termEdit = QComboBox()
self.yearEdit = QSpinBox()
self.termEdit.addItems(getMain().getTermList())
self.yearEdit.setRange(2000, 2050)
self.yearEdit.setSingleStep(1)
self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
layout = QGridLayout()
layout.addWidget(self.termLabel, 0, 0)
layout.addWidget(self.termEdit, 0, 1)
layout.addWidget(self.yearLabel, 1, 0)
layout.addWidget(self.yearEdit, 1, 1)
layout.addWidget(self.buttonBox, 2, 1)
self.setLayout(layout)
self.connect(self.buttonBox, SIGNAL("accepted()"), self, SLOT("accept()"))
self.connect(self.buttonBox, SIGNAL("rejected()"), self, SLOT("reject()"))
self.setWindowTitle(self.trUtf8("New semester"))
def accept(self):
term = unicode(self.termEdit.currentText())
year = self.yearEdit.value()
global semester
semester = SemesterModel(term, year)
addNewSemesterToDB(term, year)
getMain().load(semester)
self.close()
class OpenSemesterDlg(QDialog):
def __init__(self, parent=None):
super(OpenSemesterDlg, self).__init__(parent)
self.semesterList = QListWidget()
semesters = getSemestersFromDB()
semesterlist = QStringList()
for semester in semesters:
semesterlist.append("%s %i" % (semester.getTerm(), semester.getYear()))
self.semesterList.addItems(semesterlist)
self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
layout = QVBoxLayout()
layout.addWidget(self.semesterList)
layout.addStretch()
layout.addWidget(self.buttonBox)
self.setLayout(layout)
self.connect(self.buttonBox, SIGNAL("accepted()"), self, SLOT("accept()"))
self.connect(self.buttonBox, SIGNAL("rejected()"), self, SLOT("reject()"))
self.setWindowTitle(self.trUtf8("Open semester"))
def accept(self):
text = self.semesterList.currentItem().text()
textlist = text.split(' ')
term = textlist[0]
year = textlist[1].toInt()[0]
global semester
semester = SemesterModel(term, year)
semester.setAssignments(getAssignmentsFromDB(semester))
semester.setReadings(getReadingsFromDB(semester))
semester.setLessons(getLessonsFromDB(semester))
print semester.getAssignments()
print semester.getReadings()
print semester.getLessons()
getMain().load(semester)
self.close()
class SemesterModel(): class SemesterModel():
term = "" term = ""
year = 0 year = 0
assignments = []
readings = []
lessons = []
def __init__(self, term, year): def __init__(self, term, year):
self.term = term self.term = term
@ -1297,6 +1459,33 @@ class SemesterModel():
def getYear(self): def getYear(self):
return self.year return self.year
def addAssignment(self, assignment):
self.assignments.append(assignment)
def setAssignments(self, assignments):
self.assignments = assignments
def getAssignments(self):
return self.assignments
def addReading(self, reading):
self.readings.append(reading)
def setReadings(self, readings):
self.readings = readings
def getReadings(self):
return self.readings
def addLesson(self, lesson):
self.lessons.append(lesson)
def setLessons(self, lessons):
self.lessons = lessons
def getLessons(self):
return self.lessons
class CalendarTab(QWidget): class CalendarTab(QWidget):
@ -1324,9 +1513,6 @@ def initNewDB():
initScheduleDB(cursor) initScheduleDB(cursor)
initBookDB(cursor) initBookDB(cursor)
initCourseDB(cursor) initCourseDB(cursor)
initAssignmentInSemester(cursor)
initReadingInSemester(cursor)
initScheduleInSemester(cursor)
initCourseUsesBook(cursor) initCourseUsesBook(cursor)
exitDB(conn) exitDB(conn)
@ -1347,6 +1533,8 @@ def initAssignmentDB(cursor):
number INT, number INT,
description TEXT, description TEXT,
complete TEXT, complete TEXT,
term TEXT,
year INT,
PRIMARY KEY (course, number) PRIMARY KEY (course, number)
) )
''') ''')
@ -1360,6 +1548,8 @@ def initReadingDB(cursor):
chapter TEXT, chapter TEXT,
pages TEXT, pages TEXT,
done BOOLEAN, done BOOLEAN,
term TEXT,
year INT,
PRIMARY KEY (week, course, book) PRIMARY KEY (week, course, book)
) )
''') ''')
@ -1372,6 +1562,8 @@ def initScheduleDB(cursor):
course TEXT, course TEXT,
type TEXT, type TEXT,
room TEXT, room TEXT,
term TEXT,
year INT,
PRIMARY KEY (course, day, time) PRIMARY KEY (course, day, time)
) )
''') ''')
@ -1398,41 +1590,6 @@ def initCourseDB(cursor):
) )
''') ''')
def initAssignmentInSemester(cursor):
cursor.execute('''
CREATE TABLE AssignmentInSemester (
course TEXT,
number INT,
term TEXT,
year INT,
PRIMARY KEY (course, number, term, year)
)
''')
def initReadingInSemester(cursor):
cursor.execute('''
CREATE TABLE ReadingInSemester (
week INT,
course TEXT,
book TEXT,
term TEXT,
year INT,
PRIMARY KEY (week, course, book, term, year)
)
''')
def initScheduleInSemester(cursor):
cursor.execute('''
CREATE TABLE ScheduleInSemester (
course TEXT,
day TEXT,
time INT,
term TEXT,
year INT,
PRIMARY KEY (course, day, time, term, year)
)
''')
def initCourseUsesBook(cursor): def initCourseUsesBook(cursor):
cursor.execute(''' cursor.execute('''
CREATE TABLE CourseUsesBook ( CREATE TABLE CourseUsesBook (
@ -1442,6 +1599,16 @@ def initCourseUsesBook(cursor):
) )
''') ''')
def addNewSemesterToDB(term, year):
cursor, conn = initDB()
cursor.execute('''
INSERT INTO Semester (term, year)
VALUES (?, ?)
''', (term, year))
exitDB(conn)
def addNewAssignmentToDB(semester, datetime, course, number, description, complete): def addNewAssignmentToDB(semester, datetime, course, number, description, complete):
cursor, conn = initDB() cursor, conn = initDB()
@ -1451,16 +1618,13 @@ def addNewAssignmentToDB(semester, datetime, course, number, description, comple
hour = datetime.time().hour() hour = datetime.time().hour()
minute = datetime.time().minute() minute = datetime.time().minute()
timestring = "%02i-%02i-%02i %02i:%02i" % (year, month, day, hour, minute) timestring = "%02i-%02i-%02i %02i:%02i" % (year, month, day, hour, minute)
term = "%s" % semester.getTerm()
year = semester.getYear()
cursor.execute(''' cursor.execute('''
INSERT INTO Assignment (date, course, number, description, complete) INSERT INTO Assignment (date, course, number, description, complete, term, year)
VALUES (datetime(?), ?, ?, ?, ?) VALUES (datetime(?), ?, ?, ?, ?, ?, ?)
''', (timestring, course.getCode(), number, description, complete)) ''', (timestring, course.getCode(), number, description, complete, term, year))
cursor.execute('''
INSERT INTO AssignmentInSemester (course, number, term, year)
VALUES (?, ?, ?, ?)
''', (course.getCode(), number, semester.getTerm(), semester.getYear()))
exitDB(conn) exitDB(conn)
@ -1468,14 +1632,9 @@ def addNewReadingToDB(semester, week, course, book, chapter, pages, done):
cursor, conn = initDB() cursor, conn = initDB()
cursor.execute(''' cursor.execute('''
INSERT INTO Reading (week, course, book, chapter, pages, done) INSERT INTO Reading (week, course, book, chapter, pages, done, term, year)
VALUES (?, ?, ?, ?, ?, ?) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
''', (week, course.getCode(), book.getIsbn(), chapter, pages, done)) ''', (week, course.getCode(), book.getIsbn(), chapter, pages, done, semester.getTerm(), semester.getYear()))
cursor.execute('''
INSERT INTO ReadingInSemester (week, course, book, term, year)
VALUES (?, ?, ?, ?, ?)
''', (week, course, book, semester.getTerm(), semester.getYear()))
exitDB(conn) exitDB(conn)
@ -1483,14 +1642,9 @@ def addNewLessonToDB(semester, day, time, course, type, room):
cursor, conn = initDB() cursor, conn = initDB()
cursor.execute(''' cursor.execute('''
INSERT INTO Lesson (day, time, course, type, room) INSERT INTO Lesson (day, time, course, type, room, term, year)
VALUES (?, ?, ?, ?, ?) VALUES (?, ?, ?, ?, ?, ?, ?)
''', (day, time, course.getCode(), type, room)) ''', (day, time, course.getCode(), type, room, semester.getTerm(), semester.getYear()))
cursor.execute('''
INSERT INTO ScheduleInSemester (course, day, time, term, year)
VALUES (?, ?, ?, ?, ?)
''', (course.getCode(), day, time, semester.getTerm(), semester.getYear()))
exitDB(conn) exitDB(conn)
@ -1524,13 +1678,18 @@ def addNewBookToDB(isbn, title, author, edition):
exitDB(conn) exitDB(conn)
def getAssignmentsFromDB(): def getAssignmentsFromDB(semester):
cursor, conn = initDB() cursor, conn = initDB()
term = "%s" % semester.getTerm()
year = (semester.getYear())
cursor.execute(''' cursor.execute('''
SELECT * SELECT *
FROM Assignment FROM Assignment
''') WHERE term = ?
AND year = ?
''', (term, year))
assignments = [] assignments = []
for row in cursor.fetchall(): for row in cursor.fetchall():
@ -1558,13 +1717,18 @@ def getQDateTime(timestamp):
datetime = QDateTime(date, time) datetime = QDateTime(date, time)
return datetime return datetime
def getReadingsFromDB(): def getReadingsFromDB(semester):
cursor, conn = initDB() cursor, conn = initDB()
term = "%s" % semester.getTerm()
year = semester.getYear()
cursor.execute(''' cursor.execute('''
SELECT * SELECT *
FROM Reading FROM Reading
''') WHERE term = ?
AND year = ?
''', (term, year))
readings = [] readings = []
for row in cursor.fetchall(): for row in cursor.fetchall():
@ -1574,13 +1738,18 @@ def getReadingsFromDB():
return readings return readings
def getLessonsFromDB(): def getLessonsFromDB(semester):
cursor, conn = initDB() cursor, conn = initDB()
term = "%s" % semester.getTerm()
year = semester.getYear()
cursor.execute(''' cursor.execute('''
SELECT * SELECT *
FROM Lesson FROM Lesson
''') WHERE term = ?
AND year = ?
''', (term, year))
lessons = [] lessons = []
for row in cursor.fetchall(): for row in cursor.fetchall():
@ -1703,6 +1872,22 @@ def getBookWithTitleFromDB(booktitle):
return book return book
def getSemestersFromDB():
cursor, conn = initDB()
cursor.execute('''
SELECT *
FROM Semester
''')
semesters = []
for row in cursor.fetchall():
semesters.append(SemesterModel(row[0], row[1]))
exitDB(conn)
return semesters
def updateAssignmentCompletion(coursecode, num, completion): def updateAssignmentCompletion(coursecode, num, completion):
cursor, conn = initDB() cursor, conn = initDB()