views.py 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. from django.shortcuts import render
  2. from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
  3. from django.core import serializers
  4. from .forms import loginForm
  5. from .models import Question, AnswerRecord, Scores
  6. from datetime import datetime, timedelta
  7. import json
  8. # Create your views here.
  9. def index(request):
  10. # homepage
  11. if request.method == 'POST':
  12. lForm = loginForm(request.POST)
  13. if lForm.is_valid():
  14. request.session['username'] = lForm.cleaned_data['username'].strip()
  15. request.session['mobile'] = lForm.cleaned_data['mobile']
  16. request.session['department'] = lForm.cleaned_data['department']
  17. request.session['address'] = lForm.cleaned_data['address']
  18. user_score = Scores()
  19. if user_score.find_score(mobile_number=request.session['mobile']):
  20. return render(request, 'dati/directPage.html', {'alertMsg': '您已经答过题了。', 'dirLink': '/cq/dati'})
  21. else:
  22. request.session['time'] = 0 # 答题次数
  23. request.session['correct'] = 0
  24. question_list = []
  25. request.session['used_question_list'] = question_list
  26. request.session['start_time'] = str(datetime.now())
  27. return HttpResponseRedirect('/cq/dati/dati')
  28. else:
  29. return render(request, 'dati/index.html', {'form': loginForm})
  30. def dati(request):
  31. # dati page
  32. quest = Question
  33. if request.session.get('mobile') is None:
  34. message = '请输入手机号码和姓名开始答题'
  35. return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'})
  36. start_time = datetime.strptime(request.session['start_time'][0:19], '%Y-%m-%d %H:%M:%S')
  37. time_delta_since_last = (datetime.now()-start_time).total_seconds()
  38. if time_delta_since_last > 120:
  39. user_score = Scores()
  40. user_score.user = request.session['username']
  41. user_score.mobile = request.session['mobile']
  42. user_score.department = request.session['department']
  43. user_score.score = request.session['correct']
  44. user_score.address = request.session['address']
  45. user_score.total_time = 1000
  46. user_score.add_score()
  47. message = '你已经用完了2分钟答题时间。本次答题,你答对了' + str(request.session['correct']) + '题。'
  48. del request.session['mobile']
  49. return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'})
  50. if request.method == 'POST':
  51. request.session['time'] = request.session['time'] + 1
  52. quest.ID = request.session['question_id']
  53. quest = Question.search_id(quest)
  54. your_answer = request.POST['answer']
  55. answerRecord = AnswerRecord
  56. answerRecord.user = request.session['username']
  57. answerRecord.mobile = request.session['mobile']
  58. answerRecord.department = request.session['department']
  59. answerRecord.question = quest[0].q
  60. if int(your_answer) == quest[0].answer:
  61. answerRecord.result = '正确'
  62. request.session['correct'] = request.session['correct'] + 1
  63. else:
  64. answerRecord.result = '错误'
  65. # 用户的答案
  66. if your_answer == '1':
  67. answerRecord.your_answer = quest[0].a1
  68. elif your_answer == '2':
  69. answerRecord.your_answer = quest[0].a2
  70. elif your_answer == '3':
  71. answerRecord.your_answer = quest[0].a3
  72. elif your_answer == '4':
  73. answerRecord.your_answer = quest[0].a4
  74. # 记录正确答案
  75. if quest[0].answer == 1:
  76. answerRecord.correct_answer = quest[0].a1
  77. elif quest[0].answer == 2:
  78. answerRecord.correct_answer = quest[0].a2
  79. elif quest[0].answer == 3:
  80. answerRecord.correct_answer = quest[0].a3
  81. elif quest[0].answer == 4:
  82. answerRecord.correct_answer = quest[0].a4
  83. AnswerRecord.add_record(answerRecord)
  84. if request.session['time'] >= 10:
  85. user_score = Scores()
  86. user_score.user = request.session['username']
  87. user_score.mobile = request.session['mobile']
  88. user_score.department = request.session['department']
  89. user_score.score = request.session['correct']
  90. user_score.address = request.session['address']
  91. user_score.total_time = time_delta_since_last
  92. user_score.add_score()
  93. message = '答题结束本次答题,你答对了'+str(request.session['correct'])+'题。共用时'+str(round(user_score.total_time))+'秒。'
  94. del request.session['mobile']
  95. return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'})
  96. else:
  97. if request.session['correct'] == 5:
  98. message = '再接再厉,奖品离你越来越近了哦!'
  99. return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati/dati'})
  100. else:
  101. return HttpResponseRedirect('/cq/dati/dati')
  102. if request.method == 'GET':
  103. quest = Question.get_random_question()[0]
  104. request.session['question_id'] = quest.ID
  105. used_question_list = request.session['used_question_list']
  106. while True:
  107. if quest.ID in used_question_list:
  108. quest = Question.get_random_question()[0]
  109. request.session['question_id'] = quest.ID
  110. else:
  111. used_question_list.append(quest.ID)
  112. break
  113. return render(request, 'dati/dati.html', {'question': quest, 'start_time': str(start_time)})
  114. def history(request):
  115. ansRecord = AnswerRecord
  116. ansRecord.user = request.session['username']
  117. ansRecord.mobile = request.session['mobile']
  118. ansRecord = AnswerRecord.get_record(ansRecord)
  119. return render(request, 'dati/history.html', {'history': ansRecord})
  120. def ranking(request):
  121. ranking_list = Scores.get_score_list()
  122. for r in ranking_list:
  123. if r.total_time == 1000:
  124. r.total_time = 120
  125. return render(request, 'dati/ranking.html', context={'ranking_list': ranking_list, 'title': '排行榜'})
  126. def ranking_json(request):
  127. ranking_list = Scores.get_score_list()
  128. ranking_list_json = json.dumps(list(ranking_list.values('user', 'mobile', 'department', 'score')))
  129. return JsonResponse(ranking_list_json, safe=False)