1+ import functools
12import re
23import os
34
1314pep_url = lambda num : 'dev/peps/pep-{}/' .format (num )
1415
1516
16- def check_paths ():
17- """ Checks to ensure our PEP_REPO_PATH is setup correctly """
18- if not hasattr (settings , 'PEP_REPO_PATH' ):
19- raise ImproperlyConfigured ("No PEP_REPO_PATH in settings" )
20-
21- if not os .path .exists (settings .PEP_REPO_PATH ):
22- raise ImproperlyConfigured ("PEP_REPO_PATH in settings does not exist" )
17+ def check_paths (func ):
18+ """Ensure that our PEP_REPO_PATH is setup correctly."""
19+ @functools .wraps (func )
20+ def wrapped (* args , ** kwargs ):
21+ if not hasattr (settings , 'PEP_REPO_PATH' ):
22+ raise ImproperlyConfigured ('No PEP_REPO_PATH in settings' )
23+ if not os .path .exists (settings .PEP_REPO_PATH ):
24+ raise ImproperlyConfigured ('Path set as PEP_REPO_PATH does not exist' )
25+ return func (* args , ** kwargs )
26+ return wrapped
2327
2428
29+ @check_paths
2530def convert_pep0 ():
2631 """
2732 Take existing generated pep-0000.html and convert to something suitable
2833 for a Python.org Page returns the core body HTML necessary only
2934 """
30- check_paths ()
31-
3235 pep0_path = os .path .join (settings .PEP_REPO_PATH , 'pep-0000.html' )
3336 pep0_content = open (pep0_path ).read ()
3437
@@ -60,7 +63,7 @@ def convert_pep0():
6063 if 'Version:' in t .text and 'N/A' in t .next_sibling .text :
6164 t .parent .extract ()
6265
63- return '' .join ([header . prettify ( ), pep_content . prettify ( )])
66+ return '' .join ([str ( header ), str ( pep_content )])
6467
6568
6669def get_pep0_page (commit = True ):
@@ -109,11 +112,11 @@ def fix_headers(soup, data):
109112 return soup , data
110113
111114
115+ @check_paths
112116def convert_pep_page (pep_number , content ):
113117 """
114118 Handle different formats that pep2html.py outputs
115119 """
116- check_paths ()
117120 data = {
118121 'title' : None ,
119122 }
@@ -132,11 +135,11 @@ def convert_pep_page(pep_number, content):
132135
133136 header = soup .body .find ('div' , class_ = "header" )
134137 header , data = fix_headers (header , data )
135- data ['header' ] = header . prettify ( )
138+ data ['header' ] = str ( header )
136139
137140 main_content = soup .body .find ('div' , class_ = "content" )
138141
139- data ['main_content' ] = main_content . prettify ( )
142+ data ['main_content' ] = str ( main_content )
140143 data ['content' ] = '' .join ([
141144 data ['header' ],
142145 data ['main_content' ]
@@ -155,7 +158,7 @@ def convert_pep_page(pep_number, content):
155158 data ['title' ],
156159 )
157160
158- data ['content' ] = soup . prettify ( )
161+ data ['content' ] = str ( soup )
159162
160163 # Fix PEP links
161164 pep_content = BeautifulSoup (data ['content' ])
@@ -172,7 +175,7 @@ def convert_pep_page(pep_number, content):
172175
173176 b .attrs ['href' ] = '/dev/peps/pep-{}/' .format (m .group (1 ))
174177
175- data ['content' ] = pep_content . prettify ( )
178+ data ['content' ] = str ( pep_content )
176179
177180 source_link = "https://github.com/python/peps/blob/master/pep-{0}.txt" .format (pep_number )
178181 data ['content' ] += """Source: <a href="{0}">{0}</a>""" .format (source_link )
@@ -187,6 +190,7 @@ def get_pep_page(pep_number, commit=True):
187190 pep_path = os .path .join (settings .PEP_REPO_PATH , 'pep-{}.html' .format (pep_number ))
188191 if not os .path .exists (pep_path ):
189192 print ("PEP Path '{}' does not exist, skipping" .format (pep_path ))
193+ return
190194
191195 pep_content = convert_pep_page (pep_number , open (pep_path ).read ())
192196
@@ -208,6 +212,7 @@ def add_pep_image(pep_number, path):
208212 image_path = os .path .join (settings .PEP_REPO_PATH , path )
209213 if not os .path .exists (image_path ):
210214 print ("Image Path '{}' does not exist, skipping" .format (image_path ))
215+ return
211216
212217 try :
213218 page = Page .objects .get (path = pep_url (pep_number ))
@@ -250,12 +255,13 @@ def add_pep_image(pep_number, path):
250255 if img_tag ['src' ] == path :
251256 img_tag ['src' ] = os .path .join (settings .MEDIA_URL , page .path , path )
252257
253- page .content .raw = soup . prettify ( )
258+ page .content .raw = str ( soup )
254259 page .save ()
255260
256261 return image
257262
258263
264+ @check_paths
259265def get_peps_rss ():
260266 rss_feed = os .path .join (settings .PEP_REPO_PATH , 'peps.rss' )
261267 if not os .path .exists (rss_feed ):
0 commit comments