)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"a093c9230b00419b8a0e5d5f88a1b4a171236d6b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e39147bf_d1b9312d","updated":"2026-03-18 15:14:48.000000000","message":"recheck help url timeout","commit_id":"0ffa569429fb9323667c26253fe3c2a2f3710c86"}],"horizon/middleware/base.py":[{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"1f42ac2332828c9e3bf0202c7759b863de07dd75","unresolved":true,"context_lines":[{"line_number":173,"context_line":"                # use django\u0027s messages methods here."},{"line_number":174,"context_line":"                for tag, message, extra_tags in queued_msgs:"},{"line_number":175,"context_line":"                    getattr(django_messages, tag)(request, message, extra_tags)"},{"line_number":176,"context_line":"                if response[\u0027location\u0027].startswith(settings.LOGIN_URL):"},{"line_number":177,"context_line":"                    redirect_response \u003d http.HttpResponse(status\u003d401)"},{"line_number":178,"context_line":"                    # This header is used for handling the logout in JS"},{"line_number":179,"context_line":"                    redirect_response[\u0027logout\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"04dce9f0_b7eaab33","line":176,"updated":"2026-03-18 09:33:48.000000000","message":"Since we redirect to the login screen now instead of the LOGOUT_URL, it\u0027s the LOGIN_URL not that is special.","commit_id":"71bf6b9481f4782bd104b731abfd328db94a2a39"}],"horizon/test/unit/middleware/test_base.py":[{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"1f42ac2332828c9e3bf0202c7759b863de07dd75","unresolved":true,"context_lines":[{"line_number":51,"context_line":"        self.assertRedirects(resp, settings.TESTSERVER + url)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_process_response_redirect_on_ajax_request(self):"},{"line_number":54,"context_line":"        url \u003d settings.LOGIN_REDIRECT_URL"},{"line_number":55,"context_line":"        mw \u003d middleware.HorizonMiddleware(self.get_response)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        request \u003d self.factory.post(url,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ec478ba4_d0c0ae21","line":54,"updated":"2026-03-18 09:33:48.000000000","message":"The LOGIN_URL is now special in ajax responses, since it replaced LOGOUT_URL, so use a different url for testing here.","commit_id":"71bf6b9481f4782bd104b731abfd328db94a2a39"}],"openstack_dashboard/dashboards/identity/groups/tables.py":[{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"1f42ac2332828c9e3bf0202c7759b863de07dd75","unresolved":true,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":"LOGOUT_URL \u003d \u0027logout\u0027"},{"line_number":32,"context_line":"STATUS_CHOICES \u003d ("},{"line_number":33,"context_line":"    (\"true\", True),"},{"line_number":34,"context_line":"    (\"false\", False)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5482ba69_3adfd1a5","side":"PARENT","line":31,"updated":"2026-03-18 09:33:48.000000000","message":"this was unused","commit_id":"967199f9555db3e53741b044a0d3bfc809b2bd9d"}]}
