42 lines
974 B
Python
42 lines
974 B
Python
|
from database import fetch_question, update_correct
|
||
|
|
||
|
class Question(object):
|
||
|
"""
|
||
|
This is the throwaway container types for questions.
|
||
|
It basically stores the question and the answer and
|
||
|
handles the database access.
|
||
|
|
||
|
One can fetch a (semi random (see database.fetch_question))
|
||
|
question from the database using Question.fetch()
|
||
|
and use submit_question() to both update the database and
|
||
|
check whether the answer was correct.
|
||
|
"""
|
||
|
__slots__ = ["question", "answer"]
|
||
|
|
||
|
def __init__(self, question, answer):
|
||
|
self.question = question
|
||
|
self.answer = answer
|
||
|
|
||
|
@classmethod
|
||
|
def fetch(cls):
|
||
|
data = fetch_question()
|
||
|
return cls(data[0], data[1])
|
||
|
|
||
|
def submit_answer(self, answer):
|
||
|
"""
|
||
|
Check whether ``answer`` is correct,
|
||
|
update the database accordingly and
|
||
|
return ``True`` if the answer was correct,
|
||
|
``False`` otherwise.
|
||
|
"""
|
||
|
|
||
|
correct = -1
|
||
|
if(answer == self.answer):
|
||
|
correct = 1
|
||
|
|
||
|
update_correct(self.question, correct)
|
||
|
|
||
|
return correct > 0
|
||
|
|
||
|
|