Commit 9ee586872259c0ab23721db872ca08c35ecce6ca
1 parent
228f185e
Exists in
master
and in
5 other branches
desenvolvendo views de exam #171
Showing
1 changed file
with
95 additions
and
2 deletions
Show diff stats
exam/views.py
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 |