27 lines
707 B
Python
27 lines
707 B
Python
from banjo.models import Model, StringField, IntegerField
|
|
from fuzzywuzzy import fuzz
|
|
|
|
class Riddle(Model):
|
|
question = StringField()
|
|
answer = StringField()
|
|
guesses = IntegerField()
|
|
correct = IntegerField()
|
|
MIN_SIMILARITY = 80
|
|
|
|
def to_dict(self):
|
|
return {
|
|
"id": self.id,
|
|
"question": self.question,
|
|
"guesses": self.guesses,
|
|
"correct": self.correct,
|
|
}
|
|
|
|
def check_guess(self, guess):
|
|
similarity = fuzz.ratio(guess, self.answer)
|
|
is_correct = (similarity >= self.MIN_SIMILARITY)
|
|
self.guesses += 1
|
|
if is_correct:
|
|
self.correct+= 1
|
|
self.save()
|
|
return is_correct
|