views.py
2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
from django.shortcuts import get_object_or_404, redirect, render
from django.views import generic
from django.contrib import messages
from django.http import JsonResponse
from django.core.urlresolvers import reverse, reverse_lazy
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.mixins import LoginRequiredMixin
from amadeus.permissions import has_subject_permissions
from subjects.models import Subject
from .models import StudentsGroup
from .forms import StudentsGroupForm
class IndexView(LoginRequiredMixin, generic.ListView):
login_url = reverse_lazy("users:login")
redirect_field_name = 'next'
model = StudentsGroup
context_object_name = 'groups'
template_name = 'groups/index.html'
paginate_by = 10
def dispatch(self, request, *args, **kwargs):
slug = self.kwargs.get('slug', '')
subject = get_object_or_404(Subject, slug = slug)
if not has_subject_permissions(request.user, subject):
return redirect(reverse_lazy('subjects:home'))
return super(IndexView, self).dispatch(request, *args, **kwargs)
def get_queryset(self):
slug = self.kwargs.get('slug', '')
subject = get_object_or_404(Subject, slug = slug)
return StudentsGroup.objects.filter(subject = subject)
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
slug = self.kwargs.get('slug', '')
subject = get_object_or_404(Subject, slug = slug)
context['title'] = _('Students Groups')
context['subject'] = subject
return context
class CreateView(LoginRequiredMixin, generic.edit.CreateView):
login_url = reverse_lazy("users:login")
redirect_field_name = 'next'
template_name = 'groups/create.html'
form_class = StudentsGroupForm
def dispatch(self, request, *args, **kwargs):
slug = self.kwargs.get('slug', '')
subject = get_object_or_404(Subject, slug = slug)
if not has_subject_permissions(request.user, subject):
return redirect(reverse_lazy('subjects:home'))
return super(CreateView, self).dispatch(request, *args, **kwargs)
def get_initial(self):
initial = super(CreateView, self).get_initial()
slug = self.kwargs.get('slug', '')
initial['subject'] = get_object_or_404(Subject, slug = slug)
return initial
def form_valid(self, form):
self.object = form.save(commit = False)
slug = self.kwargs.get('slug', '')
subject = get_object_or_404(Subject, slug = slug)
self.object.subject = subject
self.object.save()
return super(CreateView, self).form_valid(form)
def get_context_data(self, **kwargs):
context = super(CreateView, self).get_context_data(**kwargs)
context['title'] = _('Create Topic')
slug = self.kwargs.get('slug', '')
subject = get_object_or_404(Subject, slug = slug)
context['subject'] = subject
return context
def get_success_url(self):
messages.success(self.request, _('The group "%s" was created successfully!')%(self.object.name))
return reverse_lazy('groups:index', kwargs = {'slug': self.object.subject.slug})