got things basically working
This commit is contained in:
parent
d9f52e3860
commit
191ebc3285
@ -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'),
|
||||
)
|
||||
|
52
mmg/views.py
52
mmg/views.py
@ -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")
|
||||
|
@ -16,3 +16,6 @@
|
||||
padding-top: 30px;
|
||||
}
|
||||
|
||||
.wrong {
|
||||
background: red;
|
||||
}
|
||||
|
@ -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);
|
||||
});
|
@ -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>
|
||||
<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>
|
||||
{{ form.first }}
|
||||
{{ form.operation }}
|
||||
{{ form.second }}
|
||||
{{ form.answer }}
|
||||
<input type="submit" name="check" value="check"/>
|
||||
</form>
|
||||
</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>
|
||||
|
Loading…
Reference in New Issue
Block a user