{
"info": {
"author": "Robert Dollinger",
"author_email": "robert.d@systent.it",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Framework :: Django",
"Framework :: Django :: 1.10",
"Framework :: Django :: 1.8",
"Framework :: Django :: 1.9",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.2",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5"
],
"description": "=============================\ndj_chart\n=============================\n\n.. image:: https://badge.fury.io/py/dj_chart.png\n :target: https://badge.fury.io/py/dj_chart\n\nThe goal of dj_chart is generate charts with the awesome `Chart.js `_ library.\n\n\nRequirements\n------------\n\n::\n\n Django 1.9\n\nQuickstart\n----------\n\nInstall dj_auth::\n\n pip install dj_chart\n\nPut dj_auth into your INSTALLED_APPS at settings module::\n\n INSTALLED_APPS = (\n ...\n 'dj_chart',\n )\n\n TEMPLATES = [\n {'BACKEND': 'django.template.backends.django.DjangoTemplates',\n 'DIRS': (your dirs, ),\n 'APP_DIRS': True,\n 'OPTIONS': { },\n },\n ]\n\n========\nFeatures\n========\n\n\nChartMixin\n---------------------\n\nYou can use this Mixin for example with a Templateview or also ListView::\n\n from django.views.generic import TemplateView\n\n from dj_chart.views import ChartMixin\n\n from .models import Fruits\n\n class YourView(ChartMixin, Templateview):\n\n chart_title_show = True\n chart_title = u\"Your Chart Title\"\n chart_types_available = [PIE, DOUGHNUT]\n show_grid = False\n\n def get_chart_data(self):\n # populate self.chart_data\n # Apples\n self.chart_data['labels'].append(\"Apple\")\n self.chart_data['datasets'][0]['backgroundColor'].append(\"rgb(0,148,63)\")\n self.chart_data['datasets'][0]['data'].append(Fruits.filter(fruit_type=1).count())\n # Pear\n self.chart_data['labels'].append(Pear\")\n self.chart_data['datasets'][0]['backgroundColor'].append(\"rgb(222,6,19)\")\n self.chart_data['datasets'][0]['data'].append(Fruits.filter(fruit_type=2).count())\n # Banana\n self.chart_data['labels'].append(\"Banana\")\n self.chart_data['datasets'][0]['backgroundColor'].append(\"rgb(187,187,187)\")\n self.chart_data['datasets'][0]['data'].append(Fruits.filter(fruit_type=3).count())\n\n def get_context_data(self, **kwargs):\n context = super(YourView, self).get_context_data(**kwargs)\n context = self.set_chart_context(context)\n return context\n\nExample with Dates on the x-axis::\n\n from django.db import models\n from django.views.generic import TemplateView\n\n from dj_chart.constants import MONTH\n from dj_chart.views import ChartMixin\n\n class Category(models.Model):\n description models.CharField(max_length=100, verbose_name='Decscription')\n\n class Person(models.Model):\n first_name = models.CharField(max_length=100, verbose_name='Firstname')\n last_name = models.CharField(max_length=100, verbose_name='Lastname')\n birthday = models.DateField(verbose_name=_(u'Birthday'))\n category = models.ForeignKey(Category, verbose_name=_(u'Category'))\n\n class ChartPie(ChartMixin, TemplateView):\n\n chart_title_show = True\n chart_title = u\"My Chart\"\n chart_types_available = [PIE, DOUGHNUT, BAR]\n show_grid = False\n x_axis = MONTH\n steps = 6\n\n def get_chart_data(self):\n if self.queryset:\n self.set_labels_and_filter_values_for_xaxes(steps=self.steps, type=self.x_axis)\n\n for label in self.chart_data['labels']:\n self.label_urls[label] = {}\n self.chart_data['datasets'] = []\n for record in self.queryset:\n qs = Person.objects.filter(category=record)\n for i in range(1, len(self.filter_values)):\n data.append(qs.filter(birthday__gte=self.filter_values[i - 1], birthday__lt=self.filter_values[i]).count())\n self.label_urls[\"%s\" % self.chart_data['labels'][i]][\"%s\" % record.description] = {\"url\": \"%s\" % reverse('your-url')}\n\n def get_context_data(self, **kwargs):\n context = super(ChartPie, self).get_context_data(**kwargs)\n self.queryset = Category.objects.all()\n context = self.write_chart_to_context(context)\n return context\n\n====\nTodo\n====\n\n* Python 3\n\nRunning Tests\n--------------\n\nDoes the code actually work?\n\n::\n\n source /bin/activate\n (myenv) $ pip install -r requirements_test.txt\n (myenv) $ coverage run --source=dj_auth runtests.py && coverage html\n\n\nCredits\n---------\n\nTools used in rendering this package:\n\n* Cookiecutter_\n* `cookiecutter-djangopackage`_\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`cookiecutter-djangopackage`: https://github.com/pydanny/cookiecutter-djangopackage\n\n\n\n\nHistory\n-------\n\n0.1.0 (2016-10-05)\n++++++++++++++++++\n\n* First release\n\n\n",
"description_content_type": null,
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://gitlab.com/systent/dj_chart",
"keywords": "dj_chart",
"license": "BSD",
"maintainer": "",
"maintainer_email": "",
"name": "dj_chart",
"package_url": "https://pypi.org/project/dj_chart/",
"platform": "",
"project_url": "https://pypi.org/project/dj_chart/",
"project_urls": {
"Homepage": "https://gitlab.com/systent/dj_chart"
},
"release_url": "https://pypi.org/project/dj_chart/1.1.3/",
"requires_dist": [
"django (>=1.10)",
"python-dateutil (>=2.6)"
],
"requires_python": "",
"summary": "Create Charts with the awesome Chart.js Library",
"version": "1.1.3"
},
"last_serial": 3072853,
"releases": {
"1.0.0": [
{
"comment_text": "",
"digests": {
"md5": "9392865715e5d2e49040049ee0c16c33",
"sha256": "34351365338da9de247a11dd78df9a7b87bd079e1cfecc4e839119ad319c9e62"
},
"downloads": -1,
"filename": "dj_chart-1.0.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "9392865715e5d2e49040049ee0c16c33",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 50091,
"upload_time": "2016-11-29T14:08:40",
"url": "https://files.pythonhosted.org/packages/bf/a3/dc9f9a1440f7e15cb461d163487454d9d731a6b71970e52ea512f31d1096/dj_chart-1.0.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "57bfdc08025ebe8ce81aae59c2cb3734",
"sha256": "ffeba0fe087edbdc9f8f7b523f9e9e9fba8e0dd892ec4d3b40cab6082fc4af36"
},
"downloads": -1,
"filename": "dj_chart-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "57bfdc08025ebe8ce81aae59c2cb3734",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 49923,
"upload_time": "2016-11-29T14:08:35",
"url": "https://files.pythonhosted.org/packages/ac/29/9c13c3c50de779aeef3c9b49663dce6b7910716db2f8987775b2d4c3ea82/dj_chart-1.0.0.tar.gz"
}
],
"1.0.1": [
{
"comment_text": "",
"digests": {
"md5": "ae73f198234b1b63ab4aed775591c539",
"sha256": "e83e081bb21f1b3baefa3d660855eb13894d382016f0323464bbbfc5a8d620e0"
},
"downloads": -1,
"filename": "dj_chart-1.0.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "ae73f198234b1b63ab4aed775591c539",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 50077,
"upload_time": "2016-11-30T11:16:02",
"url": "https://files.pythonhosted.org/packages/5d/52/97e239811ea6fe54be0123e2e8732d71458e2d687d942ea78e56c43fe241/dj_chart-1.0.1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "98ddfc44095dfca91efa6ca6fbd8b302",
"sha256": "b7a238406744e054f222414170e64b496e8af39339467757c8e9682a4200bac0"
},
"downloads": -1,
"filename": "dj_chart-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "98ddfc44095dfca91efa6ca6fbd8b302",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 49895,
"upload_time": "2016-11-30T11:15:59",
"url": "https://files.pythonhosted.org/packages/c0/e9/5608682f9a67ba5bf7f1029624a7b88d22393cbf824086277652ad2df7af/dj_chart-1.0.1.tar.gz"
}
],
"1.1.0": [
{
"comment_text": "",
"digests": {
"md5": "c28d7aae7df4ec964398baf6a26d3098",
"sha256": "0e9c9b048617d0c3ec6eb0d0db6c6434c1b71caba26b292f849dc53e2ae84138"
},
"downloads": -1,
"filename": "dj_chart-1.1.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "c28d7aae7df4ec964398baf6a26d3098",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 50065,
"upload_time": "2016-12-13T07:53:27",
"url": "https://files.pythonhosted.org/packages/34/8e/c13bd9f0579b1992c43f0154c221933e6eb006c945a34cf206db5e962a0a/dj_chart-1.1.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "61bf001ca3cca0ff4d89053c0c2a082b",
"sha256": "90a440eb3803833079ea75ecf419cb121f1c8b1e097991c2a9685bbaa2d746bb"
},
"downloads": -1,
"filename": "dj_chart-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "61bf001ca3cca0ff4d89053c0c2a082b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 49885,
"upload_time": "2016-12-13T07:53:21",
"url": "https://files.pythonhosted.org/packages/e7/43/ce6c2e1e132019dbec1efdcf22df44d180226abb28f077201159e8b7b969/dj_chart-1.1.0.tar.gz"
}
],
"1.1.1": [
{
"comment_text": "",
"digests": {
"md5": "ec4a1d402ddc90b704c74b2f1e1d64a6",
"sha256": "bcd82d570019f98557f495f123158934c010b25f78ab68dbdc8d752d702714f5"
},
"downloads": -1,
"filename": "dj_chart-1.1.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "ec4a1d402ddc90b704c74b2f1e1d64a6",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 50086,
"upload_time": "2016-12-14T09:16:32",
"url": "https://files.pythonhosted.org/packages/eb/2b/546546b226e330831fb2bb13c2067e2987eb7d6e2c8da34da4ff85b8a68c/dj_chart-1.1.1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1bc600e627223d747e64d16e41760c43",
"sha256": "8db5f8f5bd8feb309054152782a5e251bd88112181e296e5ec9c06a625afdb64"
},
"downloads": -1,
"filename": "dj_chart-1.1.1.tar.gz",
"has_sig": false,
"md5_digest": "1bc600e627223d747e64d16e41760c43",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 49918,
"upload_time": "2016-12-14T09:16:28",
"url": "https://files.pythonhosted.org/packages/0b/fa/a45437efb57503ac9259ee9ecc285fc3113c3862e8198f9c5c453c30fd43/dj_chart-1.1.1.tar.gz"
}
],
"1.1.2": [
{
"comment_text": "",
"digests": {
"md5": "8fdb6a5860e7b1ccc66d60ed928f06ae",
"sha256": "b225945fbecc397d9f217d40d6deb65ef27a6041e22eee25967723e48d69acdb"
},
"downloads": -1,
"filename": "dj_chart-1.1.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "8fdb6a5860e7b1ccc66d60ed928f06ae",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 50181,
"upload_time": "2017-08-04T14:33:58",
"url": "https://files.pythonhosted.org/packages/8f/fa/f43b3c133ddba3aab9c059422feb94b459d4ee2d57a1aefa21d305c7ad2c/dj_chart-1.1.2-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "497b0ab9441a34724c23feb87210770d",
"sha256": "b840369e266f8b19dc110b43c13e05b339d9b7dee091b9661f5b0f3023e27ff6"
},
"downloads": -1,
"filename": "dj_chart-1.1.2.tar.gz",
"has_sig": false,
"md5_digest": "497b0ab9441a34724c23feb87210770d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 49996,
"upload_time": "2017-01-27T10:08:38",
"url": "https://files.pythonhosted.org/packages/e2/55/5bf31c554b7a78a59466fd7bf216983298d074113a8cb7731a2157f3d8e8/dj_chart-1.1.2.tar.gz"
}
],
"1.1.3": [
{
"comment_text": "",
"digests": {
"md5": "d44c6d28783cc65ecb4e910157ea2dcf",
"sha256": "e7503daeff5540af3761bea06186eca300d4a28472c1288b5663e3ca5bb86711"
},
"downloads": -1,
"filename": "dj_chart-1.1.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "d44c6d28783cc65ecb4e910157ea2dcf",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 50214,
"upload_time": "2017-08-04T14:34:00",
"url": "https://files.pythonhosted.org/packages/94/e9/5f2b917f3f49585f505c82ff07439a625007b4a01d5e983f0f6d139ee7b6/dj_chart-1.1.3-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1b3c40809b629f50124ec0c28d3939ad",
"sha256": "6ffd75c4777160566695724e6455aef27b3861a7ac1a090d01afb332153604ec"
},
"downloads": -1,
"filename": "dj_chart-1.1.3.tar.gz",
"has_sig": false,
"md5_digest": "1b3c40809b629f50124ec0c28d3939ad",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 50025,
"upload_time": "2017-08-04T14:34:04",
"url": "https://files.pythonhosted.org/packages/1f/58/491d206f6c13310f38875759f3e3d62c69017b4dc51d4539be0cbc0fbda0/dj_chart-1.1.3.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "d44c6d28783cc65ecb4e910157ea2dcf",
"sha256": "e7503daeff5540af3761bea06186eca300d4a28472c1288b5663e3ca5bb86711"
},
"downloads": -1,
"filename": "dj_chart-1.1.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "d44c6d28783cc65ecb4e910157ea2dcf",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 50214,
"upload_time": "2017-08-04T14:34:00",
"url": "https://files.pythonhosted.org/packages/94/e9/5f2b917f3f49585f505c82ff07439a625007b4a01d5e983f0f6d139ee7b6/dj_chart-1.1.3-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1b3c40809b629f50124ec0c28d3939ad",
"sha256": "6ffd75c4777160566695724e6455aef27b3861a7ac1a090d01afb332153604ec"
},
"downloads": -1,
"filename": "dj_chart-1.1.3.tar.gz",
"has_sig": false,
"md5_digest": "1b3c40809b629f50124ec0c28d3939ad",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 50025,
"upload_time": "2017-08-04T14:34:04",
"url": "https://files.pythonhosted.org/packages/1f/58/491d206f6c13310f38875759f3e3d62c69017b4dc51d4539be0cbc0fbda0/dj_chart-1.1.3.tar.gz"
}
]
}