Skip to main content

dj_chart

https://badge.fury.io/py/dj_chart.png

The goal of dj_chart is generate charts with the awesome Chart.js library.

Requirements

Django 1.9

Quickstart

Install dj_auth:

pip install dj_chart

Put dj_auth into your INSTALLED_APPS at settings module:

INSTALLED_APPS = (
   ...
   'dj_chart',
)

TEMPLATES = [
    {'BACKEND': 'django.template.backends.django.DjangoTemplates',
     'DIRS': (your dirs, ),
     'APP_DIRS': True,
     'OPTIONS': { },
     },
]

Features

ChartMixin

You can use this Mixin for example with a Templateview or also ListView:

from django.views.generic import TemplateView

from dj_chart.views import ChartMixin

from .models import Fruits

class YourView(ChartMixin, Templateview):

    chart_title_show = True
    chart_title = u"Your Chart Title"
    chart_types_available = [PIE, DOUGHNUT]
    show_grid = False

    def get_chart_data(self):
        # populate self.chart_data
        # Apples
        self.chart_data['labels'].append("Apple")
        self.chart_data['datasets'][0]['backgroundColor'].append("rgb(0,148,63)")
        self.chart_data['datasets'][0]['data'].append(Fruits.filter(fruit_type=1).count())
        # Pear
        self.chart_data['labels'].append(Pear")
        self.chart_data['datasets'][0]['backgroundColor'].append("rgb(222,6,19)")
        self.chart_data['datasets'][0]['data'].append(Fruits.filter(fruit_type=2).count())
        # Banana
        self.chart_data['labels'].append("Banana")
        self.chart_data['datasets'][0]['backgroundColor'].append("rgb(187,187,187)")
        self.chart_data['datasets'][0]['data'].append(Fruits.filter(fruit_type=3).count())

    def get_context_data(self, **kwargs):
        context = super(YourView, self).get_context_data(**kwargs)
        context = self.set_chart_context(context)
        return context

Example with Dates on the x-axis:

from django.db import models
from django.views.generic import TemplateView

from dj_chart.constants import MONTH
from dj_chart.views import ChartMixin

class Category(models.Model):
    description models.CharField(max_length=100, verbose_name='Decscription')

class Person(models.Model):
    first_name = models.CharField(max_length=100, verbose_name='Firstname')
    last_name = models.CharField(max_length=100, verbose_name='Lastname')
    birthday = models.DateField(verbose_name=_(u'Birthday'))
    category = models.ForeignKey(Category, verbose_name=_(u'Category'))

class ChartPie(ChartMixin, TemplateView):

    chart_title_show = True
    chart_title = u"My Chart"
    chart_types_available = [PIE, DOUGHNUT, BAR]
    show_grid = False
    x_axis = MONTH
    steps = 6

    def get_chart_data(self):
        if self.queryset:
            self.set_labels_and_filter_values_for_xaxes(steps=self.steps, type=self.x_axis)

            for label in self.chart_data['labels']:
                self.label_urls[label] = {}
            self.chart_data['datasets'] = []
            for record in self.queryset:
                qs = Person.objects.filter(category=record)
                for i in range(1, len(self.filter_values)):
                    data.append(qs.filter(birthday__gte=self.filter_values[i - 1], birthday__lt=self.filter_values[i]).count())
                    self.label_urls["%s" % self.chart_data['labels'][i]]["%s" % record.description] = {"url": "%s" % reverse('your-url')}

    def get_context_data(self, **kwargs):
        context = super(ChartPie, self).get_context_data(**kwargs)
        self.queryset = Category.objects.all()
        context = self.write_chart_to_context(context)
        return context

Todo

  • Python 3

Running Tests

Does the code actually work?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements_test.txt
(myenv) $ coverage run --source=dj_auth runtests.py && coverage html

Credits

Tools used in rendering this package:

History

0.1.0 (2016-10-05)

  • First release

Metadata

Release files for dj-chart 1.1.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dj-chart 1.1.10
File Size Uploaded
dj_chart-1.1.10.tar.gz 63.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dj-chart 1.1.10
File Interpreter ABI Platform
dj_chart-1.1.10-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 125.1 kB

Release files / dj_chart-1.1.10.tar.gz

Download URL dj_chart-1.1.10.tar.gz
Size 63.8 kB
Tags Source
SHA-256 checksum
How to use checksums
20f606a3c2f8fe84ea4575a450ebe8051311f2ec54a7724034b7c2435cbd20a7
BLAKE2b-256 checksum
How to use checksums
00750af438a792a8f7cee7bae10fb72b634ed07b512efd609b894c5ffc9d7d82
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.6.1 requests/2.24.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.6.8

Release files / dj_chart-1.1.10-py2.py3-none-any.whl

Download URL dj_chart-1.1.10-py2.py3-none-any.whl
Size 61.3 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
370bdaa245a8968c289da013850c185dfb24402948f034858da3170ba37a19ca
BLAKE2b-256 checksum
How to use checksums
57677e8ca1a5d0f8f9f7d83b18c6d383e34c05778c1728f707336ae5375d65d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.6.1 requests/2.24.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.6.8

Release history Release notifications | RSS feed

This release

1.1.10 This release

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page