from django.shortcuts import render from django.http import HttpResponse, HttpResponseRedirect, JsonResponse from django.core import serializers from .forms import loginForm from .models import Question, AnswerRecord, Scores from datetime import datetime, timedelta import json # Create your views here. def index(request): # homepage if request.method == 'POST': lForm = loginForm(request.POST) if lForm.is_valid(): request.session['username'] = lForm.cleaned_data['username'].strip() request.session['mobile'] = lForm.cleaned_data['mobile'] request.session['department'] = lForm.cleaned_data['department'] request.session['address'] = lForm.cleaned_data['address'] user_score = Scores() if user_score.find_score(mobile_number=request.session['mobile']): return render(request, 'dati/directPage.html', {'alertMsg': '您已经答过题了。', 'dirLink': '/cq/dati'}) else: request.session['time'] = 0 # 答题次数 request.session['correct'] = 0 question_list = [] request.session['used_question_list'] = question_list request.session['start_time'] = str(datetime.now()) return HttpResponseRedirect('/cq/dati/dati') else: return render(request, 'dati/index.html', {'form': loginForm}) def dati(request): # dati page quest = Question if request.session.get('mobile') is None: message = '请输入手机号码和姓名开始答题' return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'}) start_time = datetime.strptime(request.session['start_time'][0:19], '%Y-%m-%d %H:%M:%S') time_delta_since_last = (datetime.now()-start_time).total_seconds() if time_delta_since_last > 120: user_score = Scores() user_score.user = request.session['username'] user_score.mobile = request.session['mobile'] user_score.department = request.session['department'] user_score.score = request.session['correct'] user_score.address = request.session['address'] user_score.total_time = 1000 user_score.add_score() message = '你已经用完了2分钟答题时间。本次答题,你答对了' + str(request.session['correct']) + '题。' del request.session['mobile'] return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'}) if request.method == 'POST': request.session['time'] = request.session['time'] + 1 quest.ID = request.session['question_id'] quest = Question.search_id(quest) your_answer = request.POST['answer'] answerRecord = AnswerRecord answerRecord.user = request.session['username'] answerRecord.mobile = request.session['mobile'] answerRecord.department = request.session['department'] answerRecord.question = quest[0].q if int(your_answer) == quest[0].answer: answerRecord.result = '正确' request.session['correct'] = request.session['correct'] + 1 else: answerRecord.result = '错误' # 用户的答案 if your_answer == '1': answerRecord.your_answer = quest[0].a1 elif your_answer == '2': answerRecord.your_answer = quest[0].a2 elif your_answer == '3': answerRecord.your_answer = quest[0].a3 elif your_answer == '4': answerRecord.your_answer = quest[0].a4 # 记录正确答案 if quest[0].answer == 1: answerRecord.correct_answer = quest[0].a1 elif quest[0].answer == 2: answerRecord.correct_answer = quest[0].a2 elif quest[0].answer == 3: answerRecord.correct_answer = quest[0].a3 elif quest[0].answer == 4: answerRecord.correct_answer = quest[0].a4 AnswerRecord.add_record(answerRecord) if request.session['time'] >= 10: user_score = Scores() user_score.user = request.session['username'] user_score.mobile = request.session['mobile'] user_score.department = request.session['department'] user_score.score = request.session['correct'] user_score.address = request.session['address'] user_score.total_time = time_delta_since_last user_score.add_score() message = '答题结束本次答题,你答对了'+str(request.session['correct'])+'题。共用时'+str(round(user_score.total_time))+'秒。' del request.session['mobile'] return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'}) else: if request.session['correct'] == 5: message = '再接再厉,奖品离你越来越近了哦!' return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati/dati'}) else: return HttpResponseRedirect('/cq/dati/dati') if request.method == 'GET': quest = Question.get_random_question()[0] request.session['question_id'] = quest.ID used_question_list = request.session['used_question_list'] while True: if quest.ID in used_question_list: quest = Question.get_random_question()[0] request.session['question_id'] = quest.ID else: used_question_list.append(quest.ID) break return render(request, 'dati/dati.html', {'question': quest, 'start_time': str(start_time)}) def history(request): ansRecord = AnswerRecord ansRecord.user = request.session['username'] ansRecord.mobile = request.session['mobile'] ansRecord = AnswerRecord.get_record(ansRecord) return render(request, 'dati/history.html', {'history': ansRecord}) def ranking(request): ranking_list = Scores.get_score_list() for r in ranking_list: if r.total_time == 1000: r.total_time = 120 return render(request, 'dati/ranking.html', context={'ranking_list': ranking_list, 'title': '排行榜'}) def ranking_json(request): ranking_list = Scores.get_score_list() ranking_list_json = json.dumps(list(ranking_list.values('user', 'mobile', 'department', 'score'))) return JsonResponse(ranking_list_json, safe=False)