Source code for models.homeworks
from models.base_model import BaseModel, db_factory_func
[docs]class HomeworksModel(BaseModel):
"""
Implements the homeworks model\n
Keeps track of homeworks and their details but owner of homework is unknown
"""
def __init__(self, init_table=False):
super().__init__("homeworks", {
"id": "SERIAL PRIMARY KEY",
"crn": "INT ", # TODO REFERENCES courses(crn)
"name": "VARCHAR(80) NOT NULL",
"description": "VARCHAR(500)",
"deadline": "CHAR(10)", # TODO: YYYY-MM-DD
"created_by": "CHAR(9) REFERENCES student(id)"
}, init_table=init_table)
[docs] def addHomework(self, data):
"""
Adds new homework test
"""
return self.create(data=data)
[docs] def listHomeworks(self, data):
"""
Returns a dictionary of homeworks by course identities
"""
return self.find(return_cols=["id", "crn"])
[docs] def changeHomework(self, hwid, data):
"""
Alters homework information by id
"""
self.update(query="id = %i" % hwid, data=data)
[docs] def removeHomework(self, data):
"""
Removes homework by id
"""
return self.delete(data)
[docs] @db_factory_func
def getLastHwCreatedById(self, conn, data):
"""
Returns the last homework's id of given student. Used for simultenously adding homework to student
:param data: student_id
"""
return conn.execute('''SELECT id from homeworks WHERE created_by = '%s'
ORDER BY id DESC LIMIT 1''' % data)
[docs]class HomeworksOfStudentModel(BaseModel):
"""
Implements the homeworks of student model\n
Allows us to see which one has which homeworks
"""
def __init__(self, init_table=False):
super().__init__("hwofstudents", {
"student_id": '''CHAR(9) REFERENCES student(id)
ON DELETE CASCADE ON UPDATE CASCADE''',
"homework_id": "INT"
}, init_table=init_table)
[docs] def addHomeworkOfStudent(self, data):
return self.create(data=data)
[docs] @db_factory_func
def showHomeworks(self, conn, data):
"""
Shows homeworks of specific student
:param data: Student information
"""
return conn.execute('''SELECT homework_id, crn, name,
description, deadline FROM homeworks
JOIN hwofstudents
ON(homeworks.id=homework_id)
WHERE student_id='%s'
ORDER BY homework_id DESC LIMIT 4 ''' % data)
[docs] @db_factory_func
def removeStudentsHomework(self, conn, data):
conn.execute('''DELETE FROM hwofstudents WHERE student_id = '%(sid)s'
AND homework_id = %(homework_id)i''' % data)