Skip to content

Commit ff5ee04

Browse files
stsewdhumitos
authored andcommitted
Revert "Proxito: test new implementation more broadly (#10599)"
This reverts commit 1d923d4.
1 parent 5d1a54f commit ff5ee04

File tree

5 files changed

+16
-26
lines changed

5 files changed

+16
-26
lines changed

readthedocs/api/v2/serializers.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,12 @@ class ProjectAdminSerializer(ProjectSerializer):
4343
general API, mostly for fields used in the build process
4444
"""
4545

46-
features = serializers.ReadOnlyField()
46+
features = serializers.SlugRelatedField(
47+
many=True,
48+
read_only=True,
49+
slug_field='feature_id',
50+
)
51+
4752
environment_variables = serializers.SerializerMethodField()
4853
skip = serializers.SerializerMethodField()
4954

readthedocs/projects/models.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1300,11 +1300,9 @@ def get_canonical_custom_domain(self):
13001300

13011301
return self.domains.filter(canonical=True).first()
13021302

1303-
@cached_property
1303+
@property
13041304
def features(self):
1305-
return list(
1306-
Feature.objects.for_project(self).values_list("feature_id", flat=True)
1307-
)
1305+
return Feature.objects.for_project(self)
13081306

13091307
def has_feature(self, feature_id):
13101308
"""
@@ -1314,7 +1312,7 @@ def has_feature(self, feature_id):
13141312
we consider the project to have the flag. This is used for deprecating a
13151313
feature or changing behavior for new projects
13161314
"""
1317-
return feature_id in self.features
1315+
return self.features.filter(feature_id=feature_id).exists()
13181316

13191317
def get_feature_value(self, feature, positive, negative):
13201318
"""
@@ -1452,6 +1450,9 @@ def __init__(self, *args, **kwargs):
14521450
def save(self, *args, **kwargs):
14531451
return 0
14541452

1453+
def has_feature(self, feature_id):
1454+
return feature_id in self.features
1455+
14551456
@property
14561457
def show_advertising(self):
14571458
"""Whether this project is ad-free (don't access the database)."""
@@ -1923,7 +1924,6 @@ def add_features(sender, **kwargs):
19231924
DISABLE_PAGEVIEWS = "disable_pageviews"
19241925
RESOLVE_PROJECT_FROM_HEADER = "resolve_project_from_header"
19251926
USE_UNRESOLVER_WITH_PROXITO = "use_unresolver_with_proxito"
1926-
USE_OLD_PROXITO_IMPLEMENTATION = "use_old_proxito_implementation"
19271927
ALLOW_VERSION_WARNING_BANNER = "allow_version_warning_banner"
19281928

19291929
# Versions sync related features
@@ -2015,12 +2015,6 @@ def add_features(sender, **kwargs):
20152015
"Proxito: Use new unresolver implementation for serving documentation files."
20162016
),
20172017
),
2018-
(
2019-
USE_OLD_PROXITO_IMPLEMENTATION,
2020-
_(
2021-
"Proxito: Use old Proxito implementation (no unresolver) for serving documentation files."
2022-
),
2023-
),
20242018
(
20252019
ALLOW_VERSION_WARNING_BANNER,
20262020
_("Dashboard: Allow project to use the version warning banner."),

readthedocs/proxito/middleware.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,9 +269,8 @@ def process_request(self, request): # noqa
269269

270270
# This is hacky because Django wants a module for the URLConf,
271271
# instead of also accepting string
272-
if project.urlconf and (
273-
project.has_feature(Feature.USE_OLD_PROXITO_IMPLEMENTATION)
274-
or not project.has_feature(Feature.USE_UNRESOLVER_WITH_PROXITO)
272+
if project.urlconf and not project.has_feature(
273+
Feature.USE_UNRESOLVER_WITH_PROXITO
275274
):
276275
# Stop Django from caching URLs
277276
# https://github.com/django/django/blob/7cf7d74/django/urls/resolvers.py#L65-L69 # noqa

readthedocs/proxito/views/serve.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,7 @@ def get(
140140
# and we don't want to issue infinite redirects.
141141
pass
142142

143-
use_new_implementation = not unresolved_domain.project.has_feature(
144-
Feature.USE_OLD_PROXITO_IMPLEMENTATION
145-
) and unresolved_domain.project.has_feature(Feature.USE_UNRESOLVER_WITH_PROXITO)
146-
if use_new_implementation:
143+
if unresolved_domain.project.has_feature(Feature.USE_UNRESOLVER_WITH_PROXITO):
147144
return self.get_using_unresolver(request)
148145

149146
original_version_slug = version_slug
@@ -531,10 +528,7 @@ def get(self, request, proxito_path, template_name="404.html"):
531528
log.debug('Executing 404 handler.')
532529

533530
unresolved_domain = request.unresolved_domain
534-
use_new_implementation = not unresolved_domain.project.has_feature(
535-
Feature.USE_OLD_PROXITO_IMPLEMENTATION
536-
) and unresolved_domain.project.has_feature(Feature.USE_UNRESOLVER_WITH_PROXITO)
537-
if use_new_implementation:
531+
if unresolved_domain.project.has_feature(Feature.USE_UNRESOLVER_WITH_PROXITO):
538532
return self.get_using_unresolver(request, proxito_path)
539533

540534
# Parse the URL using the normal urlconf, so we get proper subdomain/translation data

readthedocs/rtd_tests/tests/test_backend.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,6 @@ def test_use_shallow_clone(self):
294294
repo.update()
295295
repo.checkout('submodule')
296296
self.assertTrue(repo.use_shallow_clone())
297-
# Clear cache
298-
del self.project.features
299297
fixture.get(
300298
Feature,
301299
projects=[self.project],

0 commit comments

Comments
 (0)