Skip to content

Commit f3728ac

Browse files
committed
Migrate El Proxito views to class-based views
1 parent ff0ad67 commit f3728ac

File tree

8 files changed

+695
-625
lines changed

8 files changed

+695
-625
lines changed

readthedocs/proxito/tests/test_full.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import django_dynamic_fixture as fixture
66
import mock
77
from django.conf import settings
8-
from django.core.files.storage import Storage
98
from django.http import HttpResponse
109
from django.test.utils import override_settings
1110
from django.urls import reverse
@@ -126,7 +125,7 @@ class TestDocServingBackends(BaseDocServing):
126125
@override_settings(PYTHON_MEDIA=True)
127126
def test_python_media_serving(self):
128127
with mock.patch(
129-
'readthedocs.proxito.views.serve', return_value=HttpResponse()) as serve_mock:
128+
'readthedocs.proxito.views.mixins.serve', return_value=HttpResponse()) as serve_mock:
130129
url = '/en/latest/awesome.html'
131130
host = 'project.dev.readthedocs.io'
132131
self.client.get(url, HTTP_HOST=host)
@@ -173,7 +172,7 @@ def test_default_robots_txt(self):
173172
b'User-agent: *\nAllow: /\nSitemap: https://project.readthedocs.io/sitemap.xml\n'
174173
)
175174

176-
@mock.patch('readthedocs.proxito.views.get_storage_class')
175+
@mock.patch('readthedocs.proxito.views.serve.get_storage_class')
177176
def test_custom_robots_txt(self, storage_mock):
178177
self.project.versions.update(active=True, built=True)
179178
storage_mock()().exists.return_value = True
@@ -185,7 +184,7 @@ def test_custom_robots_txt(self, storage_mock):
185184
response['x-accel-redirect'], '/proxito/html/project/latest/robots.txt',
186185
)
187186

188-
@mock.patch('readthedocs.proxito.views.get_storage_class')
187+
@mock.patch('readthedocs.proxito.views.serve.get_storage_class')
189188
def test_directory_indexes(self, storage_mock):
190189
self.project.versions.update(active=True, built=True)
191190
storage_mock()().exists.return_value = True
@@ -201,7 +200,7 @@ def test_directory_indexes(self, storage_mock):
201200
response['location'], '/en/latest/index-exists/',
202201
)
203202

204-
@mock.patch('readthedocs.proxito.views.get_storage_class')
203+
@mock.patch('readthedocs.proxito.views.serve.get_storage_class')
205204
def test_directory_indexes_readme_serving(self, storage_mock):
206205
self.project.versions.update(active=True, built=True)
207206

@@ -218,7 +217,7 @@ def test_directory_indexes_readme_serving(self, storage_mock):
218217
response['location'], '/en/latest/readme-exists/README.html',
219218
)
220219

221-
@mock.patch('readthedocs.proxito.views.get_storage_class')
220+
@mock.patch('readthedocs.proxito.views.serve.get_storage_class')
222221
def test_directory_indexes_get_args(self, storage_mock):
223222
self.project.versions.update(active=True, built=True)
224223
storage_mock()().exists.return_value = True
@@ -234,7 +233,7 @@ def test_directory_indexes_get_args(self, storage_mock):
234233
response['location'], '/en/latest/index-exists/?foo=bar',
235234
)
236235

237-
@mock.patch('readthedocs.proxito.views.get_storage_class')
236+
@mock.patch('readthedocs.proxito.views.serve.get_storage_class')
238237
def test_404_storage_serves_404(self, storage_mock):
239238
self.project.versions.update(active=True, built=True)
240239

@@ -254,7 +253,7 @@ def test_404_storage_serves_404(self, storage_mock):
254253
response.status_code, 404
255254
)
256255

257-
@mock.patch('readthedocs.proxito.views.get_storage_class')
256+
@mock.patch('readthedocs.proxito.views.serve.get_storage_class')
258257
def test_404_storage_paths_checked(self, storage_mock):
259258
self.project.versions.update(active=True, built=True)
260259
storage_mock()().exists.return_value = False

readthedocs/proxito/urls.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,25 +33,32 @@
3333
from django.views import defaults
3434

3535
from readthedocs.constants import pattern_opts
36-
from readthedocs.proxito import views
36+
from readthedocs.proxito.views.serve import (
37+
ServeDocs,
38+
ServeError404,
39+
ServeRobotsTXT,
40+
ServeSitemapXML,
41+
)
42+
from readthedocs.proxito.views.redirects import redirect_page_with_filename
43+
from readthedocs.proxito.views.utils import fast_404
3744

3845

3946
urlpatterns = [
4047
# Serve custom 404 pages
4148
url(
4249
r'^_proxito_404_(?P<proxito_path>.*)$',
43-
views.serve_error_404,
50+
ServeError404.as_view(),
4451
name='serve_error_404',
4552
),
46-
url(r'robots\.txt$', views.robots_txt, name='robots_txt'),
47-
url(r'sitemap\.xml$', views.sitemap_xml, name='sitemap_xml'),
53+
url(r'robots\.txt$', ServeRobotsTXT.as_view(), name='robots_txt'),
54+
url(r'sitemap\.xml$', ServeSitemapXML.as_view(), name='sitemap_xml'),
4855

4956
# # TODO: Support this?
5057
# (Sub)project `page` redirect
5158
url(
5259
r'^(?:projects/(?P<subproject_slug>{project_slug})/)?'
5360
r'page/(?P<filename>.*)$'.format(**pattern_opts),
54-
views.redirect_page_with_filename,
61+
redirect_page_with_filename,
5562
name='redirect_page_with_filename',
5663
),
5764

@@ -63,7 +70,7 @@
6370
r'(?P<version_slug>{version_slug})/'
6471
r'(?P<filename>{filename_slug})$'.format(**pattern_opts)
6572
),
66-
views.serve_docs,
73+
ServeDocs.as_view(),
6774
name='docs_detail',
6875
),
6976

@@ -85,11 +92,11 @@
8592
r'^(?:projects/(?P<subproject_slug>{project_slug})/)?'
8693
r'(?P<filename>{filename_slug})$'.format(**pattern_opts)
8794
),
88-
views.serve_docs,
95+
ServeDocs.as_view(),
8996
name='docs_detail_singleversion_subproject',
9097
),
9198
]
9299

93100
# Use Django default error handlers to make things simpler
94-
handler404 = views.fast_404
101+
handler404 = fast_404
95102
handler500 = defaults.server_error

0 commit comments

Comments
 (0)