0001-misc-use-legacy-urls-to-call-up-to-date-urls-63237.patch
tests/test_misc.py | ||
---|---|---|
592 | 592 |
mock_request.assert_called_once_with( |
593 | 593 |
'GET', 'https://example.com/', cert=None, data=None, headers={}, proxies=None, timeout=42 |
594 | 594 |
) |
595 | ||
596 | ||
597 |
@mock.patch('requests.Session.request') |
|
598 |
def test_http_request_url_switch(mock_request): |
|
599 |
response = {'err': 0, 'data': []} |
|
600 |
mock_json = mock.Mock(status_code=200) |
|
601 |
mock_json.json.return_value = response |
|
602 |
mock_request.return_value = mock_json |
|
603 |
pub = create_temporary_pub() |
|
604 |
pub.load_site_options() |
|
605 |
from django.conf import settings |
|
606 | ||
607 |
settings.REQUESTS_TIMEOUT = 28 |
|
608 | ||
609 |
_http_request('https://example.com/') |
|
610 |
mock_request.assert_called_once_with( |
|
611 |
'GET', 'https://example.com/', cert=None, data=None, headers={}, proxies=None, timeout=28 |
|
612 |
) |
|
613 |
mock_request.reset_mock() |
|
614 | ||
615 |
pub.site_options.add_section('legacy-urls') |
|
616 |
pub.site_options.set('legacy-urls', 'new.example.com', 'example.com,old.example.com') |
|
617 | ||
618 |
_http_request('https://example.com/') |
|
619 |
mock_request.assert_called_once_with( |
|
620 |
'GET', 'https://new.example.com/', cert=None, data=None, headers={}, proxies=None, timeout=28 |
|
621 |
) |
|
622 |
mock_request.reset_mock() |
|
623 | ||
624 |
_http_request('https://old.example.com/') |
|
625 |
mock_request.assert_called_once_with( |
|
626 |
'GET', 'https://new.example.com/', cert=None, data=None, headers={}, proxies=None, timeout=28 |
|
627 |
) |
|
628 |
mock_request.reset_mock() |
wcs/qommon/misc.py | ||
---|---|---|
354 | 354 |
def _http_request( |
355 | 355 |
url, method='GET', body=None, headers=None, cert_file=None, timeout=None, raise_on_http_errors=False |
356 | 356 |
): |
357 |
pub = get_publisher() |
|
357 | 358 |
headers = headers or {} |
358 |
get_publisher().reload_cfg()
|
|
359 |
pub.reload_cfg()
|
|
359 | 360 | |
360 | 361 |
splitted_url = urllib.parse.urlsplit(url) |
361 | 362 |
if splitted_url.scheme not in ('http', 'https'): |
... | ... | |
364 | 365 |
hostname = splitted_url.netloc |
365 | 366 |
timeout = timeout or settings.REQUESTS_TIMEOUT |
366 | 367 | |
368 |
lecacy_urls = pub.get_legacy_urls() |
|
369 |
if hostname in lecacy_urls: |
|
370 |
hostname = lecacy_urls[hostname] |
|
371 |
url = splitted_url._replace(netloc=hostname).geturl() |
|
372 | ||
367 | 373 |
if cert_file is None: |
368 | 374 |
for url_prefix, cert in settings.REQUESTS_CERT.items(): |
369 | 375 |
if url.startswith(url_prefix): |
wcs/qommon/publisher.py | ||
---|---|---|
954 | 954 |
d['manager_homepage_title'] = d.get('portal_agent_title') |
955 | 955 |
return d |
956 | 956 | |
957 |
def get_legacy_urls(self): |
|
958 |
res = {} |
|
959 |
if self.site_options is None: |
|
960 |
self.load_site_options() |
|
961 |
try: |
|
962 |
legcay_urls = dict(self.site_options.items('legacy-urls', raw=True)) |
|
963 |
for k, v in legcay_urls.items(): |
|
964 |
old_domains = v.split(',') |
|
965 |
for old_domain in old_domains: |
|
966 |
res[old_domain] = k |
|
967 |
except configparser.NoSectionError: |
|
968 |
pass |
|
969 |
return res |
|
970 | ||
957 | 971 |
def is_relatable_url(self, url): |
958 | 972 |
parsed_url = urllib.parse.urlparse(url) |
959 | 973 |
if not parsed_url.netloc: |
960 |
- |