Commit 692a2510ab0944980dfe8b75266449d58d3524e7

Authored by ifac0
1 parent 7baf9496

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

@@ -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):
exam/permisissions.py 0 → 100644
@@ -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
exam/urls.py 0 → 100644
@@ -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 +]
@@ -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