diff --git a/.gitignore b/.gitignore index 74d8138..750b58f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.idea/ /example/database.sqlite3 /example/GeoLiteCity.dat /django_user_sessions.egg-info/ diff --git a/user_sessions/templatetags/user_sessions.py b/user_sessions/templatetags/user_sessions.py index 76d4447..c398fa6 100644 --- a/user_sessions/templatetags/user_sessions.py +++ b/user_sessions/templatetags/user_sessions.py @@ -15,7 +15,7 @@ (re.compile('Opera'), _('Opera')), (re.compile('IE'), _('Internet Explorer')), ) -DEVICES = ( +PLATFORMS = ( (re.compile('Windows Mobile'), _('Windows Mobile')), (re.compile('Android'), _('Android')), (re.compile('Linux'), _('Linux')), @@ -40,43 +40,80 @@ @register.filter -def device(value): +def platform(value): """ Transform a User Agent into human readable text. Example output: - * Safari on iPhone - * Chrome on Windows 8.1 - * Safari on macOS - * Firefox + * iPhone + * Windows 8.1 + * macOS * Linux * None """ + platform = None + for regex, name in PLATFORMS: + if regex.search(value): + platform = name + break + + return platform + + +@register.filter +def browser(value): + """ + Transform a User Agent into human readable text. + + Example output: + + * Safari + * Chrome + * Safari + * Firefox + * None + """ + browser = None for regex, name in BROWSERS: if regex.search(value): browser = name break - device = None - for regex, name in DEVICES: - if regex.search(value): - device = name - break + return browser + + +@register.filter +def device(value): + """ + Transform a User Agent into human readable text. + + Example output: + + * Safari on iPhone + * Chrome on Windows 8.1 + * Safari on macOS + * Firefox + * Linux + * None + """ + + browser_ = browser(value) + platform_ = platform(value) - if browser and device: + if browser_ and platform_: return _('%(browser)s on %(device)s') % { - 'browser': browser, - 'device': device + 'browser': browser_, + 'device': platform_ } - if browser: - return browser + if browser_: + return browser_ - if device: - return device + if platform_: + return platform_ return None