Commit 692a2510ab0944980dfe8b75266449d58d3524e7
1 parent
7baf9496
Exists in
master
and in
5 other branches
bug nas urls, falta de template/correção de bugs #171
Showing
5 changed files
with
38 additions
and
16 deletions
Show diff stats
exam/forms.py
@@ -4,7 +4,7 @@ from .models import Exam | @@ -4,7 +4,7 @@ from .models import Exam | ||
4 | class ExamForm(forms.ModelForm): | 4 | class ExamForm(forms.ModelForm): |
5 | def clean_end_date(self): | 5 | def clean_end_date(self): |
6 | beginDate = self.data['beginDate'] | 6 | beginDate = self.data['beginDate'] |
7 | - endDate = self.data['endDate] | 7 | + endDate = self.data['endDate'] |
8 | 8 | ||
9 | if beginDate and endDate and endDate < beginDate: | 9 | if beginDate and endDate and endDate < beginDate: |
10 | raise forms.ValidationError(_('The end date may not be before the start date.')) | 10 | raise forms.ValidationError(_('The end date may not be before the start date.')) |
@@ -12,7 +12,7 @@ class ExamForm(forms.ModelForm): | @@ -12,7 +12,7 @@ class ExamForm(forms.ModelForm): | ||
12 | 12 | ||
13 | def clean_begin_date(self): | 13 | def clean_begin_date(self): |
14 | endDate = self.data['endDate'] | 14 | endDate = self.data['endDate'] |
15 | - beginDate = self.data['beignDate'] | 15 | + beginDate = self.data['beginDate'] |
16 | 16 | ||
17 | if enDate and benginDate and beginDate <= endDate: | 17 | if enDate and benginDate and beginDate <= endDate: |
18 | raise forms.ValidationError(_('The exam start date must be after the end of registration.')) | 18 | raise forms.ValidationError(_('The exam start date must be after the end of registration.')) |
@@ -28,14 +28,12 @@ class ExamForm(forms.ModelForm): | @@ -28,14 +28,12 @@ class ExamForm(forms.ModelForm): | ||
28 | 28 | ||
29 | 29 | ||
30 | 30 | ||
31 | - class Meta: | ||
32 | - model = Exam | ||
33 | - fields = ['name','beginDate','endDate'] | 31 | + class Meta: |
32 | + model = Exam | ||
33 | + fields = ['name','beginDate','endDate'] | ||
34 | 34 | ||
35 | - widgets = { | ||
36 | - 'name': forms.TextInput(attrs={'placeholder': 'Exam?'}), | ||
37 | - 'beginDate': forms.DateTimeInput( | ||
38 | - attrs={'placeholder': 'Start date to resolve the exam'}), | ||
39 | - 'endDate': forms.DateTimeInput( | ||
40 | - attrs={'placeholder': 'Finish date permited to resolve the exam'}), | ||
41 | - } | 35 | + widgets = { |
36 | + 'name': forms.TextInput(attrs={'placeholder': 'Exam?'}), | ||
37 | + 'beginDate': forms.DateTimeInput(attrs={'placeholder': 'Start date to resolve the exam'}), | ||
38 | + 'endDate': forms.DateTimeInput(attrs={'placeholder': 'Finish date permited to resolve the exam'}), | ||
39 | + } |
exam/models.py
@@ -3,6 +3,8 @@ from django.db import models | @@ -3,6 +3,8 @@ from django.db import models | ||
3 | from autoslug.fields import AutoSlugField | 3 | from autoslug.fields import AutoSlugField |
4 | from users.models import User | 4 | from users.models import User |
5 | from core.models import Resource | 5 | from core.models import Resource |
6 | +from courses.models import Activity | ||
7 | + | ||
6 | 8 | ||
7 | 9 | ||
8 | class Exam(models.Model): | 10 | class Exam(models.Model): |
@@ -0,0 +1,12 @@ | @@ -0,0 +1,12 @@ | ||
1 | +from rolepermissions.permissions import register_object_checker | ||
2 | +from amadeus.roles import SystemAdmin | ||
3 | + | ||
4 | +@register_object_checker() | ||
5 | +def edit_exam(role, user, exam): | ||
6 | + if (role == SystemAdmin): | ||
7 | + return True | ||
8 | + | ||
9 | + if (user in exam.topic.subject.professors.all()): | ||
10 | + return True | ||
11 | + | ||
12 | + return False |
@@ -0,0 +1,9 @@ | @@ -0,0 +1,9 @@ | ||
1 | +from django.conf.urls import url | ||
2 | + | ||
3 | +from . import views | ||
4 | + | ||
5 | +urlpatterns = [ | ||
6 | + url(r'^create/(?P<slug>[\w\-_]+)/$', views.CreateExam.as_view(), name='create_poll'), | ||
7 | + url(r'^update/(?P<slug>[\w\-_]+)/$', views.UpdateExam.as_view(), name='update_poll'), | ||
8 | + | ||
9 | +] |
exam/views.py
@@ -16,7 +16,7 @@ from core.mixins import NotificationMixin | @@ -16,7 +16,7 @@ from core.mixins import NotificationMixin | ||
16 | from users.models import User | 16 | from users.models import User |
17 | from courses.models import Course, Topic | 17 | from courses.models import Course, Topic |
18 | 18 | ||
19 | -class CreatePoll(LoginRequiredMixin,generic.CreateView): | 19 | +class CreateExam(LoginRequiredMixin,generic.CreateView): |
20 | 20 | ||
21 | login_url = reverse_lazy("core:home") | 21 | login_url = reverse_lazy("core:home") |
22 | redirect_field_name = 'next' | 22 | redirect_field_name = 'next' |
@@ -39,7 +39,7 @@ class CreatePoll(LoginRequiredMixin,generic.CreateView): | @@ -39,7 +39,7 @@ class CreatePoll(LoginRequiredMixin,generic.CreateView): | ||
39 | 39 | ||
40 | return super(CreateExam, self).form_valid(form) | 40 | return super(CreateExam, self).form_valid(form) |
41 | 41 | ||
42 | - def form_invalid(self, form,**kwargs): | 42 | + def form_invalid(self, form,**kwargs): |
43 | context = super(CreateExam, self).form_invalid(form) | 43 | context = super(CreateExam, self).form_invalid(form) |
44 | answers = {} | 44 | answers = {} |
45 | for key in self.request.POST: | 45 | for key in self.request.POST: |
@@ -61,14 +61,15 @@ class UpdateExam(LoginRequiredMixin,generic.UpdateView): | @@ -61,14 +61,15 @@ class UpdateExam(LoginRequiredMixin,generic.UpdateView): | ||
61 | template_name = 'poll/form_exam.html' | 61 | template_name = 'poll/form_exam.html' |
62 | success_url = reverse_lazy('core:home') | 62 | success_url = reverse_lazy('core:home') |
63 | 63 | ||
64 | - def dispatch(self, *args, **kwargs): | 64 | + def dispatch(self, *args, **kwargs): |
65 | poll = get_object_or_404(Poll, slug = self.kwargs.get('slug')) | 65 | poll = get_object_or_404(Poll, slug = self.kwargs.get('slug')) |
66 | + | ||
66 | if(not has_object_permission('edit_exam', self.request.user, exam)): | 67 | if(not has_object_permission('edit_exam', self.request.user, exam)): |
67 | return self.handle_no_permission() | 68 | return self.handle_no_permission() |
68 | return super(UpdateExam, self).dispatch(*args, **kwargs) | 69 | return super(UpdateExam, self).dispatch(*args, **kwargs) |
69 | 70 | ||
70 | def get_object(self, queryset=None): | 71 | def get_object(self, queryset=None): |
71 | - return get_object_or_404(Poll, slug = self.kwargs.get('slug')) | 72 | + return get_object_or_404(Poll, slug = self.kwargs.get('slug')) |
72 | 73 | ||
73 | def form_valid(self, form): | 74 | def form_valid(self, form): |
74 | poll = self.object | 75 | poll = self.object |