views.py 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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. request.session['username'] = 'dati2 fake username'
  19. request.session['mobile'] = '13000001111'
  20. request.session['department'] = 'dati2 fake department'
  21. request.session['address'] = 'dati2 fake address'
  22. # user_score = Scores()
  23. # if user_score.find_score(mobile_number=request.session['mobile']):
  24. # return render(request, 'dati/directPage.html', {'alertMsg': '您已经答过题了。', 'dirLink': '/cq/dati'})
  25. request.session['time'] = 0 # 答题次数
  26. request.session['correct'] = 0
  27. question_list = []
  28. request.session['used_question_list'] = question_list
  29. request.session['start_time'] = str(datetime.now())
  30. return HttpResponseRedirect('/cq/dati/dati')
  31. else:
  32. request.session.flush()
  33. return render(request, 'dati/index.html', {'form': loginForm})
  34. def dati(request):
  35. # dati page
  36. quest = Question
  37. if request.session.get('mobile') is None:
  38. message = '请从登录页面开始'
  39. return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'})
  40. start_time = datetime.strptime(request.session['start_time'][0:19], '%Y-%m-%d %H:%M:%S')
  41. time_delta_since_last = (datetime.now()-start_time).total_seconds()
  42. # if time_delta_since_last > 120:
  43. # user_score = Scores()
  44. # user_score.user = request.session['username']
  45. # user_score.mobile = request.session['mobile']
  46. # user_score.department = request.session['department']
  47. # user_score.score = request.session['correct']
  48. # user_score.address = request.session['address']
  49. # user_score.total_time = 1000
  50. # user_score.add_score()
  51. # message = '你已经用完了2分钟答题时间。本次答题,你答对了' + str(request.session['correct']) + '题。'
  52. # del request.session['mobile']
  53. # return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'})
  54. if request.method == 'POST':
  55. request.session['time'] = request.session['time'] + 1
  56. quest.ID = request.session['question_id']
  57. quest = Question.search_id(quest)
  58. your_answer = request.POST['answer']
  59. answerRecord = AnswerRecord
  60. answerRecord.user = request.session['username']
  61. answerRecord.mobile = request.session['mobile']
  62. answerRecord.department = request.session['department']
  63. answerRecord.question = quest[0].q
  64. if int(your_answer) == quest[0].answer:
  65. answerRecord.result = '正确'
  66. request.session['correct'] = request.session['correct'] + 1
  67. else:
  68. answerRecord.result = '错误'
  69. # 用户的答案
  70. if your_answer == '1':
  71. answerRecord.your_answer = quest[0].a1
  72. elif your_answer == '2':
  73. answerRecord.your_answer = quest[0].a2
  74. elif your_answer == '3':
  75. answerRecord.your_answer = quest[0].a3
  76. elif your_answer == '4':
  77. answerRecord.your_answer = quest[0].a4
  78. # 记录正确答案
  79. if quest[0].answer == 1:
  80. answerRecord.correct_answer = quest[0].a1
  81. elif quest[0].answer == 2:
  82. answerRecord.correct_answer = quest[0].a2
  83. elif quest[0].answer == 3:
  84. answerRecord.correct_answer = quest[0].a3
  85. elif quest[0].answer == 4:
  86. answerRecord.correct_answer = quest[0].a4
  87. AnswerRecord.add_record(answerRecord)
  88. if request.session['time'] >= 10:
  89. user_score = Scores()
  90. user_score.user = request.session['username']
  91. user_score.mobile = request.session['mobile']
  92. user_score.department = request.session['department']
  93. user_score.score = request.session['correct']
  94. user_score.address = request.session['address']
  95. user_score.total_time = time_delta_since_last
  96. user_score.add_score()
  97. # message = '答题结束本次答题,你答对了'+str(request.session['correct'])+'题。共用时'+str(round(user_score.total_time))+'秒。'
  98. if request.session['correct'] == 10:
  99. message = '您完成答题,您答对了10题。答题完成界面请拍照保留后,至前台领取活动宣传品一份。'
  100. else:
  101. message = '您完成答题,您答对了' + str(request.session['correct']) + '题。'
  102. del request.session['mobile']
  103. return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'})
  104. else:
  105. if request.session['correct'] == 50:
  106. message = '再接再厉,奖品离你越来越近了哦!'
  107. return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati/dati'})
  108. else:
  109. return HttpResponseRedirect('/cq/dati/dati')
  110. if request.method == 'GET':
  111. quest = Question.get_random_question()[0]
  112. request.session['question_id'] = quest.ID
  113. used_question_list = request.session['used_question_list']
  114. while True:
  115. if quest.ID in used_question_list:
  116. quest = Question.get_random_question()[0]
  117. request.session['question_id'] = quest.ID
  118. else:
  119. used_question_list.append(quest.ID)
  120. break
  121. return render(request, 'dati/dati.html', {'question': quest, 'start_time': str(start_time)})
  122. def history(request):
  123. ansRecord = AnswerRecord
  124. ansRecord.user = request.session['username']
  125. ansRecord.mobile = request.session['mobile']
  126. ansRecord = AnswerRecord.get_record(ansRecord)
  127. return render(request, 'dati/history.html', {'history': ansRecord})
  128. def ranking(request):
  129. ranking_list = Scores.get_score_list()
  130. for r in ranking_list:
  131. if r.total_time == 1000:
  132. r.total_time = 120
  133. return render(request, 'dati/ranking.html', context={'ranking_list': ranking_list, 'title': '排行榜'})
  134. def ranking_json(request):
  135. ranking_list = Scores.get_score_list()
  136. ranking_list_json = json.dumps(list(ranking_list.values('user', 'mobile', 'department', 'score')))
  137. return JsonResponse(ranking_list_json, safe=False)