Can ban certain IP addresses, rendering the site useless to visitors from
those IP's (great for stopping spam)

The ability to have a live feed of active users on your website

Template tags to:

display how many active users there are on your site

determine how many active users are on the same page within your site

Optional "Active Visitors Map" to see where visitors are in the world

Requirements

As far as I am aware, the only requirement for django-tracking to work is a
modern version of Django. I developed the project on Django 1.0 alpha 2 and
beta 1. It is designed to work with the newforms-admin functionality.

If you wish to use a Google Map to display where your visitors are probably at,
you must have a Google Maps API key, which is free. You
are required to have the GeoIP C API library installed.
You might want to grab the GeoLite City binary unless you are a paying MaxMind
customer. This is the data file that django-tracking uses to translate an
IP into a location on the planet. Configuring this feature is discussed later.

Run manage.py syncdb. This creates a few tables in your database that are
necessary for operation.

Depending on how you wish to use this application, you have a few options:

Visitor Tracking

Add tracking.middleware.VisitorTrackingMiddleware to your
MIDDLEWARE_CLASSES in settings.py. It must be underneath the
AuthenticationMiddleware, so that request.user exists.

Automatic Visitor Clean-Up

If you want to have Django automatically clean past visitor information out
your database, put tracking.middleware.VisitorCleanUpMiddleware in your
MIDDLEWARE_CLASSES.

IP Banning

Add tracking.middleware.BannedIPMiddleware to your MIDDLEWARE_CLASSES
in settings.py. I would recommend making this the very first item in
MIDDLEWARE_CLASSES so your banned users do not have to drill through any
other middleware before Django realizes they don't belong on your site.

Visitors on Page (template tag)

Make sure that django.core.context_processors.request is somewhere in your
TEMPLATE_CONTEXT_PROCESSORS tuple. This context processor makes the
request object accessible to your templates. This application uses the
request object to determine what page the user is looking at in a template
tag.

Active Visitors Map

If you're interested in seeing where your visitors are at a given point in
time, you might enjoy the active visitor map feature. Be sure you have added a
line to your main URLconf, as follows:

4: just cache the most frequently accessed index portion of the
database, resulting in faster lookups than GEOIP_STANDARD, but less
memory usage than GEOIP_MEMORY_CACHE - useful for larger databases
such as GeoIP Organization and GeoIP City. Note, for GeoIP Country,
Region and Netspeed databases, GEOIP_INDEX_CACHE is equivalent to
GEOIP_MEMORY_CACHE. default

DEFAULT_TRACKING_TEMPLATE: The template to use when generating the
visitor map. Defaults to tracking/visitor_map.html.

When that's done, you should be able to go to /tracking/map/ on your site
(replacing tracking with whatever prefix you chose to use in your URLconf,
obviously). The default template relies upon jQuery for its awesomeness, but
you're free to use whatever you would like.

Usage

To display the number of active users there are in one of your templates, make
sure you have {% load tracking_tags %} somewhere in your template and do
something like this:

If you don't want particular areas of your site to be tracked, you may define a
list of prefixes in your settings.py using the NO_TRACKING_PREFIXES. For
example, if you didn't want visits to the /family/ section of your website,
set NO_TRACKING_PREFIXES to ['/family/'].

If you don't want to count certain user-agents, such as Yahoo!'s Slurp and
Google's Googlebot, you may add keywords to your visitor tracking in your
Django administration interface. Look for "Untracked User-Agents" and add a
keyword that distinguishes a particular user-agent. Any visitors with the
keyword in their user-agent string will not be tracked.

By default, active users include any visitors within the last 10 minutes. If
you would like to override that setting, just set TRACKING_TIMEOUT to however
many minutes you want in your settings.py.

For automatic visitor clean-up, any records older than 24 hours are removed by
default. If you would like to override that setting, set
TRACKING_CLEANUP_TIMEOUT to however many hours you want in your
settings.py.

Good luck! Please contact me with any questions or concerns you have with the
project!