9
9
from mimetypes import guess_type
10
10
import os
11
11
from typing import Mapping
12
- from urllib .parse import urljoin , urlparse
12
+ from urllib .parse import urlparse
13
13
#-
14
14
from bs4 import BeautifulSoup
15
15
from django .conf import settings
@@ -102,7 +102,7 @@ def find_next_html_page(response, content):
102
102
return None
103
103
104
104
105
- def follow_url (url , host , dest ):
105
+ def follow_url (url , host , dest , langcode ):
106
106
"""Capture response body from a url, follow next pagination page
107
107
108
108
:param url: Relative url, valid Django route
@@ -132,8 +132,9 @@ def follow_url(url, host, dest):
132
132
for middleware in middlewares :
133
133
view = middleware (view )
134
134
135
- request = RequestFactory (SERVER_NAME = host )\
136
- .get (urljoin (host , url .lstrip ('/' )))
135
+ headers = {'Accept-Language' : langcode }
136
+ request = RequestFactory (SERVER_NAME = host , HTTP_HOST = host ).get (url ,
137
+ ** headers )
137
138
response = view (request )
138
139
content = response .render ().content .decode ()
139
140
@@ -154,7 +155,7 @@ def follow_url(url, host, dest):
154
155
155
156
156
157
def generate_static_view (view_name , frozen_host , frozen_dest = None , urlconf = None ,
157
- ** kwargs ):
158
+ langcode = None , ** kwargs ):
158
159
"""Capture the contents of all urls related to specific view
159
160
160
161
:param view_name: Fully qualified name of view
@@ -185,13 +186,14 @@ def generate_static_view(view_name, frozen_host, frozen_dest=None, urlconf=None,
185
186
else :
186
187
base_dir = settings .FROZEN_ROOT
187
188
189
+ if langcode is None :
190
+ langcode = settings .LANGUAGE_CODE
191
+
188
192
resolver = get_resolver (urlconf )
189
193
prefix = get_script_prefix ()
194
+ done_urls = set ()
190
195
191
- for langcode , _ in settings .LANGUAGES :
192
- translation .activate (langcode )
193
-
194
- done_urls = set ()
196
+ with translation .override (langcode ):
195
197
for solver , view in walk_resolvers (view_name , resolver , '' , {}):
196
198
url = iri_to_uri (solver ._reverse_with_prefix (view , prefix ,
197
199
** kwargs ))
@@ -204,4 +206,4 @@ def generate_static_view(view_name, frozen_host, frozen_dest=None, urlconf=None,
204
206
continue
205
207
206
208
while url :
207
- url = follow_url (url , frozen_host , base_dir )
209
+ url = follow_url (url , frozen_host , base_dir , langcode )
0 commit comments