From 692a2510ab0944980dfe8b75266449d58d3524e7 Mon Sep 17 00:00:00 2001 From: ifac0 Date: Thu, 6 Oct 2016 14:32:24 -0300 Subject: [PATCH] bug nas urls, falta de template/correção de bugs #171 --- exam/forms.py | 22 ++++++++++------------ exam/models.py | 2 ++ exam/permisissions.py | 12 ++++++++++++ exam/urls.py | 9 +++++++++ exam/views.py | 9 +++++---- 5 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 exam/permisissions.py create mode 100644 exam/urls.py diff --git a/exam/forms.py b/exam/forms.py index ccd7011..5d58a47 100644 --- a/exam/forms.py +++ b/exam/forms.py @@ -4,7 +4,7 @@ from .models import Exam class ExamForm(forms.ModelForm): def clean_end_date(self): beginDate = self.data['beginDate'] - endDate = self.data['endDate] + endDate = self.data['endDate'] if beginDate and endDate and endDate < beginDate: raise forms.ValidationError(_('The end date may not be before the start date.')) @@ -12,7 +12,7 @@ class ExamForm(forms.ModelForm): def clean_begin_date(self): endDate = self.data['endDate'] - beginDate = self.data['beignDate'] + beginDate = self.data['beginDate'] if enDate and benginDate and beginDate <= endDate: raise forms.ValidationError(_('The exam start date must be after the end of registration.')) @@ -28,14 +28,12 @@ class ExamForm(forms.ModelForm): - class Meta: - model = Exam - fields = ['name','beginDate','endDate'] + class Meta: + model = Exam + fields = ['name','beginDate','endDate'] - widgets = { - 'name': forms.TextInput(attrs={'placeholder': 'Exam?'}), - 'beginDate': forms.DateTimeInput( - attrs={'placeholder': 'Start date to resolve the exam'}), - 'endDate': forms.DateTimeInput( - attrs={'placeholder': 'Finish date permited to resolve the exam'}), - } + widgets = { + 'name': forms.TextInput(attrs={'placeholder': 'Exam?'}), + 'beginDate': forms.DateTimeInput(attrs={'placeholder': 'Start date to resolve the exam'}), + 'endDate': forms.DateTimeInput(attrs={'placeholder': 'Finish date permited to resolve the exam'}), + } diff --git a/exam/models.py b/exam/models.py index e77c2c0..a3c2a2f 100644 --- a/exam/models.py +++ b/exam/models.py @@ -3,6 +3,8 @@ from django.db import models from autoslug.fields import AutoSlugField from users.models import User from core.models import Resource +from courses.models import Activity + class Exam(models.Model): diff --git a/exam/permisissions.py b/exam/permisissions.py new file mode 100644 index 0000000..d3c976f --- /dev/null +++ b/exam/permisissions.py @@ -0,0 +1,12 @@ +from rolepermissions.permissions import register_object_checker +from amadeus.roles import SystemAdmin + +@register_object_checker() +def edit_exam(role, user, exam): + if (role == SystemAdmin): + return True + + if (user in exam.topic.subject.professors.all()): + return True + + return False diff --git a/exam/urls.py b/exam/urls.py new file mode 100644 index 0000000..a1abf31 --- /dev/null +++ b/exam/urls.py @@ -0,0 +1,9 @@ +from django.conf.urls import url + +from . import views + +urlpatterns = [ + url(r'^create/(?P[\w\-_]+)/$', views.CreateExam.as_view(), name='create_poll'), + url(r'^update/(?P[\w\-_]+)/$', views.UpdateExam.as_view(), name='update_poll'), + +] diff --git a/exam/views.py b/exam/views.py index 85e241c..8c41dbd 100644 --- a/exam/views.py +++ b/exam/views.py @@ -16,7 +16,7 @@ from core.mixins import NotificationMixin from users.models import User from courses.models import Course, Topic -class CreatePoll(LoginRequiredMixin,generic.CreateView): +class CreateExam(LoginRequiredMixin,generic.CreateView): login_url = reverse_lazy("core:home") redirect_field_name = 'next' @@ -39,7 +39,7 @@ class CreatePoll(LoginRequiredMixin,generic.CreateView): return super(CreateExam, self).form_valid(form) - def form_invalid(self, form,**kwargs): + def form_invalid(self, form,**kwargs): context = super(CreateExam, self).form_invalid(form) answers = {} for key in self.request.POST: @@ -61,14 +61,15 @@ class UpdateExam(LoginRequiredMixin,generic.UpdateView): template_name = 'poll/form_exam.html' success_url = reverse_lazy('core:home') - def dispatch(self, *args, **kwargs): + def dispatch(self, *args, **kwargs): poll = get_object_or_404(Poll, slug = self.kwargs.get('slug')) + if(not has_object_permission('edit_exam', self.request.user, exam)): return self.handle_no_permission() return super(UpdateExam, self).dispatch(*args, **kwargs) def get_object(self, queryset=None): - return get_object_or_404(Poll, slug = self.kwargs.get('slug')) + return get_object_or_404(Poll, slug = self.kwargs.get('slug')) def form_valid(self, form): poll = self.object -- libgit2 0.21.2