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.5.zip (615.4 kB view details)

Uploaded Source

File details

Details for the file django-statsy-0.1.5.zip.

File metadata

  • Download URL: django-statsy-0.1.5.zip
  • Upload date:
  • Size: 615.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for django-statsy-0.1.5.zip
Algorithm Hash digest
SHA256 5e7053f135380bae2cba92f1e6343189effcae764cbcc23328b3c82a89e96afc
MD5 b0a1fb8ed06b1a0151f03c3b368234de
BLAKE2b-256 f5b4fa2e45fd928af642d6a84e4340305194d150f44b3cc47e292c5e22eb574e

See more details on using hashes here.

Supported by

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