Statsy is an application for collecting and displaying statistics in your Django project.
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'
});
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')),
...
Default out of the box graphs.
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'
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'
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'
)