Initial commit

This commit is contained in:
Anonymous 2025-01-29 18:11:32 -05:00 committed by Chris Proctor
commit 436543c851
2 changed files with 52 additions and 0 deletions

26
app/models.py Normal file
View File

@ -0,0 +1,26 @@
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, with_answer=True):
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

26
app/views.py Normal file
View File

@ -0,0 +1,26 @@
from banjo.urls import route_get, route_post
from banjo.http import NotFound
from app.models import Riddle
@route_get('all', args={})
def list_riddles(params):
riddles = Riddle.objects.all()
return {'riddles': [riddle.to_dict() for riddle in riddles]}
@route_post('new', args={'question': str, 'answer': str})
def create_riddle(params):
riddle = Riddle.from_dict(params)
riddle.save()
return riddle.to_dict()
@route_post('guess', args={'id': int, "answer": str})
def guess_answer(params):
try:
riddle = Riddle.objects.get(id=params['id'])
except Riddle.DoesNotExist:
raise NotFound("Riddle not found")
correct = riddle.check_guess(params['answer'])
return {
"guess": params['answer'],
"correct": correct,
}