{ "info": { "author": "Alan Trick", "author_email": "me@alantrick.ca", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 2.1", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Topic :: Utilities" ], "description": "==================\nDjango Admin Stats\n==================\n\n|pipeline-badge| |coverage-badge| |pypi-badge|\n\nDjango Admin Stats allows you to create and display charts of your data\nusing the django admin. It uses `c3 `_ to display charts.\n\n\n.. figure:: chart.png\n :alt: A chart of page-views\n\n A sample chart from the demo being visualized\n\nFeatures\n========\n\n* Easy-no configuration charting using the \"explore\" function.\n* Supports generating statistics from django models and from trackstats_\n metrics.\n* Also allows for custom statistics generation by making your own\n ``Registration`` subclass.\n* Nice JavaScript charts with c3, falls back to a plain table without\n JavaScript.\n* Add filters & group data by setting query parameters on the criteria\n\nLimitations\n===========\n\n* One dimension/axis of the chart is always the date. There's no way to\n specify a chart that isn\u2019t \u201cby date\u201d.\n\nInstallation\n============\n\nInstallation is straightforward. Install ``django-adminstats`` with pip, and\nthen add the following ``INSTALLED_APPS`` in your config. If you already have\nsomething that replaces ``django.contrib.admin``, you'll need to manually\nadd links to the \u201cExplore\u201d pages if you want to use the Explore tool.\n\n.. code-block:: python\n\n INSTALLED_APPS = [\n ...\n 'django_adminstats.apps.AdminConfig', # replaces django.contrib.admin\n 'django_adminstats',\n ...\n ]\n\nUsing the Explore Tool\n======================\n\nThe Explore tool lets any user with access to the admin site view charts\nfor whatever models they have access to. Unlike the following Charts system,\nthese charts are generated on-the-fly, and don\u2019t require any setup.\n\nThe explore tool is closely integrated into the functionality that already\nexists in the django admin. The consequence of this is that if you want to\ndo any grouping or filtering you have to define filters_ on your admin\npages using ``ModelAdmin.list_filter``.\n\nOne of the benefits of the Explore tool is that once you\u2019ve applied filters,\nyou can click on the \u201cView Entries\u201d button, to view the selected entries in\nthe regular admin page.\n\nUsing Charts\n============\n\nUsing charts allows you to generate charts with a high degree of flexibility,\nincluding things like averages, sums, substring queries, etcetera. Most\nof the the regular django querying abilities are available in charts, even\nif the fields aren't normally visible in the admin.\n\nThis is nice in that it is flexible, but it requires a bit of setup and its\nnot a good idea to give create/edit access to non-superusers due to the ability\nto query data on almost any field.\n\n\nRegistering Statistics\n----------------------\n\nIn order to do anything, you'll need register some models or trackstats\nmetrics. You can find examples of this in ``tests/models.py``, but the short\nof it looks like this:\n\n.. code-block:: python\n\n from django_adminstats.registry import register_model\n\n class Currency(models.Model):\n slug = models.CharField(max_length=10)\n name = models.CharField(max_length=100)\n current_usd_rate = models.DecimalField()\n sign = models.CharField(max_length=10, default='$')\n\n class Transaction(models.Model):\n amount = models.DecimalField()\n currency = models.Foreignkey(to=Currency)\n date = models.DateTimeField(auto_now_add=True)\n\n register_model(Transaction)\n\n\nBy default, we look for a field called \u2018date\u2019 on the model, and it should be\neither a ``DateField`` or ``DateTimeField``. If you want to use a different,\nfield (for example if you\u2019re using Django\u2019s default user and you want to chart\nby \u2018joined_at\u2019) you need to create a registration subclass.\n\n.. code-block:: python\n\n from django_adminstats.registry import registry, register\n\n class UserRegistration(ModelRegistration):\n date_field = 'joined_at'\n\n register(UserRegistration())\n\n\nCreating Charts\n---------------\n\nYou can add charts in the admin. In order for the chart to show anything, you\nneed to add criteria. By default, it will just show a count of all the items\ncharted by the date field, if you to change this, you need to add things in\nthe filter query, axis query, and group query fields.\n\nFirst, the content of these fields is formatted like a URL querystring,\nfor example a filter query of ``message=Hello%20World&x=y`` is equivalent to\n``.filter(message='Hello World', x='y')``. Note that you only use the\n``key0=value0&key1=value1`` form in the filter query, the axis and group\nqueries are just ``key0&key2``.\n\nSecond, you can use lookups and relations just like in a normal django\nquery (e.g. ``field__gt=2`` or ``field__related_field``).\n\nFinally, you can also specify functions to use on the field by doing\n``field:function``. For example ``id:count`` is the default axis query when\nthe field is left blank.\n\n\nDemo\n====\n\nJust run ``make demo`` and log in with user ``admin`` and password ``admin``.\n\n\n.. |pipeline-badge| image:: https://gitlab.com/alantrick/django-adminstats/badges/master/pipeline.svg\n :target: https://gitlab.com/alantrick/django-adminstats/\n :alt: Build Status\n\n.. |coverage-badge| image:: https://gitlab.com/alantrick/django-adminstats/badges/master/coverage.svg\n :target: https://gitlab.com/alantrick/django-adminstats/\n :alt: Coverage Status\n\n.. |pypi-badge| image:: https://img.shields.io/pypi/v/django_adminstats.svg\n :target: https://pypi.org/project/django-adminstats/\n :alt: Project on PyPI\n\n.. _trackstats: https://pypi.org/project/django-trackstats/\n\n.. _filters: https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter\n\nCHANGES\n=======\n\n0.7.4\n-----\n\n* Use the view instead of change permission for viewing charts\n\n0.7.3\n-----\n\n* Fix error in description generation\n\n0.7.2\n-----\n* Make chart control list items more visually distinct\n\n0.7.1\n-----\n\n* Fix packaging problem (missing files)\n\n0.7.0\n-----\n\n* Add new \u201cExplore\u201d charts, upgrading users may want to adjust\n ``INSTALLED_APPS``.\n\n0.6.3\n-----\n\n* Drop pbr for regular setuptools, add VERSION attribute\n* Fix some new problems that flake was catching\n* Add screenshot of chart\n\n0.6.2\n-----\n\n* Fix problem where criteria with same stats would clobber each other\n\n0.6.1\n-----\n\n* fix programming bug with by-month trackstats metrics, better test coverage\n\n0.6\n---\n\n* fix autocomplete options for tracstats criteria\n* Fix problems with the autocomplete not (re)initializing properly\n\n0.5\n---\n\n* Add autocomplete for query fields in admin, and rename query fields\n\n0.4\n---\n\n* Add documentation for query fields and registrations\n* Add copy chart admin action\n\n0.3\n---\n\n* Add the ability to filter/group related models in trackstats by-object\n stats registrations\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/alantrick/django-adminstats", "keywords": "charting", "license": "LGPL3+", "maintainer": "", "maintainer_email": "", "name": "django-adminstats", "package_url": "https://pypi.org/project/django-adminstats/", "platform": "", "project_url": "https://pypi.org/project/django-adminstats/", "project_urls": { "Homepage": "https://gitlab.com/alantrick/django-adminstats" }, "release_url": "https://pypi.org/project/django-adminstats/0.7.4/", "requires_dist": null, "requires_python": "", "summary": "An adminstrative charting tool for statistics in Django", "version": "0.7.4" }, "last_serial": 5418125, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "a6fe4d8b5b3f13472ff9d223b51a279f", "sha256": "d76746ce69a9308d4810a48d71e50147e8659dffa9140dee4f5e74b4939e68b9" }, "downloads": -1, "filename": "django_adminstats-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a6fe4d8b5b3f13472ff9d223b51a279f", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 135684, "upload_time": "2018-11-14T09:27:28", "url": "https://files.pythonhosted.org/packages/06/5c/be86dbc2427eaee5c14af2c500deffe83149143727b1351e886e442286c1/django_adminstats-0.1.0-py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "c61bb24d41d41abc9ba9fe890f57f8d7", "sha256": "e49c84dca6e490e03192605d0d24c98229fa90f973c473fb881fd77d93fc5096" }, "downloads": -1, "filename": "django_adminstats-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c61bb24d41d41abc9ba9fe890f57f8d7", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 139347, "upload_time": "2018-11-19T12:55:34", "url": "https://files.pythonhosted.org/packages/7f/55/fad39cc5646bb57228f0de2ef5f4035c83e697018d1c89a781c6b22f2743/django_adminstats-0.2.0-py3-none-any.whl" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "6d9d101200504e40d547b1c7930b0965", "sha256": "800a8f6eea7587ca398671066d4bf63a8f16948f4eb9b6cb82468f6d12282f0e" }, "downloads": -1, "filename": "django_adminstats-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6d9d101200504e40d547b1c7930b0965", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 143241, "upload_time": "2018-11-21T11:28:21", "url": "https://files.pythonhosted.org/packages/ee/f0/d762dff1adfa36b5ad2cd80abf05fb9fa905a6a1a77d279aedac2b559329/django_adminstats-0.3.0-py3-none-any.whl" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "3b13981be3afca925d768fbb9b75de52", "sha256": "531b7c28f2c990ea7867cddbc6da43a8ba03ddd02d43c967678ec3f670d8d14a" }, "downloads": -1, "filename": "django_adminstats-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3b13981be3afca925d768fbb9b75de52", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 145117, "upload_time": "2018-11-21T21:54:27", "url": "https://files.pythonhosted.org/packages/2e/ae/c3ca9ad4885b575511454e9d84cc626bf46d93fe346a899d8e848724a53c/django_adminstats-0.4.0-py3-none-any.whl" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "90c7f47a32a5b4009597c6340b75d164", "sha256": "eef81add73086b6e24114c1184b20392bdb4a351153fed86158c29fa0de1e372" }, "downloads": -1, "filename": "django_adminstats-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "90c7f47a32a5b4009597c6340b75d164", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 148221, "upload_time": "2018-11-30T07:53:24", "url": "https://files.pythonhosted.org/packages/6e/d0/374441b68bab4d98d169b584d03656874abc776a98e1e01df3656437faa5/django_adminstats-0.5.0-py3-none-any.whl" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "0898f1436fd8868a5954a85d555b5cc3", "sha256": "2bbd4b65ef68130c2caebd14f5de576d83727fbe3392c0ba6fa474d1d29dca9a" }, "downloads": -1, "filename": "django_adminstats-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0898f1436fd8868a5954a85d555b5cc3", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 148545, "upload_time": "2018-12-04T23:37:16", "url": "https://files.pythonhosted.org/packages/f7/d5/752e05e31cf131b3448e334baa5e56d5206c550fc3af4cbf7e7356b40b59/django_adminstats-0.6.0-py3-none-any.whl" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "5ec3fe6362d5f66cda3080e90876d2c4", "sha256": "34c379577e3a7df48ec2c3f311747e446ee97d5906ea672004a3452e0cd50601" }, "downloads": -1, "filename": "django_adminstats-0.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5ec3fe6362d5f66cda3080e90876d2c4", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 148507, "upload_time": "2018-12-05T06:46:11", "url": "https://files.pythonhosted.org/packages/90/57/eae962e3e83520196cea232a497a1170270e9bbdfa51c4568610544fc60b/django_adminstats-0.6.1-py3-none-any.whl" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "eee25860aeb883aeaadcd3e1cbd13bf6", "sha256": "a5c7d6468b4ce633cb53bd6d178b159fcded2e27e9ac6daab13796421060a109" }, "downloads": -1, "filename": "django_adminstats-0.6.2-py3-none-any.whl", "has_sig": false, "md5_digest": "eee25860aeb883aeaadcd3e1cbd13bf6", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 148600, "upload_time": "2018-12-05T09:14:30", "url": "https://files.pythonhosted.org/packages/82/fc/84c5612b43ba8c3719e4779b11358db1c0bcbf83fe32dfa8033c36c6f843/django_adminstats-0.6.2-py3-none-any.whl" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "dc8f9ff9edc8425cbf0a048aa3901dea", "sha256": "d72fc40fcf9d87a26b07bae23da3d13deb40a422f44638d391a52d1860541809" }, "downloads": -1, "filename": "django_adminstats-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "dc8f9ff9edc8425cbf0a048aa3901dea", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 157688, "upload_time": "2019-04-23T09:07:34", "url": "https://files.pythonhosted.org/packages/dc/1a/cf8dc7bbc8aa89b3051b6d05a4ea0541ecd346c60a79213be854a51ca404/django_adminstats-0.7.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58cf7c99db7e2e1c3d1602b7b7760132", "sha256": "b34c07640b7816929de6a745a6bde415482eeb9834d9bf250dd87db19cb6ec6b" }, "downloads": -1, "filename": "django-adminstats-0.7.1.tar.gz", "has_sig": false, "md5_digest": "58cf7c99db7e2e1c3d1602b7b7760132", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 147432, "upload_time": "2019-04-23T09:07:33", "url": "https://files.pythonhosted.org/packages/be/3d/dfdb5fb767dd8d3a3a887aa55fba6fca1f29b93f1a2edc846e07516355b2/django-adminstats-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "4fa57c114a751aa054862e68ccd0c895", "sha256": "8e58e8b6abc57226da2e682c3b0e83c425bff097c6e2eeec01fbf91d74008749" }, "downloads": -1, "filename": "django_adminstats-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4fa57c114a751aa054862e68ccd0c895", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 157782, "upload_time": "2019-04-25T00:36:50", "url": "https://files.pythonhosted.org/packages/a2/10/3c65bc88435e574ec44f2ee4322fbee832b4862c1eba37bccde7fcf831d4/django_adminstats-0.7.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8e32fdbdc600bb37c26441ceb05b95b6", "sha256": "1cd60b9a25c360d22db7b671e0e54ce870b0d30309fbb782b093328006b0a042" }, "downloads": -1, "filename": "django-adminstats-0.7.2.tar.gz", "has_sig": false, "md5_digest": "8e32fdbdc600bb37c26441ceb05b95b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 147507, "upload_time": "2019-04-25T00:36:47", "url": "https://files.pythonhosted.org/packages/6c/5c/75d76df03064f159e7926e2f54e7609de6c1352dd4ad966a415063a1f978/django-adminstats-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "95e2d8e25575eae29e09b4b8e528cf77", "sha256": "b65d776eda4015300f8798d873b07120b7e8b455fb8328803268bfd8997c4df7" }, "downloads": -1, "filename": "django_adminstats-0.7.3-py3-none-any.whl", "has_sig": false, "md5_digest": "95e2d8e25575eae29e09b4b8e528cf77", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 157819, "upload_time": "2019-04-25T00:41:52", "url": "https://files.pythonhosted.org/packages/b6/33/a1f5fafca00a6427c179feb3ce360c55c338601d3c7919b73e935dcea242/django_adminstats-0.7.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ad75997039e87f0a6e0d729c12e9a4f9", "sha256": "d26ee88c0f4f134a4f5399d072fa254073e6c2d0db038daa89a5e346b4cfe35a" }, "downloads": -1, "filename": "django-adminstats-0.7.3.tar.gz", "has_sig": false, "md5_digest": "ad75997039e87f0a6e0d729c12e9a4f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 147510, "upload_time": "2019-04-25T00:41:50", "url": "https://files.pythonhosted.org/packages/0a/dc/b47d57ac3fa8375cece7898e9b9aca2a9e7b833579ae584f18c2a3d6a270/django-adminstats-0.7.3.tar.gz" } ], "0.7.4": [ { "comment_text": "", "digests": { "md5": "60955162799a742aa2c992b2c8a4f8bf", "sha256": "b0349d386a0a2cfe15bfcd2b73a10f032333a56a387af0b62b1284d8c07da3d4" }, "downloads": -1, "filename": "django_adminstats-0.7.4-py3-none-any.whl", "has_sig": false, "md5_digest": "60955162799a742aa2c992b2c8a4f8bf", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 157874, "upload_time": "2019-06-19T02:17:04", "url": "https://files.pythonhosted.org/packages/e1/08/87e5eccebcdb10b61d74775a8a3a59d4d6f4a54dde6a2ceaee654a3da8e9/django_adminstats-0.7.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a95249b990a5b04544c86c78c79f439", "sha256": "9e61104666c9a6be18c467044e3f3766441241fb0265fb0e83462ca68ae55cdc" }, "downloads": -1, "filename": "django-adminstats-0.7.4.tar.gz", "has_sig": false, "md5_digest": "5a95249b990a5b04544c86c78c79f439", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 147554, "upload_time": "2019-06-19T02:17:02", "url": "https://files.pythonhosted.org/packages/d7/b7/772866c4da8bdd46a19d8bf3f1df7867c8514f7119edcbfff4c511831128/django-adminstats-0.7.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "60955162799a742aa2c992b2c8a4f8bf", "sha256": "b0349d386a0a2cfe15bfcd2b73a10f032333a56a387af0b62b1284d8c07da3d4" }, "downloads": -1, "filename": "django_adminstats-0.7.4-py3-none-any.whl", "has_sig": false, "md5_digest": "60955162799a742aa2c992b2c8a4f8bf", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 157874, "upload_time": "2019-06-19T02:17:04", "url": "https://files.pythonhosted.org/packages/e1/08/87e5eccebcdb10b61d74775a8a3a59d4d6f4a54dde6a2ceaee654a3da8e9/django_adminstats-0.7.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a95249b990a5b04544c86c78c79f439", "sha256": "9e61104666c9a6be18c467044e3f3766441241fb0265fb0e83462ca68ae55cdc" }, "downloads": -1, "filename": "django-adminstats-0.7.4.tar.gz", "has_sig": false, "md5_digest": "5a95249b990a5b04544c86c78c79f439", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 147554, "upload_time": "2019-06-19T02:17:02", "url": "https://files.pythonhosted.org/packages/d7/b7/772866c4da8bdd46a19d8bf3f1df7867c8514f7119edcbfff4c511831128/django-adminstats-0.7.4.tar.gz" } ] }