Commit b4c9363992212812edef36aa8d84c9a45c217a54
1 parent
f116c316
Exists in
master
and in
5 other branches
resolve #4
Showing
5 changed files
with
79 additions
and
42 deletions
Show diff stats
core/templates/index.html
@@ -36,6 +36,12 @@ | @@ -36,6 +36,12 @@ | ||
36 | <div class="row "> | 36 | <div class="row "> |
37 | <div class="col-lg-9 col-lg-offset-2"> | 37 | <div class="col-lg-9 col-lg-offset-2"> |
38 | <div class="card"> | 38 | <div class="card"> |
39 | + {% if message %} | ||
40 | + <div class="alert alert-danger"> | ||
41 | + {{message}} | ||
42 | + </div> | ||
43 | + | ||
44 | + {% endif %} | ||
39 | <div class="card-content"> | 45 | <div class="card-content"> |
40 | 46 | ||
41 | <div class="card-body"> | 47 | <div class="card-body"> |
core/tests.py
1 | -from django.test import TestCase | 1 | +from django.test import TestCase, Client |
2 | +from django.core.urlresolvers import reverse | ||
3 | +from rolepermissions.shortcuts import assign_role | ||
4 | +from users.models import User | ||
5 | +# from django.core import mail | ||
2 | 6 | ||
3 | -# Create your tests here. | 7 | +class LoginTestCase(TestCase): |
8 | + | ||
9 | + def setUp(self): | ||
10 | + self.client = Client() | ||
11 | + | ||
12 | + self.user = User.objects.create_user(username = 'test', email = 'testing@amadeus.com', is_staff = True, is_active = True, password = 'testing') | ||
13 | + assign_role(self.user, 'system_admin') | ||
14 | + | ||
15 | + self.url = reverse('core:home') | ||
16 | + | ||
17 | + def test_ok(self): | ||
18 | + response = self.client.get(self.url) | ||
19 | + self.assertEquals(response.status_code, 200) | ||
20 | + self.assertTemplateUsed(response, 'index.html') | ||
21 | + data = {'username': 'test', 'password': 'testing'} | ||
22 | + response = self.client.post(self.url, data) | ||
23 | + self.assertRedirects(response, reverse("app:index")) | ||
24 | + | ||
25 | + def test_not_ok(self): | ||
26 | + response = self.client.get(self.url) | ||
27 | + self.assertEquals(response.status_code, 200) | ||
28 | + self.assertTemplateUsed(response, 'index.html') | ||
29 | + data = {'username': 'test', 'password': 'senhaerrada'} | ||
30 | + response = self.client.post(self.url, data) | ||
31 | + self.assertTrue('message' in response.context) | ||
32 | + self.assertEquals(response.context['message'], "Email ou senha incorretos!") |
core/views.py
@@ -22,15 +22,17 @@ from django.shortcuts import redirect | @@ -22,15 +22,17 @@ from django.shortcuts import redirect | ||
22 | from django.urls import reverse | 22 | from django.urls import reverse |
23 | 23 | ||
24 | def login(request): | 24 | def login(request): |
25 | + context = {} | ||
25 | if request.POST: | 26 | if request.POST: |
26 | username = request.POST['username'] | 27 | username = request.POST['username'] |
27 | password = request.POST['password'] | 28 | password = request.POST['password'] |
28 | usuario = authenticate(username=username, password=password) | 29 | usuario = authenticate(username=username, password=password) |
29 | - print (dir(usuario)) | ||
30 | if usuario is not None: | 30 | if usuario is not None: |
31 | login_user(request, usuario) | 31 | login_user(request, usuario) |
32 | return redirect(reverse("app:index")) | 32 | return redirect(reverse("app:index")) |
33 | - return render(request,"index.html") | 33 | + else: |
34 | + context["message"] = "Email ou senha incorretos!" | ||
35 | + return render(request,"index.html",context) | ||
34 | 36 | ||
35 | 37 | ||
36 | # class LoginClass(LoginView): | 38 | # class LoginClass(LoginView): |
courses/tests/test_views.py
@@ -12,7 +12,7 @@ class CourseViewTestCase(TestCase): | @@ -12,7 +12,7 @@ class CourseViewTestCase(TestCase): | ||
12 | 12 | ||
13 | def setUp(self): | 13 | def setUp(self): |
14 | self.client = Client() | 14 | self.client = Client() |
15 | - | 15 | + |
16 | self.user = User.objects.create_user(username = 'test', email = 'testing@amadeus.com', is_staff = True, is_active = True, password = 'testing') | 16 | self.user = User.objects.create_user(username = 'test', email = 'testing@amadeus.com', is_staff = True, is_active = True, password = 'testing') |
17 | assign_role(self.user, 'system_admin') | 17 | assign_role(self.user, 'system_admin') |
18 | 18 | ||
@@ -27,25 +27,25 @@ class CourseViewTestCase(TestCase): | @@ -27,25 +27,25 @@ class CourseViewTestCase(TestCase): | ||
27 | 27 | ||
28 | def test_index(self): | 28 | def test_index(self): |
29 | self.client.login(username='test', password='testing') | 29 | self.client.login(username='test', password='testing') |
30 | - | ||
31 | - url = reverse('app:course:manage') | ||
32 | - | 30 | + |
31 | + url = reverse('course:manage') | ||
32 | + | ||
33 | response = self.client.get(url) | 33 | response = self.client.get(url) |
34 | 34 | ||
35 | self.assertEquals(response.status_code, 200) | 35 | self.assertEquals(response.status_code, 200) |
36 | self.assertTemplateUsed(response, 'course/index.html') | 36 | self.assertTemplateUsed(response, 'course/index.html') |
37 | 37 | ||
38 | def test_index_not_logged(self): | 38 | def test_index_not_logged(self): |
39 | - url = reverse('app:course:manage') | ||
40 | - | 39 | + url = reverse('course:manage') |
40 | + | ||
41 | response = self.client.get(url, follow = True) | 41 | response = self.client.get(url, follow = True) |
42 | 42 | ||
43 | - self.assertRedirects(response, '%s?next=%s' % (reverse('home'), url), 302, 200) | 43 | + self.assertRedirects(response, '%s?next=%s' % (reverse('core:home'), url), 302, 200) |
44 | 44 | ||
45 | def test_create(self): | 45 | def test_create(self): |
46 | self.client.login(username='test', password='testing') | 46 | self.client.login(username='test', password='testing') |
47 | 47 | ||
48 | - url = reverse('app:course:create') | 48 | + url = reverse('course:create') |
49 | 49 | ||
50 | response = self.client.get(url) | 50 | response = self.client.get(url) |
51 | 51 | ||
@@ -53,11 +53,11 @@ class CourseViewTestCase(TestCase): | @@ -53,11 +53,11 @@ class CourseViewTestCase(TestCase): | ||
53 | self.assertTemplateUsed(response, 'course/create.html') | 53 | self.assertTemplateUsed(response, 'course/create.html') |
54 | 54 | ||
55 | def test_create_not_logged(self): | 55 | def test_create_not_logged(self): |
56 | - url = reverse('app:course:create') | ||
57 | - | 56 | + url = reverse('course:create') |
57 | + | ||
58 | response = self.client.get(url, follow = True) | 58 | response = self.client.get(url, follow = True) |
59 | 59 | ||
60 | - self.assertRedirects(response, '%s?next=%s' % (reverse('home'), url), 302, 200) | 60 | + self.assertRedirects(response, '%s?next=%s' % (reverse('core:home'), url), 302, 200) |
61 | 61 | ||
62 | def test_create_no_permission(self): | 62 | def test_create_no_permission(self): |
63 | self.user = User.objects.create_user(username = 'student', email = 'student@amadeus.com', type_profile = 2, is_staff = False, is_active = True, password = 'testing') | 63 | self.user = User.objects.create_user(username = 'student', email = 'student@amadeus.com', type_profile = 2, is_staff = False, is_active = True, password = 'testing') |
@@ -66,8 +66,8 @@ class CourseViewTestCase(TestCase): | @@ -66,8 +66,8 @@ class CourseViewTestCase(TestCase): | ||
66 | 66 | ||
67 | self.client.login(username='student', password='testing') | 67 | self.client.login(username='student', password='testing') |
68 | 68 | ||
69 | - url = reverse('app:course:create') | ||
70 | - | 69 | + url = reverse('course:create') |
70 | + | ||
71 | response = self.client.get(url) | 71 | response = self.client.get(url) |
72 | 72 | ||
73 | self.assertEquals(response.status_code, 403) | 73 | self.assertEquals(response.status_code, 403) |
@@ -76,7 +76,7 @@ class CourseViewTestCase(TestCase): | @@ -76,7 +76,7 @@ class CourseViewTestCase(TestCase): | ||
76 | def test_update(self): | 76 | def test_update(self): |
77 | self.client.login(username = 'test', password = 'testing') | 77 | self.client.login(username = 'test', password = 'testing') |
78 | 78 | ||
79 | - url = reverse('app:course:update', kwargs = {'slug': self.course.slug}) | 79 | + url = reverse('course:update', kwargs = {'slug': self.course.slug}) |
80 | 80 | ||
81 | response = self.client.get(url) | 81 | response = self.client.get(url) |
82 | 82 | ||
@@ -84,11 +84,11 @@ class CourseViewTestCase(TestCase): | @@ -84,11 +84,11 @@ class CourseViewTestCase(TestCase): | ||
84 | self.assertTemplateUsed(response, 'course/update.html') | 84 | self.assertTemplateUsed(response, 'course/update.html') |
85 | 85 | ||
86 | def test_update_not_logged(self): | 86 | def test_update_not_logged(self): |
87 | - url = reverse('app:course:update', kwargs = {'slug': self.course.slug}) | ||
88 | - | 87 | + url = reverse('course:update', kwargs = {'slug': self.course.slug}) |
88 | + | ||
89 | response = self.client.get(url, follow = True) | 89 | response = self.client.get(url, follow = True) |
90 | 90 | ||
91 | - self.assertRedirects(response, '%s?next=%s' % (reverse('home'), url), 302, 200) | 91 | + self.assertRedirects(response, '%s?next=%s' % (reverse('core:home'), url), 302, 200) |
92 | 92 | ||
93 | def test_update_no_permission(self): | 93 | def test_update_no_permission(self): |
94 | self.user = User.objects.create_user(username = 'student', email = 'student@amadeus.com', type_profile = 2, is_staff = False, is_active = True, password = 'testing') | 94 | self.user = User.objects.create_user(username = 'student', email = 'student@amadeus.com', type_profile = 2, is_staff = False, is_active = True, password = 'testing') |
@@ -97,8 +97,8 @@ class CourseViewTestCase(TestCase): | @@ -97,8 +97,8 @@ class CourseViewTestCase(TestCase): | ||
97 | 97 | ||
98 | self.client.login(username='student', password='testing') | 98 | self.client.login(username='student', password='testing') |
99 | 99 | ||
100 | - url = reverse('app:course:update', kwargs = {'slug': self.course.slug}) | ||
101 | - | 100 | + url = reverse('course:update', kwargs = {'slug': self.course.slug}) |
101 | + | ||
102 | response = self.client.get(url) | 102 | response = self.client.get(url) |
103 | 103 | ||
104 | self.assertEquals(response.status_code, 403) | 104 | self.assertEquals(response.status_code, 403) |
@@ -106,7 +106,7 @@ class CourseViewTestCase(TestCase): | @@ -106,7 +106,7 @@ class CourseViewTestCase(TestCase): | ||
106 | def test_view(self): | 106 | def test_view(self): |
107 | self.client.login(username = 'test', password = 'testing') | 107 | self.client.login(username = 'test', password = 'testing') |
108 | 108 | ||
109 | - url = reverse('app:course:view', kwargs = {'slug': self.course.slug}) | 109 | + url = reverse('course:view', kwargs = {'slug': self.course.slug}) |
110 | 110 | ||
111 | response = self.client.get(url) | 111 | response = self.client.get(url) |
112 | 112 | ||
@@ -114,8 +114,8 @@ class CourseViewTestCase(TestCase): | @@ -114,8 +114,8 @@ class CourseViewTestCase(TestCase): | ||
114 | self.assertTemplateUsed(response, 'course/view.html') | 114 | self.assertTemplateUsed(response, 'course/view.html') |
115 | 115 | ||
116 | def test_update_not_logged(self): | 116 | def test_update_not_logged(self): |
117 | - url = reverse('app:course:view', kwargs = {'slug': self.course.slug}) | ||
118 | - | 117 | + url = reverse('course:view', kwargs = {'slug': self.course.slug}) |
118 | + | ||
119 | response = self.client.get(url, follow = True) | 119 | response = self.client.get(url, follow = True) |
120 | 120 | ||
121 | - self.assertRedirects(response, '%s?next=%s' % (reverse('home'), url), 302, 200) | ||
122 | \ No newline at end of file | 121 | \ No newline at end of file |
122 | + self.assertRedirects(response, '%s?next=%s' % (reverse('core:home'), url), 302, 200) |
courses/views.py
@@ -15,7 +15,7 @@ from .models import Course, Module, Category | @@ -15,7 +15,7 @@ from .models import Course, Module, Category | ||
15 | 15 | ||
16 | class IndexView(LoginRequiredMixin, generic.ListView): | 16 | class IndexView(LoginRequiredMixin, generic.ListView): |
17 | 17 | ||
18 | - login_url = '/' | 18 | + login_url = reverse_lazy("core:home") |
19 | redirect_field_name = 'next' | 19 | redirect_field_name = 'next' |
20 | queryset = Course.objects.all() | 20 | queryset = Course.objects.all() |
21 | template_name = 'course/index.html' | 21 | template_name = 'course/index.html' |
@@ -31,7 +31,7 @@ class IndexView(LoginRequiredMixin, generic.ListView): | @@ -31,7 +31,7 @@ class IndexView(LoginRequiredMixin, generic.ListView): | ||
31 | class CreateView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): | 31 | class CreateView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): |
32 | 32 | ||
33 | allowed_roles = ['professor', 'system_admin'] | 33 | allowed_roles = ['professor', 'system_admin'] |
34 | - login_url = '/' | 34 | + login_url = reverse_lazy("core:home") |
35 | redirect_field_name = 'next' | 35 | redirect_field_name = 'next' |
36 | template_name = 'course/create.html' | 36 | template_name = 'course/create.html' |
37 | form_class = CourseForm | 37 | form_class = CourseForm |
@@ -52,7 +52,7 @@ class CreateView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): | @@ -52,7 +52,7 @@ class CreateView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): | ||
52 | class UpdateView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): | 52 | class UpdateView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): |
53 | 53 | ||
54 | allowed_roles = ['professor', 'system_admin'] | 54 | allowed_roles = ['professor', 'system_admin'] |
55 | - login_url = '/' | 55 | + login_url = reverse_lazy("core:home") |
56 | redirect_field_name = 'next' | 56 | redirect_field_name = 'next' |
57 | template_name = 'course/update.html' | 57 | template_name = 'course/update.html' |
58 | model = Course | 58 | model = Course |
@@ -73,7 +73,7 @@ class UpdateView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): | @@ -73,7 +73,7 @@ class UpdateView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): | ||
73 | 73 | ||
74 | class View(LoginRequiredMixin, generic.DetailView): | 74 | class View(LoginRequiredMixin, generic.DetailView): |
75 | 75 | ||
76 | - login_url = '/' | 76 | + login_url = reverse_lazy("core:home") |
77 | redirect_field_name = 'next' | 77 | redirect_field_name = 'next' |
78 | model = Course | 78 | model = Course |
79 | context_object_name = 'course' | 79 | context_object_name = 'course' |
@@ -82,7 +82,7 @@ class View(LoginRequiredMixin, generic.DetailView): | @@ -82,7 +82,7 @@ class View(LoginRequiredMixin, generic.DetailView): | ||
82 | class DeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): | 82 | class DeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): |
83 | 83 | ||
84 | allowed_roles = ['professor', 'system_admin'] | 84 | allowed_roles = ['professor', 'system_admin'] |
85 | - login_url = '/' | 85 | + login_url = reverse_lazy("core:home") |
86 | redirect_field_name = 'next' | 86 | redirect_field_name = 'next' |
87 | model = Course | 87 | model = Course |
88 | template_name = 'course/delete.html' | 88 | template_name = 'course/delete.html' |
@@ -95,7 +95,7 @@ class DeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): | @@ -95,7 +95,7 @@ class DeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): | ||
95 | 95 | ||
96 | class FilteredView(LoginRequiredMixin, generic.ListView): | 96 | class FilteredView(LoginRequiredMixin, generic.ListView): |
97 | 97 | ||
98 | - login_url = '/' | 98 | + login_url = reverse_lazy("core:home") |
99 | redirect_field_name = 'next' | 99 | redirect_field_name = 'next' |
100 | template_name = 'course/filtered.html' | 100 | template_name = 'course/filtered.html' |
101 | context_object_name = 'courses' | 101 | context_object_name = 'courses' |
@@ -115,7 +115,7 @@ class FilteredView(LoginRequiredMixin, generic.ListView): | @@ -115,7 +115,7 @@ class FilteredView(LoginRequiredMixin, generic.ListView): | ||
115 | 115 | ||
116 | class IndexCatView(LoginRequiredMixin, generic.ListView): | 116 | class IndexCatView(LoginRequiredMixin, generic.ListView): |
117 | 117 | ||
118 | - login_url = '/' | 118 | + login_url = reverse_lazy("core:home") |
119 | redirect_field_name = 'next' | 119 | redirect_field_name = 'next' |
120 | queryset = Category.objects.all() | 120 | queryset = Category.objects.all() |
121 | template_name = 'category/index.html' | 121 | template_name = 'category/index.html' |
@@ -125,7 +125,7 @@ class IndexCatView(LoginRequiredMixin, generic.ListView): | @@ -125,7 +125,7 @@ class IndexCatView(LoginRequiredMixin, generic.ListView): | ||
125 | class CreateCatView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): | 125 | class CreateCatView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): |
126 | 126 | ||
127 | allowed_roles = ['professor', 'system_admin'] | 127 | allowed_roles = ['professor', 'system_admin'] |
128 | - login_url = '/' | 128 | + login_url = reverse_lazy("core:home") |
129 | redirect_field_name = 'next' | 129 | redirect_field_name = 'next' |
130 | template_name = 'category/create.html' | 130 | template_name = 'category/create.html' |
131 | form_class = CategoryForm | 131 | form_class = CategoryForm |
@@ -146,7 +146,7 @@ class CreateCatView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): | @@ -146,7 +146,7 @@ class CreateCatView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): | ||
146 | class UpdateCatView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): | 146 | class UpdateCatView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): |
147 | 147 | ||
148 | allowed_roles = ['professor', 'system_admin'] | 148 | allowed_roles = ['professor', 'system_admin'] |
149 | - login_url = '/' | 149 | + login_url = reverse_lazy("core:home") |
150 | redirect_field_name = 'next' | 150 | redirect_field_name = 'next' |
151 | template_name = 'category/update.html' | 151 | template_name = 'category/update.html' |
152 | model = Category | 152 | model = Category |
@@ -166,7 +166,7 @@ class UpdateCatView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): | @@ -166,7 +166,7 @@ class UpdateCatView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): | ||
166 | return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine) | 166 | return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine) |
167 | 167 | ||
168 | class ViewCat(LoginRequiredMixin, generic.DetailView): | 168 | class ViewCat(LoginRequiredMixin, generic.DetailView): |
169 | - login_url = '/' | 169 | + login_url = reverse_lazy("core:home") |
170 | redirect_field_name = 'next' | 170 | redirect_field_name = 'next' |
171 | model = Category | 171 | model = Category |
172 | template_name = 'category/view.html' | 172 | template_name = 'category/view.html' |
@@ -175,7 +175,7 @@ class ViewCat(LoginRequiredMixin, generic.DetailView): | @@ -175,7 +175,7 @@ class ViewCat(LoginRequiredMixin, generic.DetailView): | ||
175 | class DeleteCatView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): | 175 | class DeleteCatView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): |
176 | 176 | ||
177 | allowed_roles = ['professor', 'system_admin'] | 177 | allowed_roles = ['professor', 'system_admin'] |
178 | - login_url = '/' | 178 | + login_url = reverse_lazy("core:home") |
179 | redirect_field_name = 'next' | 179 | redirect_field_name = 'next' |
180 | model = Category | 180 | model = Category |
181 | template_name = 'category/delete.html' | 181 | template_name = 'category/delete.html' |
@@ -188,7 +188,7 @@ class DeleteCatView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): | @@ -188,7 +188,7 @@ class DeleteCatView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): | ||
188 | 188 | ||
189 | class ModulesView(LoginRequiredMixin, generic.ListView): | 189 | class ModulesView(LoginRequiredMixin, generic.ListView): |
190 | 190 | ||
191 | - login_url = '/' | 191 | + login_url = reverse_lazy("core:home") |
192 | redirect_field_name = 'next' | 192 | redirect_field_name = 'next' |
193 | template_name = 'module/index.html' | 193 | template_name = 'module/index.html' |
194 | context_object_name = 'modules' | 194 | context_object_name = 'modules' |
@@ -208,7 +208,7 @@ class ModulesView(LoginRequiredMixin, generic.ListView): | @@ -208,7 +208,7 @@ class ModulesView(LoginRequiredMixin, generic.ListView): | ||
208 | class CreateModView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): | 208 | class CreateModView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): |
209 | 209 | ||
210 | allowed_roles = ['professor', 'system_admin'] | 210 | allowed_roles = ['professor', 'system_admin'] |
211 | - login_url = '/' | 211 | + login_url = reverse_lazy("core:home") |
212 | redirect_field_name = 'next' | 212 | redirect_field_name = 'next' |
213 | template_name = 'module/create.html' | 213 | template_name = 'module/create.html' |
214 | form_class = ModuleForm | 214 | form_class = ModuleForm |
@@ -241,7 +241,7 @@ class CreateModView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): | @@ -241,7 +241,7 @@ class CreateModView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): | ||
241 | class UpdateModView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): | 241 | class UpdateModView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): |
242 | 242 | ||
243 | allowed_roles = ['professor', 'system_admin'] | 243 | allowed_roles = ['professor', 'system_admin'] |
244 | - login_url = '/' | 244 | + login_url = reverse_lazy("core:home") |
245 | redirect_field_name = 'next' | 245 | redirect_field_name = 'next' |
246 | template_name = 'module/update.html' | 246 | template_name = 'module/update.html' |
247 | model = Module | 247 | model = Module |
@@ -272,7 +272,7 @@ class UpdateModView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): | @@ -272,7 +272,7 @@ class UpdateModView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): | ||
272 | class DeleteModView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): | 272 | class DeleteModView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): |
273 | 273 | ||
274 | allowed_roles = ['professor', 'system_admin'] | 274 | allowed_roles = ['professor', 'system_admin'] |
275 | - login_url = '/' | 275 | + login_url = reverse_lazy("core:home") |
276 | redirect_field_name = 'next' | 276 | redirect_field_name = 'next' |
277 | model = Module | 277 | model = Module |
278 | template_name = 'module/delete.html' | 278 | template_name = 'module/delete.html' |