[z3-checkins] r52885 - in z3/deliverance/branches/rocky-delivers: . deliverance
rocky at codespeak.net
rocky at codespeak.net
Mon Mar 24 14:55:07 CET 2008
Author: rocky
Date: Mon Mar 24 14:55:05 2008
New Revision: 52885
Modified:
z3/deliverance/branches/rocky-delivers/CHANGES.txt
z3/deliverance/branches/rocky-delivers/deliverance/wsgimiddleware.py
Log:
- (wsgimiddleware) Now accepts url_black_list for determining when to
not filter things.
- (wsgimiddleware) Puts in some checks to make sure content is not getting
double-themed.
Modified: z3/deliverance/branches/rocky-delivers/CHANGES.txt
==============================================================================
--- z3/deliverance/branches/rocky-delivers/CHANGES.txt (original)
+++ z3/deliverance/branches/rocky-delivers/CHANGES.txt Mon Mar 24 14:55:05 2008
@@ -21,6 +21,12 @@
- (setup) Relax restriction on lxml 2.x (which should work fine).
+- (wsgimiddleware) Now accepts url_black_list for determining when to
+ not filter things.
+
+- (wsgimiddleware) Puts in some checks to make sure content is not getting
+ double-themed.
+
0.1.2 (2008-02-19)
------------------
Modified: z3/deliverance/branches/rocky-delivers/deliverance/wsgimiddleware.py
==============================================================================
--- z3/deliverance/branches/rocky-delivers/deliverance/wsgimiddleware.py (original)
+++ z3/deliverance/branches/rocky-delivers/deliverance/wsgimiddleware.py Mon Mar 24 14:55:05 2008
@@ -55,7 +55,8 @@
def __init__(self, app, theme_uri, rule_uri,
renderer='py', merge_cache_control=False,
- is_internal_uri=None, serializer=None):
+ is_internal_uri=None, serializer=None,
+ url_black_list=[]):
"""
initializer
@@ -77,11 +78,15 @@
serializer: dotted name or entry point indicdating a callable used
to post-process rendered output. Defaults to the '_toHTML' function
above.
+ url_black_list: if url matches anything inside this list, the item
+ will not be filtered. The items can either be strings or regular
+ expression objects.
"""
self.app = app
self.theme_uri = theme_uri
self.rule_uri = rule_uri
self.merge_cache_control = bool_from_string(merge_cache_control)
+ self.url_black_list = url_black_list
if renderer == 'py':
import interpreter
@@ -230,6 +235,11 @@
start_response(status, headers)
return body
+ if environ.get('deliverance.filtered', False) or \
+ ('deliverance-filtered', '1') in headers:
+ start_response(status, headers)
+ return body
+
# perform actual themeing
body = self.filter_body(environ, body)
@@ -241,6 +251,8 @@
headers,
self.merge_cache_control)
+ environ['deliverance.filtered'] = True
+ headers.append(('deliverance-filtered', '1'))
start_response(status, headers)
return [body]
@@ -533,9 +545,18 @@
def should_ignore_url(self, url):
- # blacklisting can happen here as well
- return re.match(IGNORE_URL_PATTERN, url) is not None
+ if re.match(IGNORE_URL_PATTERN, url) is not None:
+ return True
+
+ for x in self.url_black_list:
+ if isinstance(x, basestring):
+ if url.find(x) > -1:
+ return True
+ elif hasattr(x, 'match') and callable(x.match):
+ if x.match(url) is not None:
+ return True
+ return False
def always_external(uri, environ):
"""Always return False so the external loader is used.
@@ -550,6 +571,7 @@
def make_filter(app, global_conf,
theme_uri=None,
rule_uri=None,
+ url_black_list=[],
renderer='py',
merge_cache_control=False,
is_internal_uri=None,
@@ -568,6 +590,7 @@
merge_cache_control=merge_cache_control,
is_internal_uri=is_internal_uri,
serializer=serializer,
+ url_black_list=url_black_list,
)
_http_equiv_re = re.compile(r'<meta\s+[^>]*http-equiv="?content-type"?[^>]*>', re.I|re.S)
More information about the z3-checkins
mailing list