got things basically working

This commit is contained in:
Stephen McQuay 2013-04-23 22:48:16 -07:00
parent d9f52e3860
commit 191ebc3285
5 changed files with 88 additions and 31 deletions

View File

@ -7,5 +7,6 @@ from django.conf.urls import patterns, url
urlpatterns = patterns(
'',
url(r'^$', 'mmg.views.home', name='home'),
url(r'^answer/$', 'mmg.views.answer', name='answer'),
url(r'^api/v0/attempt/$', 'mmg.views.attempt', name='attempt'),
url(r'^api/v0/problem/$', 'mmg.views.problem', name='problem'),
)

View File

@ -1,6 +1,7 @@
import json
import random
from django.http import HttpResponseRedirect
from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse
from django.shortcuts import render
@ -9,7 +10,7 @@ from mmg.forms import NumberForm
MAX = 12
def home(request):
def _generate_problem():
operation = random.choice(['+', '-'])
first = random.choice(range(MAX))
if operation == '-':
@ -19,23 +20,42 @@ def home(request):
second = random.choice(range(first))
else:
second = random.choice(range(MAX))
form = NumberForm({
return {
'first': first,
'operation': operation,
'second': second,
})
return render(
request,
'index.html',
{
'form': form,
}
)
}
def answer(request):
form = NumberForm(request.POST or None)
print(form)
if form.is_valid():
print(form.cleaned_data)
return HttpResponseRedirect(reverse('mmg.views.home'))
def _validate_solution(a):
print a
f = int(a['first'])
o = a['operation']
s = int(a['second'])
if a['answer'] == '':
g = 0
else:
g = int(a['answer'])
r = False
if o == '+':
r = bool(f + s == g)
else:
r = bool(f - s == g)
return r
def home(request):
return render(request, 'index.html')
def attempt(request):
d = request.POST.dict()
return HttpResponse(
json.dumps({'status': _validate_solution(d)}),
content_type="application/json")
def problem(request):
return HttpResponse(
json.dumps(_generate_problem()),
content_type="application/json")

View File

@ -16,3 +16,6 @@
padding-top: 30px;
}
.wrong {
background: red;
}

View File

@ -0,0 +1,36 @@
function update_board(f, o, s) {
$("#first").text(f);
$("#operation").text(o);
$("#second").text(s);
}
function new_problem() {
$.get("/api/v0/problem/", function(d) {
update_board(d["first"], d["operation"], d["second"]);
$("#answer").val("");
})
}
function deal_with_answer(e) {
var data = {
"first": $("#first").text(),
"operation": $("#operation").text(),
"second": $("#second").text(),
"answer": $("#answer").val(),
};
console.log(data);
$.post("/api/v0/attempt/", data, function(d) {
if(d["status"]) {
$("#content").removeClass("wrong");
new_problem();
}
else {
$("#content").addClass("wrong");
}
});
}
$(function() {
new_problem();
$("#check").click(deal_with_answer);
});

View File

@ -7,21 +7,18 @@
</head>
<body>
<section id="content">
<form method="post" action="{% url 'mmg.views.answer' %}">
{% csrf_token %}
<div class="number question">
<span class="number" id="first">{{ form.first.value }}</span>
<span class="number" id="operation">{{ form.operation.value }}</span>
<span class="number" id="second">{{ form.second.value }}</span>
</div>
{{ form.first }}
{{ form.operation }}
{{ form.second }}
{{ form.answer }}
<input type="submit" name="check" value="check"/>
</form>
<div class="number question">
<span class="number" id="first">0</span>
<span class="number" id="operation">+</span>
<span class="number" id="second">0</span>
</div>
<div class="number answer">
<input id="answer" type="number" size="2" class="number"></div>
<input id="check" type="submit" name="check" value="check"/>
</div>
</section>
<script src="/static/jquery-2.0.0.min.js"></script>
<script src="/static/django-csrf.js"></script>
<script src="/static/math.js"></script>
</body>
</html>