Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.34 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from django.http import Http404
  3. from django.shortcuts import render, get_object_or_404, redirect
  4. from .models import Prova, Questao, Opcao, Resposta, Usuario
  5. from django.http import HttpResponseRedirect, HttpResponse
  6. from django.urls import reverse
  7. from django.views import generic
  8. from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, PasswordChangeForm
  9. from .forms import UsuarioForm, LoginForm, ProvaForm, AlterarSenhaForm
  10. from django.contrib import messages
  11. from django.contrib.auth import update_session_auth_hash, login, logout, authenticate
  12. from django.utils.translation import ugettext as _
  13.  
  14.  
  15.  
  16.  
  17. def index(request):
  18. lista_de_provas = Prova.objects.filter()
  19. cprova = request.POST.get('idProva')
  20. if request.method == 'POST':
  21. sprova = Prova.objects.get(cprova = cprova)
  22. sprova.select()
  23. return redirect('polls/detalhes.html')
  24. else:
  25. form = ProvaForm()
  26. return render(request, 'polls/index.html',{'form':form,'lista_de_provas': lista_de_provas})
  27.  
  28.  
  29. def detalhes(request, idProva):
  30. prova = get_object_or_404(Prova,pk=idProva)
  31.  
  32. model = Prova
  33. template_name = 'polls/detalhes.html' # Default: <app_label>/<model_name>_list.html
  34. context_object_name = 'prova' # Default: object_list
  35. paginate_by = 10
  36. queryset = Prova.objects.all()
  37.  
  38. try:
  39. questao_selec = prova.questao_set.get(pk=request.POST['questao'])
  40. pagina = paginator.page(page)
  41. except (KeyError,Questao.DoesNotExist):
  42. return render (request,'polls/detalhes.html',{
  43. 'prova': prova,
  44. })
  45. except PageNotAnInteger:
  46. users = paginator.page(1)
  47. except EmptyPage:
  48. users = paginator.page(paginator.num_pages)
  49. else:
  50. #questao_selec.votes += 1
  51. questao_selec = Questao(textoQuestao=request.POST.get('textoQuestao'),imagemQuestao=request.FILES('imagemQuestao'),imagem2Questao=request.FILES('imagem2Questao'),perguntaQuestao=request.POST.get('perguntaQuestao'))
  52. questao_selec.save()
  53. return HttpResponseRedirect(reverse('polls:resultados',args=(prova.idProva,)))
  54.  
  55. def questoes(request, idQuestao,idProva):
  56. prova = get_object_or_404(Prova,pk=idProva)
  57. questao = get_object_or_404(Questao,pk=idQuestao)
  58. lista_de_questoes = Questao.objects.filter()
  59. try:
  60. questao_selec = prova.questao_set.get(pk=request.POST['questao'])
  61. opcao_selec = questao.opcao_set.get(pk=request.POST['opcao'])
  62. except (KeyError,Questao.DoesNotExist):
  63. return render (request,'polls/questoes.html',{
  64. 'prova': prova,
  65. 'questao': questao,
  66. })
  67. else:
  68. #questao_selec.votes += 1
  69. questao_selec = Questao(textoQuestao=request.POST.get('textoQuestao'),imagemQuestao=request.FILES('imagemQuestao'),imagem2Questao=request.FILES('imagem2Questao'),perguntaQuestao=request.POST.get('perguntaQuestao'))
  70. questao_selec.save()
  71. return HttpResponseRedirect(reverse('polls:resultados',args=(questao.idQuestao)))
  72.  
  73.  
  74. def resposta(request):
  75. opcao = get_object_or_404(Opcao,pk=idOpcao)
  76. try:
  77. resposta_selec = opcao.gabarito_set.get(pk=request.POST['gabarito'])
  78. except (KeyError,Gabarito.DoesNotExist):
  79. return render (request,'polls/resposta.html',{
  80. 'opcao': opcao,
  81. })
  82. else:
  83. resposta_selec.save()
  84. return HttpResponseRedirect(reverse('polls:resposta',args=(opcao.idOpcao,)))
  85. #return render(request,'polls/resposta.html')
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93. def user_login(request):
  94. if request.method == 'POST':
  95. form = LoginForm(request.POST)
  96. if form.is_valid():
  97. matriculaUsuario = form.cleaned_data.get("matriculaUsuario")
  98. senhaUsuario = form.cleaned_data.get("senhaUsuario")
  99. user = authenticate(matriculaUsuario=matriculaUsuario,senhaUsuario=senhaUsuario)
  100. if user is not None:
  101. if user.is_active:
  102. login(request, user)
  103. return render(request, 'polls/thanks.html')
  104. else:
  105. return render(request, 'polls/login.html', {"form": form})
  106. else:
  107. return render(request, 'polls/registrar.html', {"form": form})
  108. else:
  109. form = LoginForm()
  110. return render(request, 'polls/login.html', {'form': form})
  111.  
  112.  
  113.  
  114. def logout(request):
  115. logout(request)
  116. return HttpResponseRedirect(reverse('/'))
  117.  
  118.  
  119.  
  120. def alterarsenha(request):
  121. if request.method == 'POST':
  122. form = PasswordChangeForm(request.user, request.POST)
  123. if form.is_valid():
  124. user = form.save()
  125. update_session_auth_hash(request, user) # Important!
  126. messages.success(request, 'Your password was successfully updated!')
  127. return redirect('polls/alterarsenha')
  128. else:
  129. messages.error(request, 'Please correct the error below.')
  130. else:
  131. form = PasswordChangeForm(request.user)
  132. return render(request, 'polls/alterarsenha.html', {
  133. 'form': form
  134. })
  135.  
  136.  
  137. def thanks(request):
  138. return render(request,'polls/thanks.html')
  139.  
  140.  
  141. def registrar(request):
  142. if request.method == 'POST':
  143. form = UsuarioForm(request.POST)
  144. if form.is_valid():
  145. form.save()
  146. username = form.cleaned_data.get('username')
  147. raw_password = form.cleaned_data.get('password1')
  148. user = authenticate(username=username, password=raw_password)
  149. login(request, user)
  150. return redirect('/')
  151. else:
  152. form = UsuarioForm()
  153. return render(request, 'polls/registrar.html', {'form': form})
  154.  
  155.  
  156.  
  157. class IndexView(generic.ListView):
  158. template_name = 'polls/index.html'
  159. context_object_list = 'lista_de_provas'
  160.  
  161. def get_queryset(self):
  162. return Prova.objects.order_by('anoProva')[:5]
  163.  
  164. class DetailView(generic.DetailView):
  165. model = Prova
  166. template_name = 'polls/detalhes.html'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement