Skip to content

Commit

Permalink
global: reuse of request context
Browse files Browse the repository at this point in the history
* FIX Reuses exiting request context if it exits. (closes #35)
  • Loading branch information
jirikuncar committed May 2, 2018
1 parent 0bde42b commit 850f83e
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions flask_sitemap/__init__.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
#
# This file is part of Flask-Sitemap
# Copyright (C) 2014, 2015, 2016 CERN.
# Copyright (C) 2014, 2015, 2016, 2017 CERN.
# Copyright (C) 2018 ETH Zurich, Swiss Data Science Center, Jiri Kuncar.
#
# Flask-Sitemap is free software; you can redistribute it and/or modify
Expand Down Expand Up @@ -31,7 +31,7 @@

from collections import Mapping
from flask import current_app, request, Blueprint, render_template, url_for, \
Response, make_response
Response, make_response, has_request_context
from flask.signals import Namespace
from functools import wraps
from itertools import islice
Expand Down Expand Up @@ -213,8 +213,8 @@ def _generate_all_urls(self):
_external=True,
_scheme=self.app.config.get('SITEMAP_URL_SCHEME')
)
# A request context is required to use url_for
with self.app.test_request_context():

def generator():
for generator in self.url_generators:
for generated in generator():
result = {}
Expand Down Expand Up @@ -245,6 +245,15 @@ def _generate_all_urls(self):
result['loc'] = url_for(endpoint, **values)
yield result

# A request context is required to use url_for
if not has_request_context():
with self.app.test_request_context():
for result in generator():
yield result
else:
for result in generator():
yield result

def gzip_response(self, data):
"""Gzip response data and create new Response instance."""
gzip_buffer = BytesIO()
Expand Down

0 comments on commit 850f83e

Please sign in to comment.