Responsive :)

- Android routenplaner support
This commit is contained in:
Martin Bauer
2013-11-10 20:47:05 +01:00
parent 81120ab385
commit c693b7b1e5
19 changed files with 313 additions and 115 deletions

View File

@@ -41,4 +41,43 @@ class EnforceLoginMiddleware(object):
return HttpResponseRedirect("%s?next=%s" % (self.login_url, request.path))
except AttributeError:
return HttpResponseRedirect("%s?next=%s" % (self.login_url, request.path))
class DetectDevice(object):
def process_request(self, request):
device = self.mobile(request)
request.device = device
def mobile(self, request):
device = {}
ua = request.META.get('HTTP_USER_AGENT', '').lower()
if ua.find("iphone") > 0:
device['iphone'] = "iphone" + re.search("iphone os (\d)", ua).groups(0)[0]
if ua.find("ipad") > 0:
device['ipad'] = "ipad"
if ua.find("android") > 0:
device['android'] = "android" + re.search("android (\d\.\d)", ua).groups(0)[0].translate(None, '.')
if ua.find("blackberry") > 0:
device['blackberry'] = "blackberry"
if ua.find("windows phone os 7") > 0:
device['winphone7'] = "winphone7"
if ua.find("iemobile") > 0:
device['winmo'] = "winmo"
if not device: # either desktop, or something we don't care about.
device['baseline'] = "baseline"
# spits out device names for CSS targeting, to be applied to <html> or <body>.
device['classes'] = " ".join(v for (k,v) in device.items())
return device

View File

@@ -113,7 +113,8 @@ MIDDLEWARE_CLASSES = (
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'blechreiz.middleware.EnforceLoginMiddleware'
'blechreiz.middleware.EnforceLoginMiddleware',
'blechreiz.middleware.DetectDevice',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)