diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4d0e128..6650de9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -6,7 +6,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 strategy: matrix: python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] diff --git a/docs/proxyview.rst b/docs/proxyview.rst index 6a816c1..aa0ebc0 100644 --- a/docs/proxyview.rst +++ b/docs/proxyview.rst @@ -100,7 +100,7 @@ This document covers the views provided by ``revproxy.views`` and all it's publi def get_request_headers(self): # Call super to get default headers - headers = super(CustomProxyView, self).get_request_headers() + headers = super().get_request_headers() # Add new header headers['DNT'] = 1 return headers @@ -207,7 +207,7 @@ This document covers the views provided by ``revproxy.views`` and all it's publi custom_attribute = 'hello' def get_context_data(self, **kwargs): - context_data = super(CustomProxyView, self).get_context_data(**kwargs) + context_data = super().get_context_data(**kwargs) context_data.update({'foo': 'bar'}) return context_data diff --git a/revproxy/transformer.py b/revproxy/transformer.py index 5e94bd3..166d06b 100644 --- a/revproxy/transformer.py +++ b/revproxy/transformer.py @@ -5,13 +5,12 @@ import logging -try: - from django.utils.six import string_types -except ImportError: - # Django 3 has no six - string_types = str from django.template import loader +from .utils import get_charset, is_html_content_type + +string_types = str + try: from diazo.compiler import compile_theme except ImportError: @@ -21,8 +20,6 @@ HAS_DIAZO = True from lxml import etree -from .utils import get_charset, is_html_content_type - #: Regex used to find the doctype-header in a html content doctype_re = re.compile(br"^]+>\s*", re.MULTILINE) #: String used to verify if request has a 'HTTP_X_DIAZO_OFF' header diff --git a/revproxy/views.py b/revproxy/views.py index 3298d46..4704106 100644 --- a/revproxy/views.py +++ b/revproxy/views.py @@ -8,15 +8,9 @@ import urllib3 -try: - from django.utils.six.moves.urllib.parse import ( - urlparse, urlencode, quote_plus, quote - ) -except ImportError: - # Django 3 has no six - from urllib.parse import ( - urlparse, urlencode, quote_plus, quote - ) +from urllib.parse import ( + urlparse, urlencode, quote_plus, quote +) from django.conf import settings from django.shortcuts import redirect @@ -65,8 +59,8 @@ class ProxyView(View): # default value, override this variable to change. streaming_amount = None - def __init__(self, *args, **kwargs): - super(ProxyView, self).__init__(*args, **kwargs) + def __init__(self, **kwargs): + super().__init__(**kwargs) self._rewrite = [] # Take all elements inside tuple, and insert into _rewrite @@ -104,7 +98,7 @@ def get_upstream(self, path): @classonlymethod def as_view(cls, **initkwargs): - view = super(ProxyView, cls).as_view(**initkwargs) + view = super().as_view(**initkwargs) view.csrf_exempt = True return view @@ -239,7 +233,8 @@ def _set_content_type(self, request, proxy_response): self.log.debug("Proxy response CONTENT-TYPE: %s", proxy_response.headers['Content-Type']) - def dispatch(self, request, path): + def dispatch(self, request, **kwargs): + path = kwargs["path"] self.request_headers = self.get_request_headers() redirect_to = self._format_path_to_redirect(request) @@ -279,8 +274,8 @@ def diazo_rules(self): def diazo_rules(self, value): self._diazo_rules = value - def dispatch(self, request, path): - response = super(DiazoProxyView, self).dispatch(request, path) + def dispatch(self, request, **kwargs): + response = super().dispatch(request, **kwargs) context_data = self.get_context_data() diazo = DiazoTransformer(request, response) diff --git a/tests/test_request.py b/tests/test_request.py index be364bd..23b93a3 100644 --- a/tests/test_request.py +++ b/tests/test_request.py @@ -1,10 +1,4 @@ - -import sys - -if sys.version_info >= (3, 0, 0): - from urllib.parse import parse_qs -else: - from urlparse import parse_qs +from urllib.parse import parse_qs from django.contrib.auth.models import AnonymousUser, User from django.test import TestCase, RequestFactory @@ -349,8 +343,7 @@ class CustomProxyView(ProxyView): upstream = url def get_request_headers(self): - request_headers = super(CustomProxyView, - self).get_request_headers() + request_headers = super().get_request_headers() request_headers['Host'] = 'foo.bar' return request_headers diff --git a/tests/test_transformer.py b/tests/test_transformer.py index d36bbfd..78a85cf 100644 --- a/tests/test_transformer.py +++ b/tests/test_transformer.py @@ -1,7 +1,4 @@ # -*- coding: utf-8 -*- - -from sys import version_info - from unittest.mock import patch, MagicMock, PropertyMock from django.test import RequestFactory, TestCase @@ -18,10 +15,7 @@ `¡™£¢∞§¶•ªº–≠œ∑´®†\“‘«åß∂ƒ©˙∆˚¬…æΩ≈ç√∫˜µ≤≥÷ áéíóúÁÉÍÓÚàèìòùÀÈÌÒÙäëïöüÄËÏÖÜãõÃÕçÇ""" -if version_info >= (3, 0, 0): - FILE_CONTENT = bytes(CONTENT, 'utf-8') -else: - FILE_CONTENT = CONTENT +FILE_CONTENT = bytes(CONTENT, 'utf-8') class CustomProxyView(DiazoProxyView): diff --git a/tests/test_views.py b/tests/test_views.py index 1ccddfb..bb10c8b 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -1,13 +1,9 @@ import os from unittest.mock import patch +from urllib.parse import ParseResult from django.conf import settings from django.test import TestCase, RequestFactory, override_settings -try: - from django.utils.six.moves.urllib.parse import ParseResult -except ImportError: - # Django 3 has no six - from urllib.parse import ParseResult from revproxy.exceptions import InvalidUpstream from revproxy.views import ProxyView, DiazoProxyView @@ -168,7 +164,7 @@ class CustomProxyView(DiazoProxyView): def get_context_data(self, **kwargs): context_data = {'key': 'value'} context_data.update(kwargs) - return super(CustomProxyView, self).get_context_data(**context_data) + return super().get_context_data(**context_data) class TextGetContextData(CustomProxyView): def get_context_data(self, **kwargs): @@ -236,8 +232,7 @@ class CustomProxyView(ProxyView): upstream = 'http://example.com' def get_proxy_request_headers(self, request): - headers = super(CustomProxyView, self).\ - get_proxy_request_headers(request) + headers = super().get_proxy_request_headers(request) headers['DNT'] = 1 return headers