diff --git a/mobler/middleware.py b/mobler/middleware.py index c5a4cf4..8ee067e 100755 --- a/mobler/middleware.py +++ b/mobler/middleware.py @@ -4,6 +4,7 @@ import time import urlparse import urllib +import re COOKIE_AGE = mobler_settings.MOBLER_COOKIE_AGE COOKIE_NAME = mobler_settings.MOBLER_COOKIE_NAME @@ -24,19 +25,22 @@ def process_request(self, request): is_mobile = browser.detect_mobile(user_agent) do_override = (request.COOKIES.get(COOKIE_NAME) == '1') - ## Check for the override GET param. If we have it, set the cookie and refresh. - if is_mobile and request.GET.get(COOKIE_NAME): - response = redirect(build_full_path(request)) - response.set_cookie(COOKIE_NAME, '1', time.time()+COOKIE_AGE) - return response + all_regex = "(" + ")|(".join(mobler_settings.MOBLER_EXCLUDE_URLS) + ")" - ## If we have a mobile UA but no browser override, redirect - ## to the mobile site. - if is_mobile and not do_override: - mobile_url = mobler_settings.MOBILE_DOMAIN - if mobler_settings.MOBLER_PRESERVE_URL: - mobile_url = urlparse.urljoin(mobile_url, build_full_path(request)) - return redirect(mobile_url) + if re.match(all_regex, request.path) is None: + ## Check for the override GET param. If we have it, set the cookie and refresh. + if is_mobile and request.GET.get(COOKIE_NAME): + response = redirect(build_full_path(request)) + response.set_cookie(COOKIE_NAME, '1', time.time()+COOKIE_AGE) + return response - ## We might be mobile, so set a flag on the request for convenience. - request.is_mobile = is_mobile + ## If we have a mobile UA but no browser override, redirect + ## to the mobile site. + if is_mobile and not do_override: + mobile_url = mobler_settings.MOBILE_DOMAIN + if mobler_settings.MOBLER_PRESERVE_URL: + mobile_url = urlparse.urljoin(mobile_url, build_full_path(request)[1:]) + return redirect(mobile_url) + + ## We might be mobile, so set a flag on the request for convenience. + request.is_mobile = is_mobile diff --git a/mobler/settings.py b/mobler/settings.py index 546bd04..7f01bd7 100755 --- a/mobler/settings.py +++ b/mobler/settings.py @@ -17,3 +17,4 @@ MOBLER_COOKIE_AGE = getattr(settings, 'MOBLER_COOKIE_AGE', 60*60*24*31) MOBLER_PRESERVE_URL = getattr(settings, 'MOBLER_PRESERVE_URL', True) MOBLER_UA_STRINGS = getattr(settings, 'MOBLER_UA_STRINGS', MOBLER_DEFAULT_UA_STRINGS) +MOBLER_EXCLUDE_URLS = getattr(settings, 'MOBLER_EXCLUDE_URLS', [])