Skip to content

Commit a76188a

Browse files
author
Gitea
committed
Make langcode transparent
There is a bugfix for the HttpClient, the url sent to it doesn't match regex pattern in locale middleware. For multilingual url, let user set the kwargs and lang_code pairs.
1 parent 4a88b5a commit a76188a

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

frozen_django/main.py

+12-10
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from mimetypes import guess_type
1010
import os
1111
from typing import Mapping
12-
from urllib.parse import urljoin, urlparse
12+
from urllib.parse import urlparse
1313
#-
1414
from bs4 import BeautifulSoup
1515
from django.conf import settings
@@ -102,7 +102,7 @@ def find_next_html_page(response, content):
102102
return None
103103

104104

105-
def follow_url(url, host, dest):
105+
def follow_url(url, host, dest, langcode):
106106
"""Capture response body from a url, follow next pagination page
107107
108108
:param url: Relative url, valid Django route
@@ -132,8 +132,9 @@ def follow_url(url, host, dest):
132132
for middleware in middlewares:
133133
view = middleware(view)
134134

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)
137138
response = view(request)
138139
content = response.render().content.decode()
139140

@@ -154,7 +155,7 @@ def follow_url(url, host, dest):
154155

155156

156157
def generate_static_view(view_name, frozen_host, frozen_dest=None, urlconf=None,
157-
**kwargs):
158+
langcode=None, **kwargs):
158159
"""Capture the contents of all urls related to specific view
159160
160161
: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,
185186
else:
186187
base_dir = settings.FROZEN_ROOT
187188

189+
if langcode is None:
190+
langcode = settings.LANGUAGE_CODE
191+
188192
resolver = get_resolver(urlconf)
189193
prefix = get_script_prefix()
194+
done_urls = set()
190195

191-
for langcode, _ in settings.LANGUAGES:
192-
translation.activate(langcode)
193-
194-
done_urls = set()
196+
with translation.override(langcode):
195197
for solver, view in walk_resolvers(view_name, resolver, '', {}):
196198
url = iri_to_uri(solver._reverse_with_prefix(view, prefix,
197199
**kwargs))
@@ -204,4 +206,4 @@ def generate_static_view(view_name, frozen_host, frozen_dest=None, urlconf=None,
204206
continue
205207

206208
while url:
207-
url = follow_url(url, frozen_host, base_dir)
209+
url = follow_url(url, frozen_host, base_dir, langcode)

setup.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = frozen-django
3-
version = 1.0.3
3+
version = 1.0.4
44
description = Build html files from Django views.
55
long_description = file: README.rst
66
url = https://github.com/dozymoe/frozen-django

0 commit comments

Comments
 (0)