diff --git a/CHANGES.txt b/CHANGES.txt index 4e43380..49a56b1 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,7 @@ +2.5.1 +==================== +* Add another Django 5.2 fix + 2.5.0 (2025-12-08) ==================== * Adds compatibility with Django 5.2 diff --git a/courseaffils/lib.py b/courseaffils/lib.py index fdbeb52..9fb5646 100644 --- a/courseaffils/lib.py +++ b/courseaffils/lib.py @@ -47,7 +47,7 @@ def in_course_or_404(username, group_or_course): raise Http404(response_body) -ANONYMIZE_KEY = 'ccnmtl.courseaffils.anonymize' +ANONYMIZE_KEY = 'ctl.courseaffils.anonymize' def handle_public_name(user, request): diff --git a/courseaffils/middleware.py b/courseaffils/middleware.py index b349970..84206ca 100644 --- a/courseaffils/middleware.py +++ b/courseaffils/middleware.py @@ -24,7 +24,7 @@ except ImportError: pass -SESSION_KEY = 'ccnmtl.courseaffils.course' +SESSION_KEY = 'ctl.courseaffils.course' def has_anonymous_path(current_path): @@ -178,7 +178,7 @@ def process_request(self, request, override_view=None): if chosen_course and \ (chosen_course in available_courses or request.user.is_staff): - request.session[SESSION_KEY] = chosen_course + request.session[SESSION_KEY] = chosen_course.pk self.decorate_request(request, chosen_course) return None diff --git a/courseaffils/tests/test_middleware.py b/courseaffils/tests/test_middleware.py index f8a068c..64614fb 100644 --- a/courseaffils/tests/test_middleware.py +++ b/courseaffils/tests/test_middleware.py @@ -9,24 +9,30 @@ from django.test import TestCase -class StubRequest(object): - COOKIES = dict() - GET = dict() - POST = dict() - environ = dict() - - def __init__(self, c): - self.path = "/foo/bar" +class StubRequest: + def __init__(self, c=None, path='/foo/bar', method='GET'): + self.path = path + self.method = method + self.COOKIES = {} + self.GET = {} + self.POST = {} + self.environ = {} + self.session = {} + if c: - self.session = {'ccnmtl.courseaffils.course': c} - else: - self.session = dict() + if hasattr(c, 'pk'): + self.session = {'ctl.courseaffils.course': c.pk} + else: + self.session = {'ctl.courseaffils.course': c} def get_full_path(self): return self.path + def is_secure(self): + return False + -class StubResponse(object): +class StubResponse: content = "" @@ -62,12 +68,12 @@ def test_is_anonymous_path(self): assert is_anonymous_path("/static/") def test_already_selected_course(self): - assert already_selected_course(StubRequest(True)) - assert not already_selected_course(StubRequest(False)) + assert already_selected_course(StubRequest(1)) + assert not already_selected_course(StubRequest(0)) def test_cmm_process_response(self): c = CourseManagerMiddleware(self) - assert c.process_response(StubRequest(True), "foo") == "foo" + assert c.process_response(StubRequest(1), "foo") == "foo" def test_cmm_process_response_anon(self): c = CourseManagerMiddleware(self) diff --git a/courseaffils/views.py b/courseaffils/views.py index b8d8d50..32fe433 100644 --- a/courseaffils/views.py +++ b/courseaffils/views.py @@ -18,7 +18,7 @@ from django.utils.http import urlquote as quote -SESSION_KEY = 'ccnmtl.courseaffils.course' +SESSION_KEY = 'ctl.courseaffils.course' def get_courses_for_user(user):