django-advanced-report-builder 0.6.5__tar.gz → 0.7.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of django-advanced-report-builder might be problematic. Click here for more details.
- {django-advanced-report-builder-0.6.5/django_advanced_report_builder.egg-info → django-advanced-report-builder-0.7.0}/PKG-INFO +1 -1
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/filter_query.py +9 -3
- django-advanced-report-builder-0.7.0/advanced_report_builder/migrations/0014_auto_20240706_2207.py +24 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/models.py +5 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/modal.html +0 -6
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/datatables/modal.html +0 -4
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/datatables/onclick_menu.html +1 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/kanban/description_modal.html +0 -5
- django-advanced-report-builder-0.7.0/advanced_report_builder/templates/advanced_report_builder/kanban/modal.html +10 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/query_builder.html +0 -1
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/single_values/modal.html +0 -6
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/urls.py +4 -2
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/utils.py +5 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/bar_charts.py +41 -31
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/charts_base.py +5 -12
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/custom.py +6 -24
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/dashboard.py +10 -4
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/datatables/datatables.py +1 -13
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/datatables/modal.py +3 -30
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/funnel_charts.py +18 -17
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/kanban.py +2 -2
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/line_charts.py +25 -23
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/modals_base.py +13 -44
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/pie_charts.py +21 -21
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/query_modal/mixin.py +37 -22
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/query_modal/modal.py +19 -12
- django-advanced-report-builder-0.7.0/advanced_report_builder/views/report.py +33 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/single_values.py +127 -48
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0/django_advanced_report_builder.egg-info}/PKG-INFO +1 -1
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/django_advanced_report_builder.egg-info/SOURCES.txt +1 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/setup.py +1 -1
- django-advanced-report-builder-0.6.5/advanced_report_builder/templates/advanced_report_builder/kanban/modal.html +0 -12
- django-advanced-report-builder-0.6.5/advanced_report_builder/views/report.py +0 -13
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/LICENSE +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/MANIFEST.in +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/README.md +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/__init__.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/admin.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/apps.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/columns.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/customise.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/data_merge/__init__.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/data_merge/utils.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/data_merge/widget.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/duplicate.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/exceptions.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/field_types.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/field_utils.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/generate_series.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/globals.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/includes.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0001_initial.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0002_auto_20220209_1657.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0003_auto_20220215_1219.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0004_customreport.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0005_auto_20220303_0958.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0006_auto_20220310_1147.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0007_auto_20220322_1939.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0008_auto_20220404_1144.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0009_auto_20230428_1554.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0010_auto_20230428_2033.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0011_auto_20230620_1449.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0012_auto_20230718_1642.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0013_reportqueryorder.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/__init__.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/report_builder.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.esm.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.min.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chartjs-adapter-moment.min.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chartjs-plugin-datalabels.min.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chunks/helpers.segment.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/helpers.esm.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/d3/js/d3.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/d3/js/d3.min.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/d3-funnel/js/d3-funnel.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/d3-funnel/js/d3-funnel.min.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dashboard/js/dashboard.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/.gitignore +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/.travis.yml +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/LICENSE-DOT.txt +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/README.md +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/bin/dot-packer +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/bower.json +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/doT.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/doT.min.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/doU.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/index.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/package.json +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/jquery_extendext/js/jQuery.extendext.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/jquery_extendext/js/jQuery.extendext.min.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.dark.css +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.dark.min.css +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.default.css +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.default.min.css +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ar.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.az.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.bg.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.cs.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.da.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.de.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.el.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.en.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.es.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.fa-IR.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.fr.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.he.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.it.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.nl.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.no.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pl.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pt-BR.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pt-PT.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ro.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ru.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.sq.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.tr.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ua.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.zh-CN.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/plugins/currency/plugin.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.min.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.standalone.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.standalone.min.js +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/dark.scss +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/default.scss +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_bt-checkbox.scss +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_bt-tooltip-errors.scss +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_filter-description.scss +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_invert.scss +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_sortable.scss +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/bt-tooltip-errors.scss +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/filter-description.scss +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/invert.scss +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/sortable.scss +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/bar/middle.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/funnel/middle.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/funnel/report.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/line/middle.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/modal_field.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/pie/middle.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/report.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/data_merge/data_merge.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/datatables/fields/modal.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/datatables/fields/single_query_builder.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/datatables/report.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/datatables/select_pivot.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/kanban/middle.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/kanban/report.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/query_modal.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/select_column.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/single_values/middle.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/single_values/report.html +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/toggle.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/variable_date.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/__init__.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/datatables/__init__.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/datatables/utils.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/query_modal/__init__.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/report_utils_mixin.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/reports.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/targets/__init__.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/targets/utils.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/targets/views.py +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/django_advanced_report_builder.egg-info/dependency_links.txt +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/django_advanced_report_builder.egg-info/requires.txt +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/django_advanced_report_builder.egg-info/top_level.txt +0 -0
- {django-advanced-report-builder-0.6.5 → django-advanced-report-builder-0.7.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: django-advanced-report-builder
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
Summary: Django app that allows you to build reports from modals
|
|
5
5
|
Home-page: https://github.com/django-advance-utils/django-advanced-report-builder
|
|
6
6
|
Author: Thomas Turner
|
|
@@ -233,14 +233,20 @@ class FilterQueryMixin:
|
|
|
233
233
|
query_list.append(~Q((query_string, current_user)))
|
|
234
234
|
|
|
235
235
|
def get_report_query(self, report):
|
|
236
|
-
|
|
237
|
-
|
|
236
|
+
dashboard_report = self.dashboard_report
|
|
237
|
+
if dashboard_report is not None:
|
|
238
|
+
slug_key = self.slug.get(f'query{report.pk}_{dashboard_report.pk}')
|
|
239
|
+
else:
|
|
240
|
+
slug_key = self.slug.get(f'query{report.pk}')
|
|
238
241
|
if slug_key:
|
|
239
242
|
report_query = get_object_or_404(ReportQuery, id=slug_key)
|
|
240
243
|
if report_query.report_id != report.pk:
|
|
241
244
|
return None
|
|
242
245
|
else:
|
|
243
|
-
report_query
|
|
246
|
+
if dashboard_report is not None and dashboard_report.report_query is not None:
|
|
247
|
+
report_query = dashboard_report.report_query
|
|
248
|
+
else:
|
|
249
|
+
report_query = report.reportquery_set.first()
|
|
244
250
|
return report_query
|
|
245
251
|
|
|
246
252
|
@staticmethod
|
django-advanced-report-builder-0.7.0/advanced_report_builder/migrations/0014_auto_20240706_2207.py
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Generated by Django 3.2.7 on 2024-07-06 22:07
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
import django.db.models.deletion
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
('advanced_report_builder', '0013_reportqueryorder'),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AddField(
|
|
15
|
+
model_name='dashboardreport',
|
|
16
|
+
name='report_query',
|
|
17
|
+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='advanced_report_builder.reportquery'),
|
|
18
|
+
),
|
|
19
|
+
migrations.AddField(
|
|
20
|
+
model_name='dashboardreport',
|
|
21
|
+
name='show_versions',
|
|
22
|
+
field=models.BooleanField(default=True),
|
|
23
|
+
),
|
|
24
|
+
]
|
|
@@ -215,6 +215,9 @@ class ReportQuery(TimeStampedModel):
|
|
|
215
215
|
ordering = ['order']
|
|
216
216
|
verbose_name_plural = 'Report queries'
|
|
217
217
|
|
|
218
|
+
def __str__(self):
|
|
219
|
+
return self.name
|
|
220
|
+
|
|
218
221
|
|
|
219
222
|
class ReportQueryOrder(TimeStampedModel):
|
|
220
223
|
report_query = models.ForeignKey(ReportQuery, on_delete=models.CASCADE)
|
|
@@ -482,6 +485,8 @@ class DashboardReport(TimeStampedModel):
|
|
|
482
485
|
top = models.BooleanField(default=False)
|
|
483
486
|
name_override = models.CharField(max_length=200, blank=True, null=True)
|
|
484
487
|
display_option = models.PositiveIntegerField(choices=DISPLAY_OPTION_CHOICES, default=DISPLAY_OPTION_NONE)
|
|
488
|
+
show_versions = models.BooleanField(default=True)
|
|
489
|
+
report_query = models.ForeignKey(ReportQuery, blank=True, null=True, on_delete=models.CASCADE)
|
|
485
490
|
|
|
486
491
|
def get_class(self, extra_class_name):
|
|
487
492
|
if self.display_option != DISPLAY_OPTION_NONE:
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
<a {% if value.dropdown %}id="{{ value.dropdown.id }}"{% endif %} href="#" onclick="{{ value.href }}"
|
|
6
6
|
class="mr-1 mb-1 btn {{ value.css|default:"btn-primary" }}{% if value.active %} active{% endif %}" {{ value.attributes }}>
|
|
7
7
|
<span {% if value.show_caret %}class="dropdown-toggle"{% endif %}>{{ value.name }}{{ value.badge }}</span></a>
|
|
8
|
+
|
|
8
9
|
{% else %}
|
|
9
10
|
{{ value.render }}
|
|
10
11
|
{% endif %}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{% extends 'django_modals/modal_base.html' %}
|
|
2
|
+
|
|
3
|
+
{% block javascript %}
|
|
4
|
+
<script>
|
|
5
|
+
function save_modal_{{ form.form_id }}() {
|
|
6
|
+
id_query_data.save_query_builder();
|
|
7
|
+
django_modal.process_commands_lock([{'function': 'post_modal'}]);
|
|
8
|
+
}
|
|
9
|
+
</script>
|
|
10
|
+
{% endblock %}
|
|
@@ -12,8 +12,8 @@ from advanced_report_builder.views.kanban import KanbanModal, KanbanLaneModal, K
|
|
|
12
12
|
from advanced_report_builder.views.line_charts import LineChartModal, LineChartFieldModal
|
|
13
13
|
from advanced_report_builder.views.pie_charts import PieChartModal, PieChartFieldModal
|
|
14
14
|
from advanced_report_builder.views.reports import DuplicateReportModal
|
|
15
|
-
from advanced_report_builder.views.single_values import SingleValueModal, SingleValueShowBreakdownModal
|
|
16
|
-
SingleValueTableFieldModal
|
|
15
|
+
from advanced_report_builder.views.single_values import SingleValueModal, SingleValueShowBreakdownModal, \
|
|
16
|
+
SingleValueTableFieldModal, QueryNumeratorModal
|
|
17
17
|
from advanced_report_builder.views.targets.views import TargetModal
|
|
18
18
|
|
|
19
19
|
app_name = 'advanced_report_builder'
|
|
@@ -30,6 +30,8 @@ urlpatterns = [
|
|
|
30
30
|
|
|
31
31
|
path('single-value/modal/<str:slug>/', SingleValueModal.as_view(), name='single_value_modal'),
|
|
32
32
|
path('single-value/modal/field/<str:slug>/', SingleValueTableFieldModal.as_view(), name='single_value_field_modal'),
|
|
33
|
+
path('single-value/modal/numerator-field/<str:slug>/', QueryNumeratorModal.as_view(),
|
|
34
|
+
name='single_value_numerator_modal'),
|
|
33
35
|
path('single-value/show-breakdown/<str:slug>/', SingleValueShowBreakdownModal.as_view(),
|
|
34
36
|
name='single_value_show_breakdown_modal'),
|
|
35
37
|
|
|
@@ -76,3 +76,8 @@ def get_report_builder_class(model, report_type=None, class_name=None):
|
|
|
76
76
|
if report_builder_class is not None:
|
|
77
77
|
report_builder_class = report_builder_class()
|
|
78
78
|
return report_builder_class
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def get_query_js(button_name, field_id):
|
|
82
|
+
return ('django_modal.process_commands_lock([{"function": "post_modal", "button": {"button": "' +
|
|
83
|
+
button_name + '", "' + field_id + '": $(this).closest(\'tr\').attr(\'id\')}}])')
|
|
@@ -4,6 +4,7 @@ import operator
|
|
|
4
4
|
from datetime import datetime, timedelta
|
|
5
5
|
from functools import reduce
|
|
6
6
|
|
|
7
|
+
from crispy_forms.bootstrap import StrictButton
|
|
7
8
|
from crispy_forms.layout import Div
|
|
8
9
|
from date_offset.monthdelta import MonthDelta
|
|
9
10
|
from django.core.exceptions import FieldDoesNotExist
|
|
@@ -35,6 +36,7 @@ from advanced_report_builder.views.charts_base import ChartBaseView, ChartBaseFi
|
|
|
35
36
|
from advanced_report_builder.views.datatables.modal import TableFieldModal, TableFieldForm
|
|
36
37
|
from advanced_report_builder.views.datatables.utils import TableUtilsMixin
|
|
37
38
|
from advanced_report_builder.views.modals_base import QueryBuilderModalBaseMixin, QueryBuilderModalBase
|
|
39
|
+
from advanced_report_builder.views.query_modal.mixin import MultiQueryModalMixin
|
|
38
40
|
|
|
39
41
|
|
|
40
42
|
class BarChartView(ChartBaseView):
|
|
@@ -141,11 +143,12 @@ class BarChartView(ChartBaseView):
|
|
|
141
143
|
return start_field_name
|
|
142
144
|
|
|
143
145
|
|
|
144
|
-
class BarChartModal(QueryBuilderModalBase):
|
|
146
|
+
class BarChartModal(MultiQueryModalMixin, QueryBuilderModalBase):
|
|
145
147
|
template_name = 'advanced_report_builder/charts/modal.html'
|
|
146
148
|
process = PROCESS_EDIT_DELETE
|
|
147
149
|
permission_delete = PERMISSION_OFF
|
|
148
150
|
model = BarChartReport
|
|
151
|
+
show_order_by = False
|
|
149
152
|
widgets = {'positive_bar_colour': ColourPickerWidget,
|
|
150
153
|
'negative_bar_colour': ColourPickerWidget,
|
|
151
154
|
'stacked': RBToggle,
|
|
@@ -175,7 +178,7 @@ class BarChartModal(QueryBuilderModalBase):
|
|
|
175
178
|
'breakdown_fields']
|
|
176
179
|
|
|
177
180
|
def form_setup(self, form, *_args, **_kwargs):
|
|
178
|
-
if 'data' in _kwargs:
|
|
181
|
+
if 'data' in _kwargs and len(_kwargs['data']) > 0:
|
|
179
182
|
date_field = _kwargs['data'].get('date_field')
|
|
180
183
|
end_date_field = _kwargs['data'].get('end_date_field')
|
|
181
184
|
report_type_id = _kwargs['data'].get('report_type')
|
|
@@ -199,7 +202,6 @@ class BarChartModal(QueryBuilderModalBase):
|
|
|
199
202
|
|
|
200
203
|
form.fields['notes'].widget.attrs['rows'] = 3
|
|
201
204
|
|
|
202
|
-
self.add_query_data(form)
|
|
203
205
|
url = reverse('advanced_report_builder:bar_chart_field_modal',
|
|
204
206
|
kwargs={'slug': 'selector-99999-data-FIELD_INFO-report_type_id-REPORT_TYPE_ID'})
|
|
205
207
|
|
|
@@ -219,33 +221,34 @@ class BarChartModal(QueryBuilderModalBase):
|
|
|
219
221
|
BarChartReport.DATE_FIELD_RANGE: ('html', 'Start date field')}}
|
|
220
222
|
])
|
|
221
223
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
224
|
+
fields = ['name',
|
|
225
|
+
'notes',
|
|
226
|
+
'report_type',
|
|
227
|
+
'report_tags',
|
|
228
|
+
'bar_chart_orientation',
|
|
229
|
+
'axis_scale',
|
|
230
|
+
'axis_value_type',
|
|
231
|
+
'date_field_type',
|
|
232
|
+
'date_field',
|
|
233
|
+
'end_date_field',
|
|
234
|
+
FieldEx('fields',
|
|
235
|
+
template='advanced_report_builder/select_column.html',
|
|
236
|
+
extra_context={'select_column_url': url,
|
|
237
|
+
'command_prefix': ''}),
|
|
238
|
+
'x_label',
|
|
239
|
+
'y_label',
|
|
240
|
+
'stacked',
|
|
241
|
+
'show_totals',
|
|
242
|
+
'show_blank_dates',
|
|
243
|
+
'show_breakdown',
|
|
244
|
+
FieldEx('breakdown_fields',
|
|
245
|
+
template='advanced_report_builder/select_column.html',
|
|
246
|
+
extra_context={'select_column_url': url_breakdown,
|
|
247
|
+
'command_prefix': 'breakdown_'})
|
|
248
|
+
]
|
|
249
|
+
if self.object.id:
|
|
250
|
+
self.add_extra_queries(form=form, fields=fields)
|
|
251
|
+
return fields
|
|
249
252
|
|
|
250
253
|
def select2_date_field(self, **kwargs):
|
|
251
254
|
return self.get_fields_for_select2(field_type='date',
|
|
@@ -368,7 +371,7 @@ class BarChartFieldModal(QueryBuilderModalBaseMixin, FormModal):
|
|
|
368
371
|
'val': _attr})
|
|
369
372
|
|
|
370
373
|
self.add_command({'function': 'html', 'selector': f'#{selector} span', 'html': form.cleaned_data['title']})
|
|
371
|
-
self.add_command({'function': '
|
|
374
|
+
self.add_command({'function': 'save_query_builder_id_filter'})
|
|
372
375
|
self.add_command({'function': 'update_selection'})
|
|
373
376
|
return self.command_response('close')
|
|
374
377
|
|
|
@@ -412,6 +415,12 @@ class BarChartFieldModal(QueryBuilderModalBaseMixin, FormModal):
|
|
|
412
415
|
class BarChartBreakdownFieldForm(TableFieldForm):
|
|
413
416
|
cancel_class = 'btn-secondary modal-cancel'
|
|
414
417
|
|
|
418
|
+
def submit_button(self, css_class='btn-success modal-submit', button_text='Submit', **kwargs):
|
|
419
|
+
if isinstance(self.django_field, NUMBER_FIELDS):
|
|
420
|
+
return StrictButton(button_text, onclick=f'save_modal_{self.form_id}()', css_class=css_class, **kwargs)
|
|
421
|
+
else:
|
|
422
|
+
return super().submit_button(css_class, button_text, **kwargs)
|
|
423
|
+
|
|
415
424
|
|
|
416
425
|
class BarChartBreakdownFieldModal(TableFieldModal):
|
|
417
426
|
form_class = BarChartBreakdownFieldForm
|
|
@@ -426,6 +435,7 @@ class BarChartBreakdownFieldModal(TableFieldModal):
|
|
|
426
435
|
'val': _attr})
|
|
427
436
|
|
|
428
437
|
self.add_command({'function': 'html', 'selector': f'#{selector} span', 'html': form.cleaned_data['title']})
|
|
438
|
+
self.add_command({'function': 'save_query_builder_id_filter'})
|
|
429
439
|
self.add_command({'function': 'breakdown_update_selection'})
|
|
430
440
|
return self.command_response('close')
|
|
431
441
|
|
|
@@ -6,6 +6,7 @@ from crispy_forms.bootstrap import StrictButton
|
|
|
6
6
|
from date_offset.date_offset import DateOffset
|
|
7
7
|
from dateutil.relativedelta import relativedelta
|
|
8
8
|
from django.apps import apps
|
|
9
|
+
from django.core.exceptions import FieldError
|
|
9
10
|
from django.db import ProgrammingError, DataError
|
|
10
11
|
from django.db.models import Q
|
|
11
12
|
from django.shortcuts import get_object_or_404
|
|
@@ -43,7 +44,7 @@ class ChartJSTable(DatatableTable):
|
|
|
43
44
|
targets = []
|
|
44
45
|
try:
|
|
45
46
|
data = self.get_table_array(self.kwargs.get('request'), self.get_query())
|
|
46
|
-
except DataError:
|
|
47
|
+
except (DataError, FieldError):
|
|
47
48
|
data = [['N/A']]
|
|
48
49
|
if self.targets is not None:
|
|
49
50
|
targets = self.targets.all()
|
|
@@ -280,7 +281,7 @@ class ChartBaseView(ReportBase, ReportUtilsMixin, TemplateView):
|
|
|
280
281
|
|
|
281
282
|
self.add_menu('button_menu', 'button_group').add_items(
|
|
282
283
|
*report_menu,
|
|
283
|
-
*self.queries_menu(),
|
|
284
|
+
*self.queries_menu(report=self.report, dashboard_report=self.dashboard_report),
|
|
284
285
|
)
|
|
285
286
|
|
|
286
287
|
def pod_dashboard_edit_menu(self):
|
|
@@ -303,10 +304,6 @@ class ChartBaseView(ReportBase, ReportUtilsMixin, TemplateView):
|
|
|
303
304
|
def edit_report_menu(request, chart_report_id, slug_str):
|
|
304
305
|
return []
|
|
305
306
|
|
|
306
|
-
# noinspection PyMethodMayBeStatic
|
|
307
|
-
def queries_menu(self):
|
|
308
|
-
return []
|
|
309
|
-
|
|
310
307
|
@staticmethod
|
|
311
308
|
def get_period_divider(annotation_value_choice, start_date_type, end_date_type):
|
|
312
309
|
variable_date = VariableDate()
|
|
@@ -346,14 +343,10 @@ class ChartBaseFieldForm(ReportBuilderFieldUtils, CrispyForm):
|
|
|
346
343
|
super().__init__(*args, **kwargs)
|
|
347
344
|
|
|
348
345
|
def submit_button(self, css_class='btn-success modal-submit', button_text='Submit', **kwargs):
|
|
349
|
-
|
|
350
|
-
return StrictButton(button_text, onclick=f'save_modal_{self.form_id}()', css_class=css_class, **kwargs)
|
|
351
|
-
else:
|
|
352
|
-
return super().submit_button(css_class, button_text, **kwargs)
|
|
346
|
+
return StrictButton(button_text, onclick=f'save_modal_{self.form_id}()', css_class=css_class, **kwargs)
|
|
353
347
|
|
|
354
348
|
def cancel_button(self, css_class=cancel_class, **kwargs):
|
|
355
|
-
commands = [{'function': '
|
|
356
|
-
{'function': 'close'}]
|
|
349
|
+
commands = [{'function': 'close'}]
|
|
357
350
|
return self.button('Cancel', commands, css_class, **kwargs)
|
|
358
351
|
|
|
359
352
|
def get_report_type_details(self):
|
|
@@ -9,9 +9,10 @@ from advanced_report_builder.filter_query import FilterQueryMixin
|
|
|
9
9
|
from advanced_report_builder.models import CustomReport, ReportType
|
|
10
10
|
from advanced_report_builder.utils import split_slug, make_slug_str
|
|
11
11
|
from advanced_report_builder.views.query_modal.mixin import MultiQueryModalMixin
|
|
12
|
+
from advanced_report_builder.views.report import ReportBase
|
|
12
13
|
|
|
13
14
|
|
|
14
|
-
class CustomBaseView(
|
|
15
|
+
class CustomBaseView(ReportBase, FilterQueryMixin, TemplateView):
|
|
15
16
|
report_type_slug = None
|
|
16
17
|
|
|
17
18
|
def __init__(self, **kwargs):
|
|
@@ -40,18 +41,6 @@ class CustomBaseView(MenuMixin, FilterQueryMixin, TemplateView):
|
|
|
40
41
|
context['title'] = self.get_title()
|
|
41
42
|
return context
|
|
42
43
|
|
|
43
|
-
def queries_menu(self):
|
|
44
|
-
report_queries = self.report.reportquery_set.all()
|
|
45
|
-
if len(report_queries) > 1:
|
|
46
|
-
dropdown = []
|
|
47
|
-
for report_query in report_queries:
|
|
48
|
-
slug_str = make_slug_str(self.slug, overrides={f'query{self.report.id}': report_query.id})
|
|
49
|
-
dropdown.append((self.request.resolver_match.view_name,
|
|
50
|
-
report_query.name, {'url_kwargs': {'slug': slug_str}}))
|
|
51
|
-
return [MenuItem(menu_display='Version', no_hover=True, css_classes='btn-secondary',
|
|
52
|
-
dropdown=dropdown)]
|
|
53
|
-
return []
|
|
54
|
-
|
|
55
44
|
def setup_menu(self):
|
|
56
45
|
super().setup_menu()
|
|
57
46
|
if not self.show_toolbar:
|
|
@@ -66,7 +55,7 @@ class CustomBaseView(MenuMixin, FilterQueryMixin, TemplateView):
|
|
|
66
55
|
|
|
67
56
|
self.add_menu('button_menu', 'button_group').add_items(
|
|
68
57
|
*report_menu,
|
|
69
|
-
*self.queries_menu()
|
|
58
|
+
*self.queries_menu(report=self.report, dashboard_report=self.dashboard_report)
|
|
70
59
|
)
|
|
71
60
|
|
|
72
61
|
def pod_dashboard_edit_menu(self):
|
|
@@ -88,13 +77,10 @@ class CustomBaseView(MenuMixin, FilterQueryMixin, TemplateView):
|
|
|
88
77
|
else:
|
|
89
78
|
return self.report.name
|
|
90
79
|
|
|
91
|
-
def get_dashboard_class(self, report):
|
|
92
|
-
return None
|
|
93
|
-
|
|
94
80
|
def get_report_type(self):
|
|
95
81
|
if self.report_type_slug is not None:
|
|
96
82
|
if self._report_type is None:
|
|
97
|
-
self._report_type =
|
|
83
|
+
self._report_type = ReportType.objects.get(slug=self.report_type_slug)
|
|
98
84
|
return self._report_type
|
|
99
85
|
return None
|
|
100
86
|
|
|
@@ -139,14 +125,10 @@ class CustomModal(MultiQueryModalMixin, ModelFormModal):
|
|
|
139
125
|
'notes']
|
|
140
126
|
|
|
141
127
|
def form_setup(self, form, *_args, **_kwargs):
|
|
142
|
-
fields = [
|
|
143
|
-
'report_tags',
|
|
144
|
-
'notes']
|
|
145
|
-
|
|
128
|
+
fields = [*self.form_fields]
|
|
146
129
|
if self.object.id and 'report_type' in self.slug:
|
|
147
|
-
self.add_extra_queries(form=form, fields=fields
|
|
130
|
+
self.add_extra_queries(form=form, fields=fields)
|
|
148
131
|
return fields
|
|
149
132
|
|
|
150
133
|
def get_report_type(self, **_kwargs):
|
|
151
134
|
return self.slug['report_type']
|
|
152
|
-
|
|
@@ -9,11 +9,11 @@ from django.views.generic import TemplateView
|
|
|
9
9
|
from django_menus.menu import MenuMixin
|
|
10
10
|
from django_modals.forms import CrispyForm
|
|
11
11
|
from django_modals.modals import ModelFormModal, FormModal
|
|
12
|
-
from django_modals.processes import PROCESS_EDIT_DELETE, PERMISSION_OFF
|
|
12
|
+
from django_modals.processes import PROCESS_EDIT_DELETE, PERMISSION_OFF, PERMISSION_DISABLE
|
|
13
13
|
from django_modals.widgets.select2 import Select2
|
|
14
14
|
from django_modals.widgets.widgets import Toggle
|
|
15
15
|
|
|
16
|
-
from advanced_report_builder.models import Dashboard, DashboardReport, Report
|
|
16
|
+
from advanced_report_builder.models import Dashboard, DashboardReport, Report, ReportQuery
|
|
17
17
|
from advanced_report_builder.utils import split_slug
|
|
18
18
|
from advanced_report_builder.views.bar_charts import BarChartView
|
|
19
19
|
from advanced_report_builder.views.datatables.datatables import TableView
|
|
@@ -188,17 +188,23 @@ class DashboardReportModal(ModelFormModal):
|
|
|
188
188
|
model = DashboardReport
|
|
189
189
|
process = PROCESS_EDIT_DELETE
|
|
190
190
|
permission_delete = PERMISSION_OFF
|
|
191
|
+
permission_create = PERMISSION_DISABLE
|
|
191
192
|
|
|
192
193
|
form_fields = ['name_override',
|
|
193
194
|
'top',
|
|
194
|
-
'display_option'
|
|
195
|
-
|
|
195
|
+
'display_option',
|
|
196
|
+
'show_versions',
|
|
197
|
+
'report_query']
|
|
198
|
+
widgets = {'top': Toggle(attrs={'data-onstyle': 'success', 'data-on': 'YES', 'data-off': 'NO'}),
|
|
199
|
+
'show_versions': Toggle(attrs={'data-onstyle': 'success', 'data-on': 'YES', 'data-off': 'NO'})}
|
|
196
200
|
|
|
197
201
|
@staticmethod
|
|
198
202
|
def form_setup(form, *_args, **_kwargs):
|
|
199
203
|
form.add_trigger('top', 'onchange', [
|
|
200
204
|
{'selector': '#div_id_display_option', 'values': {'checked': 'hide'}, 'default': 'show'},
|
|
201
205
|
])
|
|
206
|
+
report_queries = ReportQuery.objects.filter(report=form.instance.report)
|
|
207
|
+
form.fields['report_query'] = ModelChoiceField(queryset=report_queries, widget=Select2, required=False)
|
|
202
208
|
|
|
203
209
|
|
|
204
210
|
class DashboardAddReportForm(CrispyForm):
|
|
@@ -106,7 +106,7 @@ class TableView(ReportBase, TableUtilsMixin, DatatableView):
|
|
|
106
106
|
|
|
107
107
|
self.add_menu('button_menu', 'button_group').add_items(
|
|
108
108
|
*report_menu,
|
|
109
|
-
*self.queries_menu(),
|
|
109
|
+
*self.queries_menu(report=self.report, dashboard_report=self.dashboard_report),
|
|
110
110
|
)
|
|
111
111
|
|
|
112
112
|
def pod_dashboard_edit_menu(self):
|
|
@@ -134,18 +134,6 @@ class TableView(ReportBase, TableUtilsMixin, DatatableView):
|
|
|
134
134
|
*self.duplicate_menu(request=self.request, report_id=chart_report_id)
|
|
135
135
|
]
|
|
136
136
|
|
|
137
|
-
# noinspection PyMethodMayBeStatic
|
|
138
|
-
def queries_menu(self):
|
|
139
|
-
report_queries = self.table_report.reportquery_set.all()
|
|
140
|
-
if len(report_queries) > 1:
|
|
141
|
-
dropdown = []
|
|
142
|
-
for report_query in report_queries:
|
|
143
|
-
slug_str = make_slug_str(self.slug, overrides={f'query{self.table_report.id}': report_query.id})
|
|
144
|
-
dropdown.append((self.request.resolver_match.view_name,
|
|
145
|
-
report_query.name, {'url_kwargs': {'slug': slug_str}}))
|
|
146
|
-
return [MenuItem(menu_display='Version', no_hover=True, css_classes='btn-secondary',
|
|
147
|
-
dropdown=dropdown)]
|
|
148
|
-
return []
|
|
149
137
|
|
|
150
138
|
def get_dashboard_class(self, report):
|
|
151
139
|
pivot_fields = report.tablereport.pivot_fields
|
|
@@ -2,16 +2,11 @@ import base64
|
|
|
2
2
|
import json
|
|
3
3
|
|
|
4
4
|
from crispy_forms.bootstrap import StrictButton
|
|
5
|
-
from crispy_forms.layout import Div
|
|
6
|
-
from django.conf import settings
|
|
5
|
+
from crispy_forms.layout import Div
|
|
7
6
|
from django.forms import CharField, ChoiceField, BooleanField, IntegerField
|
|
8
7
|
from django.urls import reverse
|
|
9
|
-
from django_datatables.columns import MenuColumn
|
|
10
|
-
from django_datatables.widgets import DataTableReorderWidget
|
|
11
|
-
from django_menus.menu import HtmlMenu, MenuItem
|
|
12
8
|
from django_modals.fields import FieldEx
|
|
13
9
|
from django_modals.form_helpers import HorizontalNoEnterHelper
|
|
14
|
-
from django_modals.forms import ModelCrispyForm
|
|
15
10
|
from django_modals.modals import FormModal
|
|
16
11
|
from django_modals.processes import PROCESS_EDIT_DELETE, PERMISSION_OFF
|
|
17
12
|
from django_modals.widgets.select2 import Select2Multiple
|
|
@@ -19,7 +14,7 @@ from django_modals.widgets.widgets import Toggle
|
|
|
19
14
|
|
|
20
15
|
from advanced_report_builder.globals import DATE_FIELDS, NUMBER_FIELDS, ANNOTATION_VALUE_CHOICES, ANNOTATIONS_CHOICES, \
|
|
21
16
|
DATE_FORMAT_TYPES, CURRENCY_COLUMNS, LINK_COLUMNS
|
|
22
|
-
from advanced_report_builder.models import TableReport,
|
|
17
|
+
from advanced_report_builder.models import TableReport, ReportType
|
|
23
18
|
from advanced_report_builder.toggle import RBToggle
|
|
24
19
|
from advanced_report_builder.utils import split_attr, encode_attribute, decode_attribute, get_report_builder_class
|
|
25
20
|
from advanced_report_builder.views.charts_base import ChartBaseFieldForm
|
|
@@ -33,7 +28,6 @@ class TableModal(MultiQueryModalMixin, QueryBuilderModalBase):
|
|
|
33
28
|
model = TableReport
|
|
34
29
|
process = PROCESS_EDIT_DELETE
|
|
35
30
|
permission_delete = PERMISSION_OFF
|
|
36
|
-
ajax_commands = ['datatable', 'button']
|
|
37
31
|
show_order_by = False
|
|
38
32
|
|
|
39
33
|
widgets = {'report_tags': Select2Multiple}
|
|
@@ -110,7 +104,7 @@ class TableModal(MultiQueryModalMixin, QueryBuilderModalBase):
|
|
|
110
104
|
]
|
|
111
105
|
|
|
112
106
|
if self.object.id:
|
|
113
|
-
self.add_extra_queries(form=form, fields=fields
|
|
107
|
+
self.add_extra_queries(form=form, fields=fields)
|
|
114
108
|
|
|
115
109
|
return fields
|
|
116
110
|
|
|
@@ -124,15 +118,6 @@ class TableModal(MultiQueryModalMixin, QueryBuilderModalBase):
|
|
|
124
118
|
self.add_command('reload')
|
|
125
119
|
return self.command_response()
|
|
126
120
|
|
|
127
|
-
def post_save(self, created, form):
|
|
128
|
-
if created:
|
|
129
|
-
self.modal_redirect(self.request.resolver_match.view_name, slug=f'pk-{self.object.id}-new-True')
|
|
130
|
-
else:
|
|
131
|
-
url_name = getattr(settings, 'REPORT_BUILDER_DETAIL_URL_NAME', '')
|
|
132
|
-
if url_name and self.slug.get('new'):
|
|
133
|
-
url = reverse(url_name, kwargs={'slug': self.object.slug})
|
|
134
|
-
self.command_response('redirect', url=url)
|
|
135
|
-
|
|
136
121
|
def ajax_get_fields(self, **kwargs):
|
|
137
122
|
report_type_id = kwargs['report_type']
|
|
138
123
|
report_builder_class, base_model = self.get_report_builder_class(report_type_id=report_type_id)
|
|
@@ -161,7 +146,6 @@ class TableModal(MultiQueryModalMixin, QueryBuilderModalBase):
|
|
|
161
146
|
search_string=kwargs.get('search'))
|
|
162
147
|
|
|
163
148
|
|
|
164
|
-
|
|
165
149
|
class TableFieldForm(ChartBaseFieldForm):
|
|
166
150
|
cancel_class = 'btn-secondary modal-cancel'
|
|
167
151
|
|
|
@@ -415,14 +399,3 @@ class TablePivotModal(QueryBuilderModalBaseMixin, FormModal):
|
|
|
415
399
|
self.add_command({'function': 'update_pivot_selection'})
|
|
416
400
|
return self.command_response('close')
|
|
417
401
|
|
|
418
|
-
|
|
419
|
-
class QueryForm(ModelCrispyForm):
|
|
420
|
-
cancel_class = 'btn-secondary modal-cancel'
|
|
421
|
-
|
|
422
|
-
class Meta:
|
|
423
|
-
model = ReportQuery
|
|
424
|
-
fields = ['name',
|
|
425
|
-
'query']
|
|
426
|
-
|
|
427
|
-
def submit_button(self, css_class='btn-success modal-submit', button_text='Submit', **kwargs):
|
|
428
|
-
return StrictButton(button_text, onclick=f'save_modal_{self.form_id}()', css_class=css_class, **kwargs)
|