public: add header to skeleton requests with list of relevant pages (#17310)
This commit is contained in:
parent
78a40f5d98
commit
dfdc887569
|
@ -159,7 +159,10 @@ def skeleton(request):
|
|||
if 'source' not in request.GET:
|
||||
raise PermissionDenied()
|
||||
source = request.GET['source']
|
||||
|
||||
netloc = urlparse.urlparse(source).netloc
|
||||
selected_page = None
|
||||
same_domain_pages = []
|
||||
|
||||
# look in redirect pages after the best match for the source
|
||||
redirect_pages = Page.objects.exclude(redirect_url__isnull=True).exclude(redirect_url='')
|
||||
|
@ -169,14 +172,12 @@ def skeleton(request):
|
|||
if selected_page is None or len(redirect_url) > len(selected_page.get_redirect_url()):
|
||||
selected_page = page
|
||||
|
||||
if selected_page is None:
|
||||
# if there was no page found, look for a domain match
|
||||
netloc = urlparse.urlparse(source).netloc
|
||||
for page in redirect_pages:
|
||||
redirect_url = utils.get_templated_url(page.redirect_url)
|
||||
if urlparse.urlparse(redirect_url).netloc == netloc:
|
||||
selected_page = page
|
||||
break
|
||||
if urlparse.urlparse(redirect_url).netloc == netloc:
|
||||
same_domain_pages.append(page)
|
||||
|
||||
if selected_page is None and same_domain_pages:
|
||||
# if there was no page found, get a domain match
|
||||
selected_page = same_domain_pages[0]
|
||||
|
||||
if selected_page is None:
|
||||
# if there's still no page found, look in KNOWN_SERVICES, and
|
||||
|
@ -186,6 +187,7 @@ def skeleton(request):
|
|||
service = settings.KNOWN_SERVICES[service_id][service_key]
|
||||
if urlparse.urlparse(service.get('url')).netloc == netloc:
|
||||
selected_page = Page()
|
||||
selected_page.id = '__root'
|
||||
selected_page.template_name = 'standard'
|
||||
break
|
||||
else:
|
||||
|
@ -221,6 +223,8 @@ def skeleton(request):
|
|||
template_name = combo_template['template']
|
||||
response = render(request, template_name, ctx)
|
||||
response['X-Combo-Page-Id'] = str(selected_page.id)
|
||||
response['X-Combo-Skeleton-Pages'] = json.dumps(
|
||||
dict([(x.id, utils.get_templated_url(x.redirect_url)) for x in same_domain_pages]))
|
||||
return response
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue