Initial commit
This commit is contained in:
commit
436543c851
|
@ -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
|
|
@ -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,
|
||||
}
|
Loading…
Reference in New Issue