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 | ... | ... |