This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description


This package is gonna give you an easy tool to track anonymous user actions on your website. You choose a label for an action and everytime a user do this action you call the backend tracking method:

from tracker.models import Tracker
tracker = Tracker()

This action will increment the counter for the “user_connected” and the “user_clicked_button” label. You can also call the tracker from javascript if you install the tracker view:

from tracker.views import track, report

urlpatterns = patterns('',
    (r'^track/', track),

And then you can visit the /track/?labels=user_connected|user_clicked_button and it will have the same effect. e.g. with jQuery:

function track(labels) {
        url: '/track/?labels='+labels,
        dataType: 'text',
        type: "GET",
        error:function (xhr) {


You can also specify 2 extra informations separated by a colon:


The category will help in the admin interface to filter your statistics. The dom id can be used on a page to create a heat map. Here is simple example of how to use the dom_id information:

<div id="tracked-links">
<a href="#1" id="link1">Test link 1</a>
<a href="#2" id="link2">Test link 2</a>
<a href="#3" id="link3">Test link 3</a>
<a href="#4" id="link4">Test link 4</a>

<p><a href="/report/">Report the clicks in the database</a></p>
<p><a href="#" id="get-stats">Get the statistics</a></p>

<script src=""></script>
    $('#tracked-links a').click(function(e) {

        var dom_ids = "";
        $.each($('#tracked-links a'), function(index, value) {
            dom_ids += + '|';
            url: '/get_stats/?dom_ids='+dom_ids,
            dataType: 'json',
            type: "GET",
            error:function (xhr) {
            success: function(data, textStatus, XMLHttpRequest) {
                for(stat in data) {
                    var id = data[stat][0];
                    var counter = data[stat][1];
                    var label = data[stat][2];
                    $('#'+id).text('clicked '+counter+ ' time.')



This little script gather the id in the “tracked-links” div and make a request to the server to get the statistics about them. The action counter is then displayed inside the links. Take a look at the testproj for an working example.

How does it work?

Django tracker is easy on the database and is architectured to use memcache to count every action. To collect the memcache informations you will need to do one of these:

* Setup and call the `report` view every 2 minutes
* Setup a cron that call tracker.models.make_daily_report function every 2 minutes
* Setup the Celery task that is provided in `tracker.tasks`.

It also mean that you need to use memcache or at least the locmem cache backend (only if you have 1 server). It might work with a database cache but it will not be the best configuration.

All the informations are stored in daily Statistic models (1 record by label and by day). Those models can be used directly in the admin interface to examine interesting metrics of your website.


# python install # as root
Release History

Release History


This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting