Skip to main content

Statistics for Django projects

Project description

Build Status Coverage Status PyPI version

Statsy is an application for collecting and displaying statistics in your Django project.

Basic Usage

View decorator:

@statsy.watch
def index(request):
    ...
@statsy.watch(group='index', event='page_view')
def index(request):
    ...

Inside the view:

def like(request):
  statsy.send(
    group='post', event='like', user=request.user,
    value=17, content_object=post
  )
  ...

CBV Mixin:

class AboutView(WatchMixin, TemplateView):
    template_name = 'example/about.html'

    watch_group = 'info'
    watch_event = 'page_view'
    ...

From the template:

{% load statsy %}

{% statsy %}

...

var statsy = new Statsy()

statsy.send({
  'group': 'post',
  'event': 'subscription'
});

Installation

pip install django-statsy
# settings.py

INSTALLED_APPS = (
  ...

  'statsy',
)

If you want to display collected statistics you will also have to add Statsy’s URLs to your project’s URLs.

# urls.py
  ...

  url(r'^stats/', include('statsy.urls')),
  ...

Dashboard

Default out of the box graphs.

group\_overview

group_overview

Configuration

There are some settings you may want to change (default values are specified).

# settings.py

# By default Statsy caches lookups for a group and event
STATSY_CACHE_TIMEOUT = 60 * 15  # in seconds

# Statsy can work in async mode with Celery up and running
STATSY_ASYNC = False

# Full path to Celery application instance (e.g. 'example.celery_app.app')
CELERY_APP = None

# Permission to view stats pages
STATSY_VIEW_PERMISSION = 'statsy.stats_view'

Collect Options

All are optional.

# categorizing options
'group'
'event'

# some additional info about the stats object
'label'

# user associated with the action
# collected by default in @watch
'user'

# object of the action
'content_object'

# value can be <int>, <float> or <str>/<unicode>/etc.
'value'

# where did it happen
# collected by default in @watch
'url'

# how long did it take <int>
# collected by default in @watch
'duration'

# JSON for an extra data
'extra'

Extending

If you want to add your custom stats page to Statsy you’ll have to register it manually in “stats.py”.

# stats.py
import statsy

def some_awesome_stats(request):
    return render_to_response('app/awesome_stats.html')

statsy.site.register(some_awesome_stats)

You can also specify a category, a name or a permission

statsy.site.register(
    some_awesome_stats,
    category='Awesome stats',
    name='Most awesome',
    permission='user.view_awesome_stats'
)

Roadmap

  • Enhanced statistics view

  • Aggregation over time

  • User tracking

  • Realtime statistics

License

MIT

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-statsy-0.1.3.zip (615.3 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