123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- 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)
|