{"id":13468298,"url":"https://github.com/byashimov/django-controlcenter","last_synced_at":"2025-10-21T19:49:26.819Z","repository":{"id":41165366,"uuid":"52888013","full_name":"byashimov/django-controlcenter","owner":"byashimov","description":"Set of widgets to build dashboards for Django projects","archived":false,"fork":false,"pushed_at":"2025-03-25T19:41:03.000Z","size":293,"stargazers_count":1002,"open_issues_count":10,"forks_count":83,"subscribers_count":45,"default_branch":"master","last_synced_at":"2025-10-21T19:49:17.275Z","etag":null,"topics":["admin-dashboard","dashboard","django"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/byashimov.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-03-01T15:35:59.000Z","updated_at":"2025-09-21T04:40:51.000Z","dependencies_parsed_at":"2024-01-18T20:05:24.509Z","dependency_job_id":null,"html_url":"https://github.com/byashimov/django-controlcenter","commit_stats":{"total_commits":134,"total_committers":18,"mean_commits":7.444444444444445,"dds":0.4253731343283582,"last_synced_commit":"cf8a2e3115efa65c22f02bd27934e2b4a0e05b0d"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/byashimov/django-controlcenter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byashimov%2Fdjango-controlcenter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byashimov%2Fdjango-controlcenter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byashimov%2Fdjango-controlcenter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byashimov%2Fdjango-controlcenter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/byashimov","download_url":"https://codeload.github.com/byashimov/django-controlcenter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byashimov%2Fdjango-controlcenter/sbom","scorecard":{"id":259926,"data":{"date":"2025-08-11","repo":{"name":"github.com/byashimov/django-controlcenter","commit":"1fb904bafef300d7657e6a27c1c4090269cdd177"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.7,"checks":[{"name":"Code-Review","score":5,"reason":"Found 6/12 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/byashimov/django-controlcenter/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/byashimov/django-controlcenter/publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/byashimov/django-controlcenter/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/byashimov/django-controlcenter/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/byashimov/django-controlcenter/test.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:25","Warn: pipCommand not pinned by hash: .github/workflows/test.yml:22","Warn: pipCommand not pinned by hash: .github/workflows/test.yml:23","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   3 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish.yml:9"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 24 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T10:36:05.347Z","repository_id":41165366,"created_at":"2025-08-17T10:36:05.347Z","updated_at":"2025-08-17T10:36:05.347Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280325297,"owners_count":26311419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin-dashboard","dashboard","django"],"created_at":"2024-07-31T15:01:08.391Z","updated_at":"2025-10-21T19:49:26.788Z","avatar_url":"https://github.com/byashimov.png","language":"Python","funding_links":[],"categories":["Python","\u003ca name=\"Python\"\u003e\u003c/a\u003ePython"],"sub_categories":[],"readme":"Welcome to django-controlcenter!\n================================\n\nGet all your project models on one single page with charts and whistles.\n\n.. image:: https://cloud.githubusercontent.com/assets/1560043/14309295/b8c9aad0-fc05-11e5-96d0-44293d2d07ff.png\n    :alt: django-controlcenter\n\nAttention!\n----------\n\nUnfortunately, I have no time to add new features.\nPlease make PR if you need one:\n\n- branch from master\n- provide tests\n- add docs\n- update changelog\n\nThat's it.\n\n\nRationale\n---------\n\nDjango-admin_ is a great tool to control your project activity: new orders, comments, replies, users, feedback -- everything is here. The only struggle is to switch between all those pages constantly just to check them out for new entries.\n\nWith django-controlcenter you can have all of your models on one single page and build beautiful charts with Chartist.js_. Actually they don't even have to be a django models, get your data from wherever you want: RDBMS, NOSQL, text file or even from an external web-page, it doesn't matter.\n\n\nQuickstart\n----------\n\nInstall django-controlcenter:\n\n.. code-block:: console\n\n    pip install -U django-controlcenter\n\nCreate a dashboard file with unlimited number of widgets and dashboards:\n\n.. code-block:: python\n\n    from controlcenter import Dashboard, widgets\n    from project.app.models import Model\n\n    class ModelItemList(widgets.ItemList):\n        model = Model\n        list_display = ('pk', 'field')\n\n    class MyDashboard(Dashboard):\n        widgets = (\n            ModelItemList,\n        )\n\nUpdate settings file:\n\n.. code-block:: python\n\n    INSTALLED_APPS = [\n        ...\n        'controlcenter',\n        ...\n    ]\n\n    CONTROLCENTER_DASHBOARDS = (\n        ('mydash', 'project.dashboards.MyDashboard'),\n    )\n\nPlug in urls:\n\n.. code-block:: python\n\n    from django.urls import path\n    from django.contrib import admin\n    from controlcenter.views import controlcenter\n\n    urlpatterns = [\n        path('admin/dashboard/', controlcenter.urls),\n        path('admin/', admin.site.urls),\n        ...\n    ]\n\nOpen ``/admin/dashboard/mydash/`` in browser.\n\n\nDocumentation\n-------------\n\nCheck out the docs_ for more complete examples.\n\n\nCompatibility\n-------------\n\n.. image:: https://travis-ci.org/byashimov/django-controlcenter.svg?branch=master\n    :alt: Build Status\n    :target: https://travis-ci.org/byashimov/django-controlcenter\n\n.. image:: https://codecov.io/github/byashimov/django-controlcenter/coverage.svg?branch=master\n    :alt: Codecov\n    :target: https://codecov.io/github/byashimov/django-controlcenter?branch=master\n\nTested on py 3.5—3.10 and django 1—4.\n\n\nCredits\n-------\n\nThis project uses Chartist.js_, Masonry.js_ and Sortable.js_.\n\n\nChangelog\n---------\n\n0.3.3\n~~~~~\n\n- Add source maps for chartist static assets for Django 4.1. Thanks to @ilikerobots.\n\n\n0.3.2\n~~~~~\n\n- Automatically redirect the main app url to the first dashboard. Thanks to @fabiocaccamo.\n\n0.3.1\n~~~~~\n\n- Support django 4.0, python 3.10. Thanks to @mick88.\n- Fixed LineChart example. Thanks to @virtosubogdan.\n\n0.3.0\n~~~~~\n\n- Support django 3.0\n- Python 3 only\n\n0.2.9\n~~~~~\n\n- ``chartist-plugin-pointlabels`` temporary fix\n- Added sorting triangles to ``ItemList``\n- ``ItemList`` header is now always displayed regardless sortability\n- Other misc improvements\n\nThanks to @minusf.\n\n0.2.8\n~~~~~\n\n- Fixed ``key_value_list.html`` widget template syntax error.\n- Fixed attribute typo ``widget.chartist.point_labels -\u003e point_lables``.\n\nThanks to @minusf.\n\n0.2.7\n~~~~~\n\n- New ``TimeSeriesChart`` widget. Thanks to @pjdelport.\n- New \"simple\" widgets: ``ValueList`` and ``KeyValueList``. Thanks to @tonysyu.\n- Bunch of fixes and improvements, thanks again to @pjdelport.\n\n\n0.2.6\n~~~~~\n\n- Fixed navigation menu links, thanks to @editorgit\n\n0.2.5\n~~~~~\n\n- It's now possible to use slugs for dashboards instead of those indexes in ``CONTROLCENTER_DASHBOARDS``.\n  The old behaviour is supported too.\n\n0.2.4\n~~~~~\n\n- It's compatible with django 1.8—2.1 now\n- Custom app name can be passed to ``ControlCenter`` class\n\n0.2.3\n~~~~~\n- Updated column grid, thanks to @pauloxnet.\n- Grammar fixes, thanks to @danielquinn.\n- It's should be possible now to use a custom dashboard view with a custom template.\n\n0.2.2\n~~~~~\n- ``dashboard.html`` now extends ``admin/base_site.html`` instead of ``admin/base.html``\n  in order to display *branding* block. Thanks to @chadgh.\n- Updated ``jsonify`` tag filter, thanks to @k8n.\n\n0.2.1\n~~~~~\n- Django 1.10 support. Tested in tox *only*.\n- Updated the SingleBarChart example, thanks to @greeve.\n\n0.2.0\n~~~~~\n- Unlimited dashboards support.\n- Configuration constructor is moved to a separate project -- django-pkgconf_. It's a dependency now.\n\n0.1.2\n~~~~~\n- Chart ``i`` series color fix. Thanks to @uncleNight.\n- Docs. Finally.\n\n0.1.1\n~~~~~\n- Better responsive experience.\n\n0.1.0\n~~~~~\n- First public release.\n\n.. _Chartist.js: http://gionkunz.github.io/chartist-js/\n.. _Masonry.js:  http://masonry.desandro.com/\n.. _Sortable.js: http://github.hubspot.com/sortable/docs/welcome/\n.. _Django-admin: https://docs.djangoproject.com/en/stable/ref/contrib/admin/\n.. _django-pkgconf: https://github.com/byashimov/django-pkgconf\n.. _docs: http://django-controlcenter.readthedocs.io/en/latest/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyashimov%2Fdjango-controlcenter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbyashimov%2Fdjango-controlcenter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyashimov%2Fdjango-controlcenter/lists"}