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'] request.session['username'] = 'dati2 fake username' request.session['mobile'] = '13000001111' request.session['department'] = 'dati2 fake department' request.session['address'] = 'dati2 fake address' # user_score = Scores() # if user_score.find_score(mobile_number=request.session['mobile']): # return render(request, 'dati/directPage.html', {'alertMsg': '您已经答过题了。', 'dirLink': '/cq/dati'}) 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: request.session.flush() 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))+'秒。' if request.session['correct'] == 10: message = '您完成答题,您答对了10题。答题完成界面请拍照保留后,至前台领取活动宣传品一份。' else: message = '您完成答题,您答对了' + str(request.session['correct']) + '题。' del request.session['mobile'] return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'}) else: if request.session['correct'] == 50: 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)