Skip to content

Commit 8c5a2a9

Browse files
committed
Revert "Refactor purge_url() (#1340)"
This reverts commit f40b171.
1 parent 166e0bc commit 8c5a2a9

File tree

5 files changed

+37
-39
lines changed

5 files changed

+37
-39
lines changed

downloads/models.py

+15-17
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
from boxes.models import Box
1414
from cms.models import ContentManageable, NameSlugModel
15-
from fastly.utils import purge_urls
15+
from fastly.utils import purge_url
1616
from pages.models import Page
1717

1818
from .managers import ReleaseManager
@@ -242,23 +242,21 @@ def purge_fastly_download_pages(sender, instance, **kwargs):
242242

243243
# Only purge on published instances
244244
if instance.is_published:
245-
purge_urls(
246-
# Purge our common pages
247-
'/downloads/',
248-
'/downloads/latest/python2/',
249-
'/downloads/latest/python3/',
250-
'/downloads/mac-osx/',
251-
'/downloads/source/',
252-
'/downloads/windows/',
253-
# See issue #584 for details
254-
'/box/supernav-python-downloads/',
255-
'/box/homepage-downloads/',
256-
'/box/download-sources/',
257-
# Purge the release page itself
258-
instance.get_absolute_url(),
259-
)
245+
# Purge our common pages
246+
purge_url('/downloads/')
247+
purge_url('/downloads/latest/python2/')
248+
purge_url('/downloads/latest/python3/')
249+
purge_url('/downloads/mac-osx/')
250+
purge_url('/downloads/source/')
251+
purge_url('/downloads/windows/')
260252
if instance.get_version() is not None:
261-
purge_urls('/ftp/python/{}/'.format(instance.get_version()))
253+
purge_url('/ftp/python/{}/'.format(instance.get_version()))
254+
# See issue #584 for details
255+
purge_url('/box/supernav-python-downloads/')
256+
purge_url('/box/homepage-downloads/')
257+
purge_url('/box/download-sources/')
258+
# Purge the release page itself
259+
purge_url(instance.get_absolute_url())
262260

263261

264262
@receiver(post_save, sender=Release)

fastly/utils.py

+13-11
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
1-
import urllib.parse
2-
31
import requests
42

53
from django.conf import settings
64

75

8-
def purge_urls(*paths):
6+
def purge_url(path):
97
"""
10-
Purge Fastly cache for each given path.
8+
Purge a Fastly.com URL given a path. path argument must begin with a slash
119
"""
12-
api_key = getattr(settings, 'FASTLY_API_KEY', None)
13-
if not api_key or settings.DEBUG:
10+
if settings.DEBUG:
1411
return
1512

16-
with requests.session() as session:
17-
session.headers['Fastly-Key'] = api_key
18-
for path in paths:
19-
url = urllib.parse.urljoin('https://www.python.org', path)
20-
session.request('PURGE', url)
13+
api_key = getattr(settings, 'FASTLY_API_KEY', None)
14+
if api_key:
15+
response = requests.request(
16+
'PURGE',
17+
'https://www.python.org{}'.format(path),
18+
headers={'Fastly-Key': api_key},
19+
)
20+
return response
21+
22+
return None

jobs/models.py

+4-6
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from markupfield.fields import MarkupField
1212

1313
from cms.models import ContentManageable, NameSlugModel
14-
from fastly.utils import purge_urls
14+
from fastly.utils import purge_url
1515

1616
from .managers import JobQuerySet, JobTypeQuerySet, JobCategoryQuerySet
1717
from .signals import (
@@ -263,8 +263,6 @@ def purge_fastly_cache(sender, instance, **kwargs):
263263
return
264264

265265
if instance.status == Job.STATUS_APPROVED:
266-
purge_urls(
267-
reverse('jobs:job_detail', kwargs={'pk': instance.pk}),
268-
reverse('jobs:job_list'),
269-
reverse('jobs:job_rss'),
270-
)
266+
purge_url(reverse('jobs:job_detail', kwargs={'pk': instance.pk}))
267+
purge_url(reverse('jobs:job_list'))
268+
purge_url(reverse('jobs:job_rss'))

pages/models.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from markupfield.fields import MarkupField
1919

2020
from cms.models import ContentManageable
21-
from fastly.utils import purge_urls
21+
from fastly.utils import purge_url
2222

2323
from .managers import PageQuerySet
2424

@@ -86,7 +86,7 @@ def purge_fastly_cache(sender, instance, **kwargs):
8686
Purge fastly.com cache if in production and the page is published.
8787
Requires settings.FASTLY_API_KEY being set
8888
"""
89-
purge_urls(instance.path)
89+
purge_url('/{}'.format(instance.path))
9090

9191

9292
def page_image_path(instance, filename):

successstories/models.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from boxes.models import Box
1515
from cms.models import ContentManageable, NameSlugModel
1616
from companies.models import Company
17-
from fastly.utils import purge_urls
17+
from fastly.utils import purge_url
1818

1919

2020
PSF_TO_EMAILS = ['[email protected]']
@@ -109,11 +109,11 @@ def update_successstories_supernav(sender, instance, created, **kwargs):
109109
)
110110

111111
# Purge Fastly cache
112-
purge_urls('/box/supernav-python-success-stories/')
112+
purge_url('/box/supernav-python-success-stories/')
113113

114114
if instance.is_published:
115115
# Purge the page itself
116-
purge_urls(instance.get_absolute_url())
116+
purge_url(instance.get_absolute_url())
117117

118118

119119
@receiver(post_save, sender=Story)

0 commit comments

Comments
 (0)