Skip to main content

django-pybrowscap is django middleware with support for pybrowscap

Project description

django-pybrowscap is django middleware with support for pybrowscap. It decorates request with browser attribute, which contains all possible information about the User-Agent accessing the view.

Requirements

Installation

Install via pipy or copy this module into your project or into your PYTHON_PATH.

Put django_pybrowscap into INSTALLED_APPS in your projects settings.py file

INSTALLED_APPS = (
    'localeurl',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    'django.contrib.sitemaps',
    'web',
    'debug_toolbar',
    'rosetta',
    'south',
    'django_pybrowscap'
)

Put django_pybrowscap.middleware.PybrowscapMiddleware into MIDDLEWARE_CLASSES in your projects settings.py file

MIDDLEWARE_CLASSES = (
    'web.middleware.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django_pybrowscap.middleware.PybrowscapMiddleware',
    ....
)

Configuration

django settings.py constants

# This setting will effectively turn the middleware off, to speed up requests/response while developing
PYBROWSCAP_INITIALIZE = True # Default is `not settings.DEBUG`.

# Path where browscap file is located on filesystem
PYBROWSCAP_FILE_PATH = MEDIA_ROOT+os.sep+'browscap.csv' # Default is '' (empty string)

# Proxy to use
# See: http://docs.python-requests.org/en/latest/user/advanced/#proxies
PYBROWSCAP_PROXIES = {
  "http": "http://user:pass@10.10.1.10:3128",
  "https": "http://10.10.1.10:1080",
} # Defaults to None.

# Timeout for HTTP requets
# See: http://docs.python-requests.org/en/latest/user/quickstart/#timeouts
PYBROWSCAP_HTTP_TIMEOUT = 30

# Tuple of regular expressions of paths that are to be ignored by the middleware
PYBROWSCAP_IGNORE_PATHS = (
    re.compile(r'^/sitemap.xml$'),
    re.compile(r'^/robots.txt$'),
    re.compile(r'^/favicon.ico$'),
    re.compile(r'^/media/')
) # Defaults to an empty tupple.

# This tells middleware to reload browscap file from disk every PYBROWSCAP_RELOAD_INTERVAL seconds
PYBROWSCAP_RELOAD = True # Reload file. Default is False.
PYBROWSCAP_RELOAD_INTERVAL =  7 * 24 * 60 * 60 # Reloads browscap file once a week

Automatic Updates

Download latest version of the browscap data by executing the builtin management command::

$ python manage.py download_browscap \
--url http://browsers.garykeith.com/stream.asp?BrowsCapCSV \
--file-path /path/to/downloaded/browscap_file

You don’t need to provide any options for this command. By default, latest CSV browscap file will be downloaded and saved to settings.PYBROWSCAP_FILE_PATH. Don’t forget to set your settings.PYBROWSCAP_RELOAD = True. For convenience execute the command via cron automatically once a week::

5 8 * * 6 python manage.py download_browscap

Example

def standard_view(request):
    if request.browser is not None and request.browser.is_crawler():
        # do something
    else:
        # do something else

Tests

Tested on evnironment

  • Xubuntu Linux 12.04 LTS precise 64-bit

  • python 2.7.3

  • python unitest

  • browscap_14_05_2012.csv from Mon, 14 May 2012 22:20:20 -0000

Running tests

To run the tests, execute one of the following commands::

$ python setup.py test
$ make test

Author

char0n (Vladimir Gorej, CodeScale)

References

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-pybrowscap-1.0.0.tar.gz (8.4 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page