Skip to content

Commit

Permalink
Update to django 2.2
Browse files Browse the repository at this point in the history
  • Loading branch information
miterion committed May 17, 2020
1 parent 46acab1 commit 9bbc48d
Show file tree
Hide file tree
Showing 11 changed files with 44 additions and 22 deletions.
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
coverage==5.1
Django==1.11.29 # pyup: <2.0
Django==2.2.12
django-debug-toolbar==2.2
docutils==0.16
freezegun==0.3.15
Expand Down
3 changes: 1 addition & 2 deletions src/feedback/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,9 @@
# ------------------------------ Login mit Veranstalter-Rechten ------------------------------ #

class VeranstalterBackend(ModelBackend):
def authenticate(self, vid, token):
def authenticate(self, request, vid, token):
if not (vid and token):
return None

if not Veranstaltung.objects.filter(id=vid, access_token=token).exists():
return None

Expand Down
2 changes: 1 addition & 1 deletion src/feedback/models/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ def replace_veranstalter(new, old):

# replace every lecture held by 'new' with 'old'
for v in veranstaltungen:
v.veranstalter = [old]
v.veranstalter.set([old])
v.save()

# save the second name from 'new' as the alternative first name of 'old'
Expand Down
2 changes: 1 addition & 1 deletion src/feedback/parser/vv.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ def parse_vv_recurse(ele, cat):
continue

if is_attended_course:
iv.veranstalter = veranst
iv.veranstalter.set(veranst)

# Zurückgegeben wird die Rekursionstiefe der zuletzt erstellten Kategorie, oder wenn keine erstellt wurden 0
return 0 if is_new_category else (last_category_depth - 1)
Expand Down
10 changes: 5 additions & 5 deletions src/feedback/tests/test_auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ def setUp(self):

def test_authenticate(self):
vid = self.v.id
self.assertFalse(self.b.authenticate(vid=vid, token=None))
self.assertFalse(self.b.authenticate(vid=None, token='0123456789abcdef'))
self.assertFalse(self.b.authenticate(vid=vid, token='000'))
self.assertEqual(self.b.authenticate(vid=vid, token='0123456789abcdef'), self.u)
self.assertFalse(self.b.authenticate(request=None, vid=vid, token=None))
self.assertFalse(self.b.authenticate(request=None, vid=None, token='0123456789abcdef'))
self.assertFalse(self.b.authenticate(request=None, vid=vid, token='000'))
self.assertEqual(self.b.authenticate(request=None, vid=vid, token='0123456789abcdef'), self.u)
self.u.delete()
self.assertFalse(self.b.authenticate(vid=vid, token='0123456789abcdef'))
self.assertFalse(self.b.authenticate(request=None, vid=vid, token='0123456789abcdef'))


class TakeoverBackendTest(TestCase):
Expand Down
4 changes: 2 additions & 2 deletions src/feedback/tests/test_latex.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import os
from subprocess import call

from django.test import TestCase
from django.test import TestCase, tag
from django.conf import settings

from feedback.models import Semester, Person, Veranstaltung, Fragebogen2009, Mailvorlage, Einstellung
from feedback.tests.tools import NonSuTestMixin, get_veranstaltung


@tag('latex')
class GenerateLettersTest(NonSuTestMixin, TestCase):
def _get_erhebungswoche(self):
with open(settings.LATEX_PATH + 'erhebungswoche.inc', 'r') as f:
Expand Down
16 changes: 15 additions & 1 deletion src/feedback/tests/test_views_intern_vv.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def setUp(self):

self.p0 = Person.objects.create(vorname='Je', nachname='Mand')
self.p1 = Person.objects.create(vorname='Auch Je', nachname='Mand')
self.p2 = Person.objects.create(vorname="Noch Je", nachname='Mand')
self.p2 = Person.objects.create(vorname="Auch Je Noch", nachname='Mand')

self.path_save_p0 = self.path + str(self.p0.id) + '/'
self.path_save_p1 = self.path + str(self.p1.id) + '/'
Expand Down Expand Up @@ -126,13 +126,27 @@ def test_import_vv_edit_users_namecheck_get(self):
self.do_non_su_test(self.path_save_p2)
self.assertTrue(self.client.login(username='supers', password='pw'))

self.p1.geschlecht = 'm'
self.p1.email = 'ad@res.se'
self.p1.save()
self.p2.geschlecht = 'f'
self.p2.email = 'ad2@res.se'
self.p2.save()

response = self.client.get(self.path_save_p2, **{'REMOTE_USER': 'super'})
self.assertEqual(response.templates[0].name, 'intern/import_vv_edit_users_namecheck.html')

def test_import_vv_edit_users_namecheck_post(self):
self.do_non_su_test(self.path_save_p2)
self.client.login(username='supers', password='pw')

self.p1.geschlecht = 'm'
self.p1.email = 'ad@res.se'
self.p1.save()
self.p2.geschlecht = 'f'
self.p2.email = 'ad2@res.se'
self.p2.save()

response = self.client.get(self.path_save_p2)
self.assertEqual(response.templates[0].name, 'intern/import_vv_edit_users_namecheck.html')

Expand Down
4 changes: 2 additions & 2 deletions src/feedback/views/intern/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def rechte_uebernehmen(request):
veranst = Veranstaltung.objects.get(id=v)

user = auth.authenticate(user=u, current_user=request.user)
auth.login(request, user)
auth.login(request, user, backend='feedback.auth.TakeoverBackend')
request.session['orig_uid'] = orig_uid
request.session['vid'] = v
request.session['veranstaltung'] = str(veranst)
Expand All @@ -47,7 +47,7 @@ def rechte_zuruecknehmen(request):
uid = request.session['orig_uid'] # this line throws the exception
u = User.objects.get(id=uid)
user = auth.authenticate(reset=True, user=u)
auth.login(request, user)
auth.login(request, user, backend='feedback.auth.TakeoverBackend')
return HttpResponseRedirect(reverse('intern-index'))
# Redirect to intern.index view to get a clear session
except KeyError:
Expand Down
14 changes: 10 additions & 4 deletions src/feedback/views/intern/vv.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from django.views.decorators.http import require_http_methods
from django.views.generic.edit import UpdateView
from django.views.generic import ListView, DetailView
from django.contrib.auth.views import redirect_to_login
from django.contrib.auth.mixins import UserPassesTestMixin

from feedback.parser import vv as vv_parser
Expand All @@ -18,6 +19,10 @@
from feedback.forms import PersonForm, UploadFileForm


class RedirectUserPassesTestMixin(UserPassesTestMixin):
def handle_no_permission(self):
return redirect_to_login(self.request.get_full_path(), self.get_login_url(), self.get_redirect_field_name())

# TODO: durch FormView ersetzen
@user_passes_test(lambda u: u.is_superuser)
@require_http_methods(('HEAD', 'GET', 'POST'))
Expand Down Expand Up @@ -101,7 +106,7 @@ def import_vv_edit(request):
return HttpResponseRedirect(reverse('import_vv_edit_users'))


class PersonFormView(UserPassesTestMixin, ListView):
class PersonFormView(RedirectUserPassesTestMixin, ListView):
"""Definiert die View für die Anzeige aller zu bearbeitenden Personen."""
model = Person
template_name = 'intern/import_vv_edit_users.html'
Expand All @@ -114,7 +119,8 @@ def test_func(self):
return self.request.user.is_superuser


class PersonFormUpdateView(UserPassesTestMixin, UpdateView):

class PersonFormUpdateView(RedirectUserPassesTestMixin, UpdateView):
"""Definiert die View für die Bearbeitung von der Personen."""
model = Person
form_class = PersonForm
Expand Down Expand Up @@ -171,7 +177,7 @@ def has_similar_name(self):
return similar_persons.count() > 0


class SimilarNamesView(UserPassesTestMixin, DetailView):
class SimilarNamesView(RedirectUserPassesTestMixin, DetailView):
"""Definiert die View für die Anzeige von ähnlichen Namen von Personen."""
model = Person
template_name = 'intern/import_vv_edit_users_namecheck.html'
Expand All @@ -198,7 +204,7 @@ def get_context_data(self, **kwargs):
vorname = context['new_vorname'].split(' ')[0]
nachname = context['new_nachname']

context['similar_person'] = Person.persons_with_similar_names(vorname, nachname)
context['similar_person'] = Person.persons_with_similar_names(vorname, nachname)[0]
context['old_veranstaltungen'] = Person.veranstaltungen(context['similar_person'])
context['new_veranstaltungen'] = Person.veranstaltungen(context['person_new'])
return context
Expand Down
5 changes: 4 additions & 1 deletion src/feedback/views/veranstalter.py
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,10 @@ def save_to_db(request, instance, form_list):
instance.csv_to_tutor(val)
setattr(instance, "kleingruppen", val)
elif isinstance(form.instance, Veranstaltung):
setattr(instance, key, val)
if key == 'ergebnis_empfaenger':
getattr(instance, key).set(val)
else:
setattr(instance, key, val)
else:
setattr(form.instance, key, val)

Expand Down
4 changes: 2 additions & 2 deletions src/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
urlpatterns += [
url(r'^veranstalter/login/$', feedback.views.veranstalter.login, name='veranstalter-login'),
url(r'^veranstalter/logout/$',
django.contrib.auth.views.logout,
django.contrib.auth.views.LogoutView.as_view(),
{'template_name': "veranstalter/logout.html"},
name='veranstalter-logout'),

Expand Down Expand Up @@ -97,7 +97,7 @@

# Logout
urlpatterns += [
url(r'^logout/$', django.contrib.auth.views.logout, {'next_page': reverse_lazy('public-results')}, name='logout'),
url(r'^logout/$', django.contrib.auth.views.LogoutView.as_view(), {'next_page': reverse_lazy('public-results')}, name='logout'),
]

urlpatterns += staticfiles_urlpatterns()
Expand Down

0 comments on commit 9bbc48d

Please sign in to comment.