Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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']
Expand Down
4 changes: 2 additions & 2 deletions docs/proxyview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down
11 changes: 4 additions & 7 deletions revproxy/transformer.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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"^<!DOCTYPE\s[^>]+>\s*", re.MULTILINE)
#: String used to verify if request has a 'HTTP_X_DIAZO_OFF' header
Expand Down
25 changes: 10 additions & 15 deletions revproxy/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
11 changes: 2 additions & 9 deletions tests/test_request.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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

Expand Down
8 changes: 1 addition & 7 deletions tests/test_transformer.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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):
Expand Down
11 changes: 3 additions & 8 deletions tests/test_views.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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):
Expand Down Expand Up @@ -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

Expand Down