Commit 692a2510ab0944980dfe8b75266449d58d3524e7

Authored by ifac0
1 parent 7baf9496

bug nas urls, falta de template/correção de bugs #171

exam/forms.py
... ... @@ -4,7 +4,7 @@ from .models import Exam
4 4 class ExamForm(forms.ModelForm):
5 5 def clean_end_date(self):
6 6 beginDate = self.data['beginDate']
7   - endDate = self.data['endDate]
  7 + endDate = self.data['endDate']
8 8  
9 9 if beginDate and endDate and endDate < beginDate:
10 10 raise forms.ValidationError(_('The end date may not be before the start date.'))
... ... @@ -12,7 +12,7 @@ class ExamForm(forms.ModelForm):
12 12  
13 13 def clean_begin_date(self):
14 14 endDate = self.data['endDate']
15   - beginDate = self.data['beignDate']
  15 + beginDate = self.data['beginDate']
16 16  
17 17 if enDate and benginDate and beginDate <= endDate:
18 18 raise forms.ValidationError(_('The exam start date must be after the end of registration.'))
... ... @@ -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 3 from autoslug.fields import AutoSlugField
4 4 from users.models import User
5 5 from core.models import Resource
  6 +from courses.models import Activity
  7 +
6 8  
7 9  
8 10 class Exam(models.Model):
... ...
exam/permisissions.py 0 → 100644
... ... @@ -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
... ...
exam/urls.py 0 → 100644
... ... @@ -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 16 from users.models import User
17 17 from courses.models import Course, Topic
18 18  
19   -class CreatePoll(LoginRequiredMixin,generic.CreateView):
  19 +class CreateExam(LoginRequiredMixin,generic.CreateView):
20 20  
21 21 login_url = reverse_lazy("core:home")
22 22 redirect_field_name = 'next'
... ... @@ -39,7 +39,7 @@ class CreatePoll(LoginRequiredMixin,generic.CreateView):
39 39  
40 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 43 context = super(CreateExam, self).form_invalid(form)
44 44 answers = {}
45 45 for key in self.request.POST:
... ... @@ -61,14 +61,15 @@ class UpdateExam(LoginRequiredMixin,generic.UpdateView):
61 61 template_name = 'poll/form_exam.html'
62 62 success_url = reverse_lazy('core:home')
63 63  
64   - def dispatch(self, *args, **kwargs):
  64 + def dispatch(self, *args, **kwargs):
65 65 poll = get_object_or_404(Poll, slug = self.kwargs.get('slug'))
  66 +
66 67 if(not has_object_permission('edit_exam', self.request.user, exam)):
67 68 return self.handle_no_permission()
68 69 return super(UpdateExam, self).dispatch(*args, **kwargs)
69 70  
70 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 74 def form_valid(self, form):
74 75 poll = self.object
... ...