From 494524dc5cd0fab294a0d16decd31731211cab7b Mon Sep 17 00:00:00 2001 From: andruten Date: Fri, 14 Feb 2025 23:14:20 +0100 Subject: [PATCH 1/6] Standarized and homogenized arguments. Dropped python2-style super --- revproxy/views.py | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) 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) From 15aba8e3de70fc9ca2d0592959ef665ce490fc28 Mon Sep 17 00:00:00 2001 From: andruten Date: Fri, 14 Feb 2025 23:15:47 +0100 Subject: [PATCH 2/6] chore: adapted tests --- tests/test_request.py | 3 +-- tests/test_views.py | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/test_request.py b/tests/test_request.py index be364bd..6135ab7 100644 --- a/tests/test_request.py +++ b/tests/test_request.py @@ -349,8 +349,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_views.py b/tests/test_views.py index 1ccddfb..51a1579 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -168,7 +168,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 +236,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 From f16e0e0b48cdf49b248b13d729d3bbc6e481c82c Mon Sep 17 00:00:00 2001 From: andruten Date: Fri, 14 Feb 2025 23:15:57 +0100 Subject: [PATCH 3/6] chore: updated docs --- docs/proxyview.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From 22622723f4a1935ff74c006f31e8cb4530e07f06 Mon Sep 17 00:00:00 2001 From: andruten Date: Fri, 14 Feb 2025 23:49:26 +0100 Subject: [PATCH 4/6] Standarized and homogenized arguments. Dropped python2-style super --- revproxy/transformer.py | 7 ++----- tests/test_request.py | 8 +------- tests/test_transformer.py | 8 +------- tests/test_views.py | 6 +----- 4 files changed, 5 insertions(+), 24 deletions(-) diff --git a/revproxy/transformer.py b/revproxy/transformer.py index 5e94bd3..4a90cc1 100644 --- a/revproxy/transformer.py +++ b/revproxy/transformer.py @@ -5,13 +5,10 @@ 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 +string_types = str + try: from diazo.compiler import compile_theme except ImportError: diff --git a/tests/test_request.py b/tests/test_request.py index 6135ab7..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 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 51a1579..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 From 5de0d4027f352522bd71e0911303268148dc8636 Mon Sep 17 00:00:00 2001 From: andruten Date: Fri, 14 Feb 2025 23:51:25 +0100 Subject: [PATCH 5/6] chore: enforced ubuntu-22.04 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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'] From 4f719eb2e0ab6dfa0831b1007d0f358863306c28 Mon Sep 17 00:00:00 2001 From: andruten Date: Fri, 14 Feb 2025 23:53:53 +0100 Subject: [PATCH 6/6] chore: lint --- revproxy/transformer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/revproxy/transformer.py b/revproxy/transformer.py index 4a90cc1..166d06b 100644 --- a/revproxy/transformer.py +++ b/revproxy/transformer.py @@ -7,6 +7,8 @@ from django.template import loader +from .utils import get_charset, is_html_content_type + string_types = str try: @@ -18,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