blob: 1e2e8745fdefa774ed52f0e1d4276c0dca69535b [file] [log] [blame]
import json
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
from . import utils
from .models import TutorialUser, TutorialEvent, Subscriber
__author__ = 'thatcher'
def endpoint(request):
"""
api endpoint for saving events
"""
return render_to_response("base/home.html", {
}, context_instance=RequestContext(request))
def testpage(request):
"""
testing saving stuff on a users' session
"""
username = request.session.get('username', 'unknown')
return render_to_response("tutorial/testpage.html", {
# "form": form,
'username': username
}, context_instance=RequestContext(request))
def homepage(request):
username = request.session.get('username', 'unknown')
return render_to_response("tutorial/home.md", {
# "form": form,
'username': username
}, context_instance=RequestContext(request))
@csrf_exempt
def api(request):
"""
saving the user's events
"""
# if request.method == "POST":
# user = utils.get_user_for_request(request)
# event = TutorialEvent.objects.create(
# user=user,
# type=request.POST.get('type', TutorialEvent.NONE),
# question=request.POST.get('question', None),
# command=request.POST.get('command', "")[:79],
# feedback=request.POST.get('feedback', ""),
# )
print("api method in views.py called")
return HttpResponse('')
def subscribe(request):
"""
Save the users' email. -- Mainly / only meant for notifying them of the availability of
a next tutorial
"""
if request.POST:
user = utils.get_user_for_request(request)
email = request.POST.get('email', None)
from_level = request.POST.get('from_level', None)
try:
subscriber = Subscriber.objects.create(
user=user, email=email, from_level=from_level)
Subscriber.save(subscriber)
return HttpResponse('0', status=200)
except:
return HttpResponse('1', status=200)
else:
return HttpResponse('1', status=200)
def stats(request):
users = {}
users['started'] = TutorialUser.objects.all().count()
users['completed'] = TutorialEvent.objects.values_list('user', 'type').filter(type='complete').distinct().count()
i = 0
answered = {}
while i < 9:
number = TutorialEvent.objects.values_list('user', 'type', 'question').filter(type='next', question=i).distinct().count()
answered[i] = number
i = i + 1
# Append the completed, because question 9 has no 'next'
answered[9] = users['completed']
# find which question people look for the answer
i = 0
peeks = {}
while i < 10:
number = TutorialEvent.objects.values_list('user', 'type', 'question').filter(type='peek', question=i).distinct().count()
peeks[i] = number
i = i + 1
outputformat = request.GET.get("format", None)
if outputformat:
response = {}
response['users'] = users
response['peeks'] = peeks
response['answered'] = answered
jsonresponse = json.dumps(response)
return HttpResponse(jsonresponse, mimetype="application/json")
return render_to_response("tutorial/stats.html", {
'users': users,
'peeks': peeks,
'answered': answered
}, context_instance=RequestContext(request))