Ommodulering

This commit is contained in:
Tiril Anette Langfeldt Rødland 2008-06-05 11:30:13 +00:00
parent 14fa195810
commit ded36a2aa3
8 changed files with 214 additions and 125 deletions

View File

@ -62,7 +62,8 @@ class AssignmentDlg(QDialog):
deliveredLabel = QLabel(self.trUtf8("De&livered"))
dateEdit = QLineEdit()
courseEdit = QLineEdit()
courseEdit = QComboBox()
courseEdit.addItems(MainWindow.getCoursesString())
descriptionEdit = QLineEdit()
availableEdit = QCheckBox()
begunEdit = QCheckBox()

Binary file not shown.

View File

@ -53,3 +53,46 @@ class AddCourseDlg(CourseDlg):
self.setWindowTitle(self.trUtf8("Add new course"))
def accept(self):
courseCode = unicode(self.codeEdit.text())
courseTitle = unicode(self.titleEdit.text())
courseShort = unicode(self.shortEdit.text())
course = CourseModel(courseCode, courseTitle, courseShort)
class CourseModel():
code = ""
title = ""
short = ""
full = ""
def __init__(self, code, title, short):
self.code = code
self.title = title
self.short = short
setFull(code, title)
def setCode(self, code):
self.code = code
def getCode(self):
return self.code
def setTitle(self, title):
self.title = title
def getTitle(self):
return self.title
def setShort(self, short):
self.short = short
def getShort(self):
return self.short
def setFull(self, code, title):
self.full = code + ' ' + title
def getFull(self):
return self.full

Binary file not shown.

254
db.py
View File

@ -16,137 +16,153 @@ from calendar import *
from book import *
from course import *
def initDB():
conn = sqlite.connect('egon.db')
curs = conn.cursor()
return curs, conn
def initNewDB():
cursor, conn = initDB()
initAssignmentDB(cursor)
initReadingDB(cursor)
initScheduleDB(cursor)
initBookDB(cursor)
initCourseDB(cursor)
exitDB(conn)
def initAssignmentDB(cursor):
cursor.execute('''
CREATE TABLE Assignment (
aid INTEGER PRIMARY KEY,
date TEXT,
description TEXT,
available BOOLEAN,
begun BOOLEAN,
finished BOOLEAN,
delivered BOOLEAN
)
''')
class DB:
def initReadingDB(cursor):
cursor.execute('''
CREATE TABLE Reading (
rid INTEGER PRIMARY KEY,
week TEXT,
chapter TEXT,
pages TEXT
)
''')
def initDB():
conn = sqlite.connect('egon.db')
curs = conn.cursor()
return curs, conn
def initNewDB():
cursor, conn = initDB()
initAssignmentDB(cursor)
initReadingDB(cursor)
initScheduleDB(cursor)
initBookDB(cursor)
initCourseDB(cursor)
exitDB(conn)
def initAssignmentDB(cursor):
cursor.execute('''
CREATE TABLE Assignment (
aid INTEGER PRIMARY KEY,
date TEXT,
description TEXT,
available BOOLEAN,
begun BOOLEAN,
finished BOOLEAN,
delivered BOOLEAN
)
''')
def initScheduleDB(cursor):
cursor.execute('''
CREATE TABLE Lesson (
lid INTEGER PRIMARY KEY,
day TEXT,
fromtime TEXT,
totime TEXT,
type TEXT,
room TEXT
)
''')
def initReadingDB(cursor):
cursor.execute('''
CREATE TABLE Reading (
rid INTEGER PRIMARY KEY,
week TEXT,
chapter TEXT,
pages TEXT
)
''')
def initBookDB(cursor):
cursor.execute('''
CREATE TABLE Book (
isbn TEXT PRIMARY KEY,
title TEXT,
author TEXT,
edition INTEGER
)
''')
def initScheduleDB(cursor):
cursor.execute('''
CREATE TABLE Lesson (
lid INTEGER PRIMARY KEY,
day TEXT,
fromtime TEXT,
totime TEXT,
type TEXT,
room TEXT
)
''')
def initCourseDB(cursor):
cursor.execute('''
CREATE TABLE Course (
code TEXT PRIMARY KEY,
title TEXT,
short TEXT
)
''')
def initAssignmentInCourse(cursor):
cursor.execute('''
CREATE TABLE assignmentInCourse (
assignment INTEGER,
course INTEGER
)
''')
def initReadingInCourse(cursor):
cursor.execute('''
CREATE TABLE readingInCourse (
reading INTEGER,
course INTEGER
)
''')
def initLessonInCourse(cursor):
cursor.execute('''
CREATE TABLE lessonInCourse (
lesson INTEGER,
course INTEGER
)
''')
def initBookDB(cursor):
cursor.execute('''
CREATE TABLE Book (
isbn TEXT PRIMARY KEY,
title TEXT,
author TEXT,
edition INTEGER
)
''')
def initCourseUsesBook(cursor):
cursor.execute('''
CREATE TABLE courseUsesBook (
course INTEGER,
book TEXT
)
''')
def initCourseDB(cursor):
cursor.execute('''
CREATE TABLE Course (
code TEXT PRIMARY KEY,
title TEXT,
short TEXT
)
''')
def addNewBook(isbn, title, author, edition, course):
cursor, conn = initDB()
def initAssignmentInCourse(cursor):
cursor.execute('''
CREATE TABLE assignmentInCourse (
assignment INTEGER,
course INTEGER
)
''')
bookQuery = '''
INSERT INTO Book
VALUES (%s, %s, %s, %i)
''' % (isbn, title, author, edition)
courseUsesBookQuery = '''
INSERT INTO courseUsesBook
VALUES (%i, %s)
''' % (course, isbn)
def initReadingInCourse(cursor):
cursor.execute('''
CREATE TABLE readingInCourse (
reading INTEGER,
course INTEGER
)
''')
cursor.execute(bookQuery)
cursor.execute(courseUsesBookQuery)
def initLessonInCourse(cursor):
cursor.execute('''
CREATE TABLE lessonInCourse (
lesson INTEGER,
course INTEGER
)
''')
def initCourseUsesBook(cursor):
cursor.execute('''
CREATE TABLE courseUsesBook (
course INTEGER,
book TEXT
)
''')
exitDB(conn)
def addNewBook(isbn, title, author, edition, course):
cursor, conn = initDB()
bookQuery = '''
INSERT INTO Book
VALUES (%s, %s, %s, %i)
''' % (isbn, title, author, edition)
courseUsesBookQuery = '''
INSERT INTO courseUsesBook
VALUES (%i, %s)
''' % (course, isbn)
cursor.execute(bookQuery)
cursor.execute(courseUsesBookQuery)
exitDB(conn)
def addNewCourse(code, title, short):
cursor, conn = initDB()
def addNewCourse(code, title, short):
cursor, conn = initDB()
courseQuery = '''
INSERT INTO Course
VALUES (%s, %s, %s)
''' % (code, title, short)
courseQuery = '''
INSERT INTO Course
VALUES (%s, %s, %s)
''' % (code, title, short)
cursor.execute(courseQuery)
cursor.execute(courseQuery)
exitDB(conn)
def exitDB(conn):
conn.commit()
conn.close()
exitDB(conn)
def getCourses():
cursor, conn = initDB()
courseQuery = '''
SELECT *
FROM Course
'''
cursor.execute(courseQuery)
courses = []
for row in cursor.fetchall():
courses.append(CourseModel(row[0], row[1], row[2]))
def exitDB(conn):
conn.commit()
conn.close()
initNewDB()

BIN
db.pyc

Binary file not shown.

39
main.py
View File

@ -15,17 +15,26 @@ from schedule import *
from calendar import *
from book import *
from course import *
from db import *
__version__ = "0.0.1"
class MainWindow(QMainWindow):
courses = []
coursesString = []
books = []
booksString = []
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
# The program name
self.title = "Egon"
# The database
self.db = DB()
# The tabs
assignment = AssignmentTab()
reading = ReadingTab()
@ -106,6 +115,9 @@ class MainWindow(QMainWindow):
editToolbar.setObjectName("EditToolBar")
self.addActions(editToolbar, (editAddCourse, editAddBook, None, editShowCalendar))
self.courses = self.db.getCourses()
makeCoursesString()
def addCourse(self):##, code, title, short):
self.acdlg = AddCourseDlg()
self.acdlg.show()
@ -149,9 +161,9 @@ class MainWindow(QMainWindow):
def helpAbout(self):
QMessageBox.about(self, "About %s" % self.title, u"""<b>%s</b> v %s
<p>Copyright &copy; 2008 Tiril Anette Langfeldt Rødland. All rights reserved.
<p>This application is mainly for use by students, and can be used to keep track of assignments, planned readings and the schedule.
<p>Python %s - Qt %s - PyQt %s on %s""" % (self.title, __version__, platform.python_version(), QT_VERSION_STR, PYQT_VERSION_STR, platform.system()))
<p>Copyright &copy; 2008 Tiril Anette Langfeldt Rødland. All rights reserved.
<p>This application is mainly for use by students, and can be used to keep track of assignments, planned readings and the schedule.
<p>Python %s - Qt %s - PyQt %s on %s""" % (self.title, __version__, platform.python_version(), QT_VERSION_STR, PYQT_VERSION_STR, platform.system()))
def addActions(self, target, actions):
for action in actions:
@ -206,8 +218,25 @@ class MainWindow(QMainWindow):
def refreshTable(self):
pass
def addNewCourse(self, course):
self.courses.append(course)
db.addNewCourse(course.getCode(), course.getTitle(), course.getShort())
self.addNewCourseString(course)
class Model():
def getCourses(self):
return self.courses
def addNewCourseString(self, course):
self.coursesString.append(course.getFull())
def makeCoursesString(self, courses):
for c in courses:
addNewCourseString(course)
def getCoursesString(self):
return self.coursesString
class Model:
def __init__(self, parent=None):
self.assignmentModel = AssignmentModel()

BIN
main.pyc

Binary file not shown.