diff options
| author | Ad Timmering <awtimmering@gmail.com> | 2021-11-22 22:08:24 +0900 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-11-25 20:36:04 +0100 |
| commit | 9a6e2df3a8f01ea761529bec48e5a8dc0ea9575b (patch) | |
| tree | 627ae39fe9ba59f0ad6df6e82c59b2bc173fc870 /django | |
| parent | e361621dbc77b5d926ec4deff5e7c792a61db71e (diff) | |
Fixed #32397 -- Made startapp/startproject management commands set User-Agent.
This sets User-Agent to 'Django/<version>'.
Diffstat (limited to 'django')
| -rw-r--r-- | django/core/management/templates.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/django/core/management/templates.py b/django/core/management/templates.py index 6449342ae1..cfcaff7c0f 100644 --- a/django/core/management/templates.py +++ b/django/core/management/templates.py @@ -7,7 +7,7 @@ import shutil import stat import tempfile from importlib import import_module -from urllib.request import urlretrieve +from urllib.request import build_opener import django from django.conf import settings @@ -277,8 +277,14 @@ class TemplateCommand(BaseCommand): if self.verbosity >= 2: self.stdout.write('Downloading %s' % display_url) + + the_path = os.path.join(tempdir, filename) + opener = build_opener() + opener.addheaders = [('User-Agent', f'Django/{django.__version__}')] try: - the_path, info = urlretrieve(url, os.path.join(tempdir, filename)) + with opener.open(url) as source, open(the_path, 'wb') as target: + headers = source.info() + target.write(source.read()) except OSError as e: raise CommandError("couldn't download URL %s to %s: %s" % (url, filename, e)) @@ -286,7 +292,7 @@ class TemplateCommand(BaseCommand): used_name = the_path.split('/')[-1] # Trying to get better name from response headers - content_disposition = info.get('content-disposition') + content_disposition = headers['content-disposition'] if content_disposition: _, params = cgi.parse_header(content_disposition) guessed_filename = params.get('filename') or used_name @@ -295,7 +301,7 @@ class TemplateCommand(BaseCommand): # Falling back to content type guessing ext = self.splitext(guessed_filename)[1] - content_type = info.get('content-type') + content_type = headers['content-type'] if not ext and content_type: ext = mimetypes.guess_extension(content_type) if ext: |
