django-advanced-report-builder 0.6.6__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.6/django_advanced_report_builder.egg-info → django-advanced-report-builder-0.7.0}/PKG-INFO +1 -1
- {django-advanced-report-builder-0.6.6 → 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.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/models.py +5 -0
- {django-advanced-report-builder-0.6.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/urls.py +4 -2
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/utils.py +5 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/bar_charts.py +34 -37
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/charts_base.py +5 -12
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/custom.py +6 -24
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/dashboard.py +10 -4
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/datatables/datatables.py +1 -13
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/datatables/modal.py +3 -30
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/funnel_charts.py +18 -17
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/kanban.py +2 -2
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/line_charts.py +25 -23
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/modals_base.py +13 -44
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/pie_charts.py +21 -21
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/query_modal/mixin.py +37 -22
- {django-advanced-report-builder-0.6.6 → 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.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/single_values.py +127 -48
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0/django_advanced_report_builder.egg-info}/PKG-INFO +1 -1
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/django_advanced_report_builder.egg-info/SOURCES.txt +1 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/setup.py +1 -1
- django-advanced-report-builder-0.6.6/advanced_report_builder/templates/advanced_report_builder/kanban/modal.html +0 -12
- django-advanced-report-builder-0.6.6/advanced_report_builder/views/report.py +0 -13
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/LICENSE +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/MANIFEST.in +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/README.md +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/__init__.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/admin.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/apps.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/columns.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/customise.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/data_merge/__init__.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/data_merge/utils.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/data_merge/widget.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/duplicate.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/exceptions.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/field_types.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/field_utils.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/generate_series.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/globals.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/includes.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0001_initial.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0002_auto_20220209_1657.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0003_auto_20220215_1219.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0004_customreport.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0005_auto_20220303_0958.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0006_auto_20220310_1147.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0007_auto_20220322_1939.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0008_auto_20220404_1144.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0009_auto_20230428_1554.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0010_auto_20230428_2033.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0011_auto_20230620_1449.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0012_auto_20230718_1642.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0013_reportqueryorder.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/__init__.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/report_builder.py +0 -0
- {django-advanced-report-builder-0.6.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → 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.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/toggle.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/variable_date.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/__init__.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/datatables/__init__.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/datatables/utils.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/query_modal/__init__.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/report_utils_mixin.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/reports.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/targets/__init__.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/targets/utils.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/targets/views.py +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/django_advanced_report_builder.egg-info/dependency_links.txt +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/django_advanced_report_builder.egg-info/requires.txt +0 -0
- {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/django_advanced_report_builder.egg-info/top_level.txt +0 -0
- {django-advanced-report-builder-0.6.6 → 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\')}}])')
|
|
@@ -36,6 +36,7 @@ from advanced_report_builder.views.charts_base import ChartBaseView, ChartBaseFi
|
|
|
36
36
|
from advanced_report_builder.views.datatables.modal import TableFieldModal, TableFieldForm
|
|
37
37
|
from advanced_report_builder.views.datatables.utils import TableUtilsMixin
|
|
38
38
|
from advanced_report_builder.views.modals_base import QueryBuilderModalBaseMixin, QueryBuilderModalBase
|
|
39
|
+
from advanced_report_builder.views.query_modal.mixin import MultiQueryModalMixin
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
class BarChartView(ChartBaseView):
|
|
@@ -142,11 +143,12 @@ class BarChartView(ChartBaseView):
|
|
|
142
143
|
return start_field_name
|
|
143
144
|
|
|
144
145
|
|
|
145
|
-
class BarChartModal(QueryBuilderModalBase):
|
|
146
|
+
class BarChartModal(MultiQueryModalMixin, QueryBuilderModalBase):
|
|
146
147
|
template_name = 'advanced_report_builder/charts/modal.html'
|
|
147
148
|
process = PROCESS_EDIT_DELETE
|
|
148
149
|
permission_delete = PERMISSION_OFF
|
|
149
150
|
model = BarChartReport
|
|
151
|
+
show_order_by = False
|
|
150
152
|
widgets = {'positive_bar_colour': ColourPickerWidget,
|
|
151
153
|
'negative_bar_colour': ColourPickerWidget,
|
|
152
154
|
'stacked': RBToggle,
|
|
@@ -176,7 +178,7 @@ class BarChartModal(QueryBuilderModalBase):
|
|
|
176
178
|
'breakdown_fields']
|
|
177
179
|
|
|
178
180
|
def form_setup(self, form, *_args, **_kwargs):
|
|
179
|
-
if 'data' in _kwargs:
|
|
181
|
+
if 'data' in _kwargs and len(_kwargs['data']) > 0:
|
|
180
182
|
date_field = _kwargs['data'].get('date_field')
|
|
181
183
|
end_date_field = _kwargs['data'].get('end_date_field')
|
|
182
184
|
report_type_id = _kwargs['data'].get('report_type')
|
|
@@ -200,7 +202,6 @@ class BarChartModal(QueryBuilderModalBase):
|
|
|
200
202
|
|
|
201
203
|
form.fields['notes'].widget.attrs['rows'] = 3
|
|
202
204
|
|
|
203
|
-
self.add_query_data(form)
|
|
204
205
|
url = reverse('advanced_report_builder:bar_chart_field_modal',
|
|
205
206
|
kwargs={'slug': 'selector-99999-data-FIELD_INFO-report_type_id-REPORT_TYPE_ID'})
|
|
206
207
|
|
|
@@ -220,33 +221,34 @@ class BarChartModal(QueryBuilderModalBase):
|
|
|
220
221
|
BarChartReport.DATE_FIELD_RANGE: ('html', 'Start date field')}}
|
|
221
222
|
])
|
|
222
223
|
|
|
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
|
-
|
|
249
|
-
|
|
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
|
|
250
252
|
|
|
251
253
|
def select2_date_field(self, **kwargs):
|
|
252
254
|
return self.get_fields_for_select2(field_type='date',
|
|
@@ -369,7 +371,7 @@ class BarChartFieldModal(QueryBuilderModalBaseMixin, FormModal):
|
|
|
369
371
|
'val': _attr})
|
|
370
372
|
|
|
371
373
|
self.add_command({'function': 'html', 'selector': f'#{selector} span', 'html': form.cleaned_data['title']})
|
|
372
|
-
self.add_command({'function': '
|
|
374
|
+
self.add_command({'function': 'save_query_builder_id_filter'})
|
|
373
375
|
self.add_command({'function': 'update_selection'})
|
|
374
376
|
return self.command_response('close')
|
|
375
377
|
|
|
@@ -419,11 +421,6 @@ class BarChartBreakdownFieldForm(TableFieldForm):
|
|
|
419
421
|
else:
|
|
420
422
|
return super().submit_button(css_class, button_text, **kwargs)
|
|
421
423
|
|
|
422
|
-
def cancel_button(self, css_class=cancel_class, **kwargs):
|
|
423
|
-
commands = [{'function': 'save_query_builder_id_query_data'},
|
|
424
|
-
{'function': 'close'}]
|
|
425
|
-
return self.button('Cancel', commands, css_class, **kwargs)
|
|
426
|
-
|
|
427
424
|
|
|
428
425
|
class BarChartBreakdownFieldModal(TableFieldModal):
|
|
429
426
|
form_class = BarChartBreakdownFieldForm
|
|
@@ -438,7 +435,7 @@ class BarChartBreakdownFieldModal(TableFieldModal):
|
|
|
438
435
|
'val': _attr})
|
|
439
436
|
|
|
440
437
|
self.add_command({'function': 'html', 'selector': f'#{selector} span', 'html': form.cleaned_data['title']})
|
|
441
|
-
self.add_command({'function': '
|
|
438
|
+
self.add_command({'function': 'save_query_builder_id_filter'})
|
|
442
439
|
self.add_command({'function': 'breakdown_update_selection'})
|
|
443
440
|
return self.command_response('close')
|
|
444
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)
|