django-advanced-report-builder 0.5.8__tar.gz → 0.6.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.5.8/django_advanced_report_builder.egg-info → django-advanced-report-builder-0.6.0}/PKG-INFO +1 -1
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/urls.py +5 -2
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/custom.py +55 -8
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/datatables/modal.py +4 -123
- django-advanced-report-builder-0.6.0/advanced_report_builder/views/query_modal/mixin.py +105 -0
- django-advanced-report-builder-0.6.0/advanced_report_builder/views/query_modal/modal.py +38 -0
- django-advanced-report-builder-0.6.0/advanced_report_builder/views/targets/__init__.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0/django_advanced_report_builder.egg-info}/PKG-INFO +1 -1
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/django_advanced_report_builder.egg-info/SOURCES.txt +4 -1
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/setup.py +1 -1
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/LICENSE +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/MANIFEST.in +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/README.md +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/__init__.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/admin.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/apps.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/columns.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/customise.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/data_merge/__init__.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/data_merge/utils.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/data_merge/widget.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/duplicate.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/exceptions.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/field_types.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/field_utils.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/filter_query.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/generate_series.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/globals.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/includes.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/0001_initial.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/0002_auto_20220209_1657.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/0003_auto_20220215_1219.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/0004_customreport.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/0005_auto_20220303_0958.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/0006_auto_20220310_1147.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/0007_auto_20220322_1939.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/0008_auto_20220404_1144.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/0009_auto_20230428_1554.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/0010_auto_20230428_2033.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/0011_auto_20230620_1449.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/0012_auto_20230718_1642.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/migrations/__init__.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/models.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/report_builder.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.esm.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.min.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chartjs-adapter-moment.min.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chartjs-plugin-datalabels.min.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chunks/helpers.segment.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/helpers.esm.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/d3/js/d3.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/d3/js/d3.min.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/d3-funnel/js/d3-funnel.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/d3-funnel/js/d3-funnel.min.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/dashboard/js/dashboard.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/dot/js/.gitignore +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/dot/js/.travis.yml +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/dot/js/LICENSE-DOT.txt +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/dot/js/README.md +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/dot/js/bin/dot-packer +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/dot/js/bower.json +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/dot/js/doT.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/dot/js/doT.min.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/dot/js/doU.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/dot/js/index.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/dot/js/package.json +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/jquery_extendext/js/jQuery.extendext.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/jquery_extendext/js/jQuery.extendext.min.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.dark.css +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.dark.min.css +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.default.css +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.default.min.css +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ar.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.az.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.bg.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.cs.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.da.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.de.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.el.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.en.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.es.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.fa-IR.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.fr.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.he.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.it.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.nl.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.no.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pl.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pt-BR.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pt-PT.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ro.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ru.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.sq.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.tr.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ua.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.zh-CN.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/plugins/currency/plugin.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.min.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.standalone.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.standalone.min.js +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/dark.scss +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/default.scss +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_bt-checkbox.scss +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_bt-tooltip-errors.scss +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_filter-description.scss +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_invert.scss +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_sortable.scss +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/bt-tooltip-errors.scss +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/filter-description.scss +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/invert.scss +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/sortable.scss +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/charts/bar/middle.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/charts/funnel/middle.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/charts/funnel/report.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/charts/line/middle.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/charts/modal.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/charts/modal_field.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/charts/pie/middle.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/charts/report.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/data_merge/data_merge.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/datatables/fields/modal.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/datatables/fields/single_query_builder.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/datatables/modal.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/datatables/onclick_menu.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/datatables/report.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/datatables/select_pivot.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/kanban/description_modal.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/kanban/middle.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/kanban/modal.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/kanban/report.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/query_builder.html +0 -0
- {django-advanced-report-builder-0.5.8/advanced_report_builder/templates/advanced_report_builder/datatables → django-advanced-report-builder-0.6.0/advanced_report_builder/templates/advanced_report_builder}/query_modal.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/select_column.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/single_values/middle.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/single_values/modal.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/templates/advanced_report_builder/single_values/report.html +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/toggle.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/utils.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/variable_date.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/__init__.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/bar_charts.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/charts_base.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/dashboard.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/datatables/__init__.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/datatables/datatables.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/datatables/utils.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/funnel_charts.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/kanban.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/line_charts.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/modals_base.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/pie_charts.py +0 -0
- {django-advanced-report-builder-0.5.8/advanced_report_builder/views/targets → django-advanced-report-builder-0.6.0/advanced_report_builder/views/query_modal}/__init__.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/report.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/report_utils_mixin.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/reports.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/single_values.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/targets/utils.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/advanced_report_builder/views/targets/views.py +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/django_advanced_report_builder.egg-info/dependency_links.txt +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/django_advanced_report_builder.egg-info/requires.txt +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.0}/django_advanced_report_builder.egg-info/top_level.txt +0 -0
- {django-advanced-report-builder-0.5.8 → django-advanced-report-builder-0.6.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.6.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
|
|
@@ -4,7 +4,8 @@ from advanced_report_builder.views.bar_charts import BarChartModal, BarChartFiel
|
|
|
4
4
|
BarChartBreakdownFieldModal
|
|
5
5
|
from advanced_report_builder.views.custom import CustomModal
|
|
6
6
|
from advanced_report_builder.views.dashboard import DashboardReportModal, DashboardModal, DashboardAddReportModal
|
|
7
|
-
from advanced_report_builder.views.datatables.modal import TableModal, TableFieldModal, TablePivotModal
|
|
7
|
+
from advanced_report_builder.views.datatables.modal import TableModal, TableFieldModal, TablePivotModal
|
|
8
|
+
from advanced_report_builder.views.query_modal.modal import QueryModal
|
|
8
9
|
from advanced_report_builder.views.funnel_charts import FunnelChartModal, FunnelChartFieldModal
|
|
9
10
|
from advanced_report_builder.views.kanban import KanbanModal, KanbanLaneModal, KanbanLaneDuplicateModal, \
|
|
10
11
|
KanbanDescriptionModal, KanbanDescriptionDuplicateModal
|
|
@@ -19,10 +20,12 @@ app_name = 'advanced_report_builder'
|
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
urlpatterns = [
|
|
23
|
+
|
|
24
|
+
path('query/modal/query/<str:slug>', QueryModal.as_view(), name='query_modal'),
|
|
25
|
+
|
|
22
26
|
path('table/modal/<str:slug>/', TableModal.as_view(), name='table_modal'),
|
|
23
27
|
path('table/modal/field/<str:slug>/', TableFieldModal.as_view(), name='table_field_modal'),
|
|
24
28
|
path('table/modal/pivot/<str:slug>/', TablePivotModal.as_view(), name='table_pivot_modal'),
|
|
25
|
-
path('table/modal/query/<str:slug>', TableQueryModal.as_view(), name='table_query_modal'),
|
|
26
29
|
|
|
27
30
|
path('single-value/modal/<str:slug>/', SingleValueModal.as_view(), name='single_value_modal'),
|
|
28
31
|
path('single-value/modal/field/<str:slug>/', SingleValueTableFieldModal.as_view(), name='single_value_field_modal'),
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
from django.views.generic import TemplateView
|
|
2
|
-
from
|
|
2
|
+
from django.views.generic import TemplateView
|
|
3
|
+
from django_menus.menu import MenuItem
|
|
4
|
+
from django_menus.menu import MenuMixin
|
|
3
5
|
from django_modals.modals import ModelFormModal
|
|
4
6
|
from django_modals.processes import PROCESS_EDIT_DELETE, PERMISSION_OFF
|
|
5
7
|
from django_modals.widgets.select2 import Select2Multiple
|
|
6
8
|
|
|
9
|
+
from advanced_report_builder.filter_query import FilterQueryMixin
|
|
7
10
|
from advanced_report_builder.models import CustomReport
|
|
8
|
-
from advanced_report_builder.utils import split_slug
|
|
11
|
+
from advanced_report_builder.utils import split_slug, make_slug_str
|
|
12
|
+
from advanced_report_builder.views.query_modal.mixin import MultiQueryModalMixin
|
|
9
13
|
|
|
10
14
|
|
|
11
|
-
class CustomBaseView(MenuMixin, TemplateView):
|
|
15
|
+
class CustomBaseView(MenuMixin, FilterQueryMixin, TemplateView):
|
|
12
16
|
|
|
13
17
|
def __init__(self, **kwargs):
|
|
14
18
|
self.report = None
|
|
@@ -16,6 +20,7 @@ class CustomBaseView(MenuMixin, TemplateView):
|
|
|
16
20
|
self.enable_edit = None
|
|
17
21
|
self.dashboard_report = None
|
|
18
22
|
self.show_toolbar = False
|
|
23
|
+
self.enable_queries = True
|
|
19
24
|
super().__init__(**kwargs)
|
|
20
25
|
|
|
21
26
|
def dispatch(self, request, *args, **kwargs):
|
|
@@ -34,6 +39,18 @@ class CustomBaseView(MenuMixin, TemplateView):
|
|
|
34
39
|
context['title'] = self.get_title()
|
|
35
40
|
return context
|
|
36
41
|
|
|
42
|
+
def queries_menu(self):
|
|
43
|
+
report_queries = self.report.reportquery_set.all()
|
|
44
|
+
if len(report_queries) > 1:
|
|
45
|
+
dropdown = []
|
|
46
|
+
for report_query in report_queries:
|
|
47
|
+
slug_str = make_slug_str(self.slug, overrides={f'query{self.report.id}': report_query.id})
|
|
48
|
+
dropdown.append((self.request.resolver_match.view_name,
|
|
49
|
+
report_query.name, {'url_kwargs': {'slug': slug_str}}))
|
|
50
|
+
return [MenuItem(menu_display='Version', no_hover=True, css_classes='btn-secondary',
|
|
51
|
+
dropdown=dropdown)]
|
|
52
|
+
return []
|
|
53
|
+
|
|
37
54
|
def setup_menu(self):
|
|
38
55
|
super().setup_menu()
|
|
39
56
|
if not self.show_toolbar:
|
|
@@ -70,15 +87,31 @@ class CustomBaseView(MenuMixin, TemplateView):
|
|
|
70
87
|
else:
|
|
71
88
|
return self.report.name
|
|
72
89
|
|
|
73
|
-
# noinspection PyMethodMayBeStatic
|
|
74
|
-
def queries_menu(self):
|
|
75
|
-
return []
|
|
76
|
-
|
|
77
90
|
def get_dashboard_class(self, report):
|
|
78
91
|
return None
|
|
79
92
|
|
|
93
|
+
def get_report_type(self):
|
|
94
|
+
return None
|
|
95
|
+
|
|
96
|
+
def get_default_query(self):
|
|
97
|
+
return None
|
|
80
98
|
|
|
81
|
-
|
|
99
|
+
def get_default_filter(self, query):
|
|
100
|
+
return query
|
|
101
|
+
|
|
102
|
+
def get_query_results(self):
|
|
103
|
+
query = self.get_default_query()
|
|
104
|
+
if query is None:
|
|
105
|
+
return None
|
|
106
|
+
|
|
107
|
+
report_query = self.get_report_query(report=self.report)
|
|
108
|
+
if report_query:
|
|
109
|
+
result = self.process_query_filters(query=query, search_filter_data=report_query.query)
|
|
110
|
+
return result
|
|
111
|
+
return self.get_default_filter(query)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class CustomModal(MultiQueryModalMixin, ModelFormModal):
|
|
82
115
|
process = PROCESS_EDIT_DELETE
|
|
83
116
|
permission_delete = PERMISSION_OFF
|
|
84
117
|
model = CustomReport
|
|
@@ -88,3 +121,17 @@ class CustomModal(ModelFormModal):
|
|
|
88
121
|
form_fields = ['name',
|
|
89
122
|
'report_tags',
|
|
90
123
|
'notes']
|
|
124
|
+
|
|
125
|
+
ajax_commands = ['datatable', 'button']
|
|
126
|
+
|
|
127
|
+
def form_setup(self, form, *_args, **_kwargs):
|
|
128
|
+
fields = ['name',
|
|
129
|
+
'report_tags',
|
|
130
|
+
'notes']
|
|
131
|
+
|
|
132
|
+
if self.object.id and 'report_type' in self.slug:
|
|
133
|
+
self.add_extra_queries(form=form, fields=fields)
|
|
134
|
+
return fields
|
|
135
|
+
|
|
136
|
+
def get_report_type(self, **_kwargs):
|
|
137
|
+
return self.slug['report_type']
|
|
@@ -12,7 +12,7 @@ from django_menus.menu import HtmlMenu, MenuItem
|
|
|
12
12
|
from django_modals.fields import FieldEx
|
|
13
13
|
from django_modals.form_helpers import HorizontalNoEnterHelper
|
|
14
14
|
from django_modals.forms import ModelCrispyForm
|
|
15
|
-
from django_modals.modals import FormModal
|
|
15
|
+
from django_modals.modals import FormModal
|
|
16
16
|
from django_modals.processes import PROCESS_EDIT_DELETE, PERMISSION_OFF
|
|
17
17
|
from django_modals.widgets.select2 import Select2Multiple
|
|
18
18
|
from django_modals.widgets.widgets import Toggle
|
|
@@ -24,9 +24,10 @@ from advanced_report_builder.toggle import RBToggle
|
|
|
24
24
|
from advanced_report_builder.utils import split_attr, encode_attribute, decode_attribute, get_report_builder_class
|
|
25
25
|
from advanced_report_builder.views.charts_base import ChartBaseFieldForm
|
|
26
26
|
from advanced_report_builder.views.modals_base import QueryBuilderModalBaseMixin, QueryBuilderModalBase
|
|
27
|
+
from advanced_report_builder.views.query_modal.mixin import MultiQueryModalMixin
|
|
27
28
|
|
|
28
29
|
|
|
29
|
-
class TableModal(QueryBuilderModalBase):
|
|
30
|
+
class TableModal(MultiQueryModalMixin, QueryBuilderModalBase):
|
|
30
31
|
template_name = 'advanced_report_builder/datatables/modal.html'
|
|
31
32
|
size = 'xl'
|
|
32
33
|
model = TableReport
|
|
@@ -108,61 +109,8 @@ class TableModal(QueryBuilderModalBase):
|
|
|
108
109
|
]
|
|
109
110
|
|
|
110
111
|
if self.object.id:
|
|
112
|
+
self.add_extra_queries(form=form, fields=fields)
|
|
111
113
|
|
|
112
|
-
add_query_js = 'django_modal.process_commands_lock([{"function": "post_modal", ' \
|
|
113
|
-
'"button": {"button": "add_query"}}])'
|
|
114
|
-
|
|
115
|
-
description_add_menu_items = [
|
|
116
|
-
|
|
117
|
-
MenuItem(add_query_js.replace('"', """),
|
|
118
|
-
menu_display='Add Query Version',
|
|
119
|
-
css_classes='btn btn-primary',
|
|
120
|
-
font_awesome='fas fa-pencil',
|
|
121
|
-
link_type=MenuItem.HREF)]
|
|
122
|
-
|
|
123
|
-
menu = HtmlMenu(self.request,
|
|
124
|
-
'advanced_report_builder/datatables/onclick_menu.html').add_items(
|
|
125
|
-
*description_add_menu_items)
|
|
126
|
-
|
|
127
|
-
fields.append(Div(HTML(menu.render()), css_class='form-buttons'))
|
|
128
|
-
edit_query_js = 'django_modal.process_commands_lock([{"function": "post_modal", ' \
|
|
129
|
-
'"button": {"button": "edit_query", "query_id": $(this).closest(\'tr\').attr(\'id\')}}])'
|
|
130
|
-
|
|
131
|
-
duplicate_query_js = 'django_modal.process_commands_lock([{"function": "post_modal", ' \
|
|
132
|
-
'"button": {"button": "duplicate_query", ' \
|
|
133
|
-
'"query_id": $(this).closest(\'tr\').attr(\'id\')}}])'
|
|
134
|
-
|
|
135
|
-
description_edit_menu_items = [
|
|
136
|
-
MenuItem(duplicate_query_js.replace('"', """),
|
|
137
|
-
menu_display='Duplicate',
|
|
138
|
-
css_classes='btn btn-sm btn-outline-dark',
|
|
139
|
-
font_awesome='fas fa-clone',
|
|
140
|
-
link_type=MenuItem.HREF),
|
|
141
|
-
|
|
142
|
-
MenuItem(edit_query_js.replace('"', """),
|
|
143
|
-
menu_display='Edit',
|
|
144
|
-
css_classes='btn btn-sm btn-outline-dark',
|
|
145
|
-
font_awesome='fas fa-pencil',
|
|
146
|
-
link_type=MenuItem.HREF)]
|
|
147
|
-
|
|
148
|
-
form.fields['queries'] = CharField(
|
|
149
|
-
required=False,
|
|
150
|
-
label='Queries Versions',
|
|
151
|
-
widget=DataTableReorderWidget(
|
|
152
|
-
model=ReportQuery,
|
|
153
|
-
order_field='order',
|
|
154
|
-
fields=['_.index',
|
|
155
|
-
'.id',
|
|
156
|
-
'name',
|
|
157
|
-
|
|
158
|
-
MenuColumn(column_name='menu', field='id',
|
|
159
|
-
column_defs={'orderable': False, 'className': 'dt-right'},
|
|
160
|
-
menu=HtmlMenu(self.request,
|
|
161
|
-
'advanced_report_builder/datatables/onclick_menu.html').add_items(
|
|
162
|
-
*description_edit_menu_items)),
|
|
163
|
-
],
|
|
164
|
-
attrs={'filter': {'report__id': self.object.id}}))
|
|
165
|
-
fields.append('queries')
|
|
166
114
|
return fields
|
|
167
115
|
|
|
168
116
|
def form_valid(self, form):
|
|
@@ -211,45 +159,6 @@ class TableModal(QueryBuilderModalBase):
|
|
|
211
159
|
report_type=kwargs['report_type'],
|
|
212
160
|
search_string=kwargs.get('search'))
|
|
213
161
|
|
|
214
|
-
def datatable_sort(self, **kwargs):
|
|
215
|
-
|
|
216
|
-
form = self.get_form()
|
|
217
|
-
widget = form.fields[kwargs['table_id'][3:]].widget
|
|
218
|
-
_model = widget.attrs['table_model']
|
|
219
|
-
current_sort = dict(_model.objects.filter(report=self.object.id).values_list('id', 'order'))
|
|
220
|
-
for s in kwargs['sort']:
|
|
221
|
-
if current_sort[s[1]] != s[0]:
|
|
222
|
-
o = _model.objects.get(id=s[1])
|
|
223
|
-
o.order = s[0]
|
|
224
|
-
o.save()
|
|
225
|
-
return self.command_response('')
|
|
226
|
-
|
|
227
|
-
def button_duplicate_query(self, **_kwargs):
|
|
228
|
-
query_id = _kwargs['query_id'][1:]
|
|
229
|
-
report_query = ReportQuery.objects.get(pk=query_id)
|
|
230
|
-
report_query.slug = None
|
|
231
|
-
report_query.pk = None
|
|
232
|
-
report_query.order = None
|
|
233
|
-
report_query.save()
|
|
234
|
-
|
|
235
|
-
report_type = _kwargs['report_type']
|
|
236
|
-
url = reverse('advanced_report_builder:table_query_modal',
|
|
237
|
-
kwargs={'slug': f'pk-{report_query.id}-report_type-{report_type}'})
|
|
238
|
-
return self.command_response('show_modal', modal=url)
|
|
239
|
-
|
|
240
|
-
def button_add_query(self, **_kwargs):
|
|
241
|
-
report_type = _kwargs['report_type']
|
|
242
|
-
url = reverse('advanced_report_builder:table_query_modal',
|
|
243
|
-
kwargs={'slug': f'report_id-{self.object.id}-report_type-{report_type}'})
|
|
244
|
-
return self.command_response('show_modal', modal=url)
|
|
245
|
-
|
|
246
|
-
def button_edit_query(self, **_kwargs):
|
|
247
|
-
query_id = _kwargs['query_id'][1:]
|
|
248
|
-
report_type = _kwargs['report_type']
|
|
249
|
-
url = reverse('advanced_report_builder:table_query_modal',
|
|
250
|
-
kwargs={'slug': f'pk-{query_id}-report_type-{report_type}'})
|
|
251
|
-
return self.command_response('show_modal', modal=url)
|
|
252
|
-
|
|
253
162
|
|
|
254
163
|
class TableFieldForm(ChartBaseFieldForm):
|
|
255
164
|
cancel_class = 'btn-secondary modal-cancel'
|
|
@@ -515,31 +424,3 @@ class TableQueryForm(ModelCrispyForm):
|
|
|
515
424
|
|
|
516
425
|
def submit_button(self, css_class='btn-success modal-submit', button_text='Submit', **kwargs):
|
|
517
426
|
return StrictButton(button_text, onclick=f'save_modal_{self.form_id}()', css_class=css_class, **kwargs)
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
class TableQueryModal(QueryBuilderModalBaseMixin, ModelFormModal):
|
|
521
|
-
model = ReportQuery
|
|
522
|
-
process = PROCESS_EDIT_DELETE
|
|
523
|
-
permission_delete = PERMISSION_OFF
|
|
524
|
-
form_class = TableQueryForm
|
|
525
|
-
helper_class = HorizontalNoEnterHelper
|
|
526
|
-
|
|
527
|
-
template_name = 'advanced_report_builder/datatables/query_modal.html'
|
|
528
|
-
no_header_x = True
|
|
529
|
-
|
|
530
|
-
def post_save(self, created, form):
|
|
531
|
-
self.add_command({'function': 'save_query_builder_id_query'})
|
|
532
|
-
return self.command_response('close')
|
|
533
|
-
|
|
534
|
-
def form_setup(self, form, *_args, **_kwargs):
|
|
535
|
-
fields = ['name',
|
|
536
|
-
FieldEx('query', template='advanced_report_builder/query_builder.html')]
|
|
537
|
-
return fields
|
|
538
|
-
|
|
539
|
-
def ajax_get_query_builder_fields(self, **kwargs):
|
|
540
|
-
field_auto_id = kwargs['field_auto_id']
|
|
541
|
-
|
|
542
|
-
report_type_id = self.slug['report_type']
|
|
543
|
-
query_builder_filters = self.get_query_builder_report_type_field(report_type_id=report_type_id)
|
|
544
|
-
|
|
545
|
-
return self.command_response(f'query_builder_{field_auto_id}', data=json.dumps(query_builder_filters))
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
from crispy_forms.layout import Div, HTML
|
|
2
|
+
from django.forms import CharField
|
|
3
|
+
from django.urls import reverse
|
|
4
|
+
from django_datatables.columns import MenuColumn
|
|
5
|
+
from django_datatables.widgets import DataTableReorderWidget
|
|
6
|
+
from django_menus.menu import MenuItem, HtmlMenu
|
|
7
|
+
|
|
8
|
+
from advanced_report_builder.models import ReportQuery
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class MultiQueryModalMixin:
|
|
12
|
+
def datatable_sort(self, **kwargs):
|
|
13
|
+
form = self.get_form()
|
|
14
|
+
widget = form.fields[kwargs['table_id'][3:]].widget
|
|
15
|
+
_model = widget.attrs['table_model']
|
|
16
|
+
current_sort = dict(_model.objects.filter(report=self.object.id).values_list('id', 'order'))
|
|
17
|
+
for s in kwargs['sort']:
|
|
18
|
+
if current_sort[s[1]] != s[0]:
|
|
19
|
+
o = _model.objects.get(id=s[1])
|
|
20
|
+
o.order = s[0]
|
|
21
|
+
o.save()
|
|
22
|
+
return self.command_response('')
|
|
23
|
+
def get_report_type(self, **_kwargs):
|
|
24
|
+
return _kwargs['report_type']
|
|
25
|
+
def button_duplicate_query(self, **_kwargs):
|
|
26
|
+
query_id = _kwargs['query_id'][1:]
|
|
27
|
+
report_query = ReportQuery.objects.get(pk=query_id)
|
|
28
|
+
report_query.slug = None
|
|
29
|
+
report_query.pk = None
|
|
30
|
+
report_query.order = None
|
|
31
|
+
report_query.save()
|
|
32
|
+
|
|
33
|
+
report_type = self.get_report_type(**_kwargs)
|
|
34
|
+
url = reverse('advanced_report_builder:query_modal',
|
|
35
|
+
kwargs={'slug': f'pk-{report_query.id}-report_type-{report_type}'})
|
|
36
|
+
return self.command_response('show_modal', modal=url)
|
|
37
|
+
|
|
38
|
+
def button_add_query(self, **_kwargs):
|
|
39
|
+
report_type = self.get_report_type(**_kwargs)
|
|
40
|
+
url = reverse('advanced_report_builder:query_modal',
|
|
41
|
+
kwargs={'slug': f'report_id-{self.object.id}-report_type-{report_type}'})
|
|
42
|
+
return self.command_response('show_modal', modal=url)
|
|
43
|
+
|
|
44
|
+
def button_edit_query(self, **_kwargs):
|
|
45
|
+
query_id = _kwargs['query_id'][1:]
|
|
46
|
+
report_type = self.get_report_type(**_kwargs)
|
|
47
|
+
url = reverse('advanced_report_builder:query_modal',
|
|
48
|
+
kwargs={'slug': f'pk-{query_id}-report_type-{report_type}'})
|
|
49
|
+
return self.command_response('show_modal', modal=url)
|
|
50
|
+
|
|
51
|
+
def add_extra_queries(self, form, fields):
|
|
52
|
+
add_query_js = 'django_modal.process_commands_lock([{"function": "post_modal", ' \
|
|
53
|
+
'"button": {"button": "add_query"}}])'
|
|
54
|
+
|
|
55
|
+
description_add_menu_items = [
|
|
56
|
+
|
|
57
|
+
MenuItem(add_query_js.replace('"', """),
|
|
58
|
+
menu_display='Add Query Version',
|
|
59
|
+
css_classes='btn btn-primary',
|
|
60
|
+
font_awesome='fas fa-pencil',
|
|
61
|
+
link_type=MenuItem.HREF)]
|
|
62
|
+
|
|
63
|
+
menu = HtmlMenu(self.request,
|
|
64
|
+
'advanced_report_builder/datatables/onclick_menu.html').add_items(
|
|
65
|
+
*description_add_menu_items)
|
|
66
|
+
|
|
67
|
+
fields.append(Div(HTML(menu.render()), css_class='form-buttons'))
|
|
68
|
+
edit_query_js = 'django_modal.process_commands_lock([{"function": "post_modal", ' \
|
|
69
|
+
'"button": {"button": "edit_query", "query_id": $(this).closest(\'tr\').attr(\'id\')}}])'
|
|
70
|
+
|
|
71
|
+
duplicate_query_js = 'django_modal.process_commands_lock([{"function": "post_modal", ' \
|
|
72
|
+
'"button": {"button": "duplicate_query", ' \
|
|
73
|
+
'"query_id": $(this).closest(\'tr\').attr(\'id\')}}])'
|
|
74
|
+
|
|
75
|
+
description_edit_menu_items = [
|
|
76
|
+
MenuItem(duplicate_query_js.replace('"', """),
|
|
77
|
+
menu_display='Duplicate',
|
|
78
|
+
css_classes='btn btn-sm btn-outline-dark',
|
|
79
|
+
font_awesome='fas fa-clone',
|
|
80
|
+
link_type=MenuItem.HREF),
|
|
81
|
+
|
|
82
|
+
MenuItem(edit_query_js.replace('"', """),
|
|
83
|
+
menu_display='Edit',
|
|
84
|
+
css_classes='btn btn-sm btn-outline-dark',
|
|
85
|
+
font_awesome='fas fa-pencil',
|
|
86
|
+
link_type=MenuItem.HREF)]
|
|
87
|
+
|
|
88
|
+
form.fields['queries'] = CharField(
|
|
89
|
+
required=False,
|
|
90
|
+
label='Queries Versions',
|
|
91
|
+
widget=DataTableReorderWidget(
|
|
92
|
+
model=ReportQuery,
|
|
93
|
+
order_field='order',
|
|
94
|
+
fields=['_.index',
|
|
95
|
+
'.id',
|
|
96
|
+
'name',
|
|
97
|
+
|
|
98
|
+
MenuColumn(column_name='menu', field='id',
|
|
99
|
+
column_defs={'orderable': False, 'className': 'dt-right'},
|
|
100
|
+
menu=HtmlMenu(self.request,
|
|
101
|
+
'advanced_report_builder/datatables/onclick_menu.html').add_items(
|
|
102
|
+
*description_edit_menu_items)),
|
|
103
|
+
],
|
|
104
|
+
attrs={'filter': {'report__id': self.object.id}}))
|
|
105
|
+
fields.append('queries')
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import json
|
|
2
|
+
|
|
3
|
+
from django_modals.fields import FieldEx
|
|
4
|
+
from django_modals.form_helpers import HorizontalNoEnterHelper
|
|
5
|
+
from django_modals.modals import ModelFormModal
|
|
6
|
+
from django_modals.processes import PROCESS_EDIT_DELETE, PERMISSION_OFF
|
|
7
|
+
|
|
8
|
+
from advanced_report_builder.models import ReportQuery
|
|
9
|
+
from advanced_report_builder.views.datatables.modal import TableQueryForm
|
|
10
|
+
from advanced_report_builder.views.modals_base import QueryBuilderModalBaseMixin
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class QueryModal(QueryBuilderModalBaseMixin, ModelFormModal):
|
|
14
|
+
model = ReportQuery
|
|
15
|
+
process = PROCESS_EDIT_DELETE
|
|
16
|
+
permission_delete = PERMISSION_OFF
|
|
17
|
+
form_class = TableQueryForm
|
|
18
|
+
helper_class = HorizontalNoEnterHelper
|
|
19
|
+
|
|
20
|
+
template_name = 'advanced_report_builder/query_modal.html'
|
|
21
|
+
no_header_x = True
|
|
22
|
+
|
|
23
|
+
def post_save(self, created, form):
|
|
24
|
+
self.add_command({'function': 'save_query_builder_id_query'})
|
|
25
|
+
return self.command_response('close')
|
|
26
|
+
|
|
27
|
+
def form_setup(self, form, *_args, **_kwargs):
|
|
28
|
+
fields = ['name',
|
|
29
|
+
FieldEx('query', template='advanced_report_builder/query_builder.html')]
|
|
30
|
+
return fields
|
|
31
|
+
|
|
32
|
+
def ajax_get_query_builder_fields(self, **kwargs):
|
|
33
|
+
field_auto_id = kwargs['field_auto_id']
|
|
34
|
+
|
|
35
|
+
report_type_id = self.slug['report_type']
|
|
36
|
+
query_builder_filters = self.get_query_builder_report_type_field(report_type_id=report_type_id)
|
|
37
|
+
|
|
38
|
+
return self.command_response(f'query_builder_{field_auto_id}', data=json.dumps(query_builder_filters))
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: django-advanced-report-builder
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.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
|
|
@@ -107,6 +107,7 @@ advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugin
|
|
|
107
107
|
advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/invert.scss
|
|
108
108
|
advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/sortable.scss
|
|
109
109
|
advanced_report_builder/templates/advanced_report_builder/query_builder.html
|
|
110
|
+
advanced_report_builder/templates/advanced_report_builder/query_modal.html
|
|
110
111
|
advanced_report_builder/templates/advanced_report_builder/select_column.html
|
|
111
112
|
advanced_report_builder/templates/advanced_report_builder/charts/modal.html
|
|
112
113
|
advanced_report_builder/templates/advanced_report_builder/charts/modal_field.html
|
|
@@ -119,7 +120,6 @@ advanced_report_builder/templates/advanced_report_builder/charts/pie/middle.html
|
|
|
119
120
|
advanced_report_builder/templates/advanced_report_builder/data_merge/data_merge.html
|
|
120
121
|
advanced_report_builder/templates/advanced_report_builder/datatables/modal.html
|
|
121
122
|
advanced_report_builder/templates/advanced_report_builder/datatables/onclick_menu.html
|
|
122
|
-
advanced_report_builder/templates/advanced_report_builder/datatables/query_modal.html
|
|
123
123
|
advanced_report_builder/templates/advanced_report_builder/datatables/report.html
|
|
124
124
|
advanced_report_builder/templates/advanced_report_builder/datatables/select_pivot.html
|
|
125
125
|
advanced_report_builder/templates/advanced_report_builder/datatables/fields/modal.html
|
|
@@ -149,6 +149,9 @@ advanced_report_builder/views/datatables/__init__.py
|
|
|
149
149
|
advanced_report_builder/views/datatables/datatables.py
|
|
150
150
|
advanced_report_builder/views/datatables/modal.py
|
|
151
151
|
advanced_report_builder/views/datatables/utils.py
|
|
152
|
+
advanced_report_builder/views/query_modal/__init__.py
|
|
153
|
+
advanced_report_builder/views/query_modal/mixin.py
|
|
154
|
+
advanced_report_builder/views/query_modal/modal.py
|
|
152
155
|
advanced_report_builder/views/targets/__init__.py
|
|
153
156
|
advanced_report_builder/views/targets/utils.py
|
|
154
157
|
advanced_report_builder/views/targets/views.py
|
|
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
|
|
|
5
5
|
|
|
6
6
|
setuptools.setup(
|
|
7
7
|
name="django-advanced-report-builder",
|
|
8
|
-
version="0.
|
|
8
|
+
version="0.6.0",
|
|
9
9
|
author="Thomas Turner",
|
|
10
10
|
description="Django app that allows you to build reports from modals",
|
|
11
11
|
long_description=long_description,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|