1 from django
.shortcuts
import render_to_response
2 from django
.http
import HttpResponseRedirect
, HttpResponse
, HttpResponseBadRequest
, HttpResponseNotAllowed
, Http404
, HttpResponseForbidden
3 from django
.contrib
.auth
import authenticate
, login
, logout
4 from django
.contrib
.auth
.models
import User
5 from django
.contrib
.auth
.decorators
import login_required
6 from ochimeru
.cards
.models
import Card
, CardStatus
13 if not request
.user
.is_authenticated():
14 return HttpResponseRedirect('/login')
16 levels
= [x
['level'] for x
in CardStatus
.objects
.filter(user
=request
.user
).values('level').distinct()]
17 if 0 not in levels
: levels
.append(0)
19 levels
= range(min(levels
), max(levels
)+1)
22 return render_to_response('level.html', {
27 def level(request
, level
):
28 set = [x
.card
for x
in CardStatus
.objects
.filter(user
=request
.user
, level
=level
, is_current
=True)]
30 for c
in Card
.objects
.order_by('?'):
32 if len(set) >= WORKING_SET_SIZE
: break
34 status
= CardStatus
.objects
.filter(user
=request
.user
, card
=c
)
36 if status
and status
[0].level
== level
:
37 status
[0].is_current
= True
41 elif not status
and int(level
) == 0:
42 CardStatus
.objects
.create(user
=request
.user
, card
=c
, is_current
=True, level
=0)
46 card
= random
.choice(set)
47 return HttpResponseRedirect('/level/%s/%d' % (level
, card
.id))
49 return HttpResponseRedirect('/')
53 def card(request
, level
, card_id
):
54 card
= Card
.objects
.get(pk
=card_id
)
56 return render_to_response('card.html', {
63 def answer(request
, level
, card_id
):
64 card
= Card
.objects
.get(pk
=card_id
)
66 return render_to_response('answer.html', {
71 def check(request
, level
, card_id
):
72 card
= Card
.objects
.get(pk
=card_id
)
73 status
= CardStatus
.objects
.get(card
=card
, user
=request
.user
)
75 if 'correct' in request
.GET
:
83 return HttpResponseRedirect('/level/%s/' % level
)
86 def login_user(request
):
88 username
= request
.POST
['user']
89 password
= request
.POST
['pwd']
91 return render_to_response('login.html')
93 user
= authenticate(username
=username
, password
=password
)
96 return render_to_response('login.html', {
97 'error_message': _('Unknown user or wrong password'),
102 return HttpResponseRedirect('/')