Commit 9ee586872259c0ab23721db872ca08c35ecce6ca

Authored by ifac0
1 parent 228f185e

desenvolvendo views de exam #171

Showing 1 changed file with 95 additions and 2 deletions   Show diff stats
1 -from django.shortcuts import render 1 +from django.shortcuts import render, get_object_or_404, redirect
  2 +from django.views import generic
  3 +from django.contrib.auth.decorators import login_required
  4 +from django.core.paginator import Paginator, EmptyPage
  5 +from django.contrib.auth.mixins import LoginRequiredMixin
  6 +from rolepermissions.mixins import HasRoleMixin
  7 +from django.core.urlresolvers import reverse_lazy
  8 +from django.utils.translation import ugettext_lazy as _
  9 +from rolepermissions.verifications import has_role
  10 +from rolepermissions.verifications import has_object_permission
  11 +# from django.views.generic.edit import FormMixin
2 12
3 -# Create your views here. 13 +from .forms import ExamForm
  14 +from .models import Exam, Answer
  15 +from core.mixins import NotificationMixin
  16 +from users.models import User
  17 +from courses.models import Course, Topic
  18 +
  19 +class CreatePoll(LoginRequiredMixin,generic.CreateView):
  20 +
  21 + login_url = reverse_lazy("core:home")
  22 + redirect_field_name = 'next'
  23 + model = Exam
  24 + form_class = PollForm
  25 + context_object_name = 'exam'
  26 + template_name = 'exam/form_exam.html'
  27 + success_url = reverse_lazy('core:home')
  28 +
  29 + def form_valid(self, form):
  30 + self.object = form.save(commit = False)
  31 + topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
  32 + self.object.topic = topic
  33 + self.object.save()
  34 +
  35 + for key in self.request.POST:
  36 + if(key != 'csrfmiddlewaretoken' and key != 'name' and key != 'beginDate' and key != 'endDate'):
  37 + answer = Answer(answer=self.request.POST[key],order=key,poll=self.object)
  38 + answer.save()
  39 +
  40 + return super(CreateExam, self).form_valid(form)
  41 +
  42 + def form_invalid(self, form,**kwargs):
  43 + context = super(CreateExam, self).form_invalid(form)
  44 + answers = {}
  45 + for key in self.request.POST:
  46 + if(key != 'csrfmiddlewaretoken' and key != 'name' and key != 'beginDate' and key != 'endDate'):
  47 + answers[key] = self.request.POST[key]
  48 +
  49 + keys = sorted(answers)
  50 + context.context_data['answers'] = answers
  51 + context.context_data['keys'] = keys
  52 + return context
  53 +
  54 +class UpdateExam(LoginRequiredMixin,generic.UpdateView):
  55 +
  56 + login_url = reverse_lazy("core:home")
  57 + redirect_field_name = 'next'
  58 + model = Exam
  59 + form_class = ExamForm
  60 + context_object_name = 'exam'
  61 + template_name = 'poll/form_exam.html'
  62 + success_url = reverse_lazy('core:home')
  63 +
  64 + def dispatch(self, *args, **kwargs):
  65 + poll = get_object_or_404(Poll, slug = self.kwargs.get('slug'))
  66 + if(not has_object_permission('edit_exam', self.request.user, exam)):
  67 + return self.handle_no_permission()
  68 + return super(UpdateExam, self).dispatch(*args, **kwargs)
  69 +
  70 + def get_object(self, queryset=None):
  71 + return get_object_or_404(Poll, slug = self.kwargs.get('slug'))
  72 +
  73 + def form_valid(self, form):
  74 + poll = self.object
  75 + poll = form.save(commit = False)
  76 + poll.answers.all().delete()
  77 + poll.save()
  78 +
  79 + for key in self.request.POST:
  80 + if(key != 'csrfmiddlewaretoken' and key != 'name' and key != 'beginDate' and key != 'endDate'):
  81 + answer = Answer(answer=self.request.POST[key],order=key,exam=exam)
  82 + answer.save()
  83 +
  84 + return super(UpdateExam, self).form_valid(form)
  85 +
  86 + def form_invalid(self, form,**kwargs):
  87 + context = super(UpdateExam, self).form_invalid(form)
  88 + answers = {}
  89 + for key in self.request.POST:
  90 + if(key != 'csrfmiddlewaretoken' and key != 'name' and key != 'beginDate' and key != 'endDate'):
  91 + answers[key] = self.request.POST[key]
  92 +
  93 + keys = sorted(answers)
  94 + context.context_data['answers'] = answers
  95 + context.context_data['keys'] = keys
  96 + return context