django-advanced-report-builder 0.9.1__tar.gz → 0.9.3__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.9.1/django_advanced_report_builder.egg-info → django-advanced-report-builder-0.9.3}/PKG-INFO +1 -1
- django-advanced-report-builder-0.9.3/advanced_report_builder/migrations/0015_report_user_created_report_user_updated.py +26 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/models.py +30 -8
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/variable_date.py +48 -18
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/datatables/modal.py +3 -7
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/kanban.py +18 -4
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/modals_base.py +5 -1
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/query_modal/modal.py +10 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/single_values.py +46 -37
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3/django_advanced_report_builder.egg-info}/PKG-INFO +1 -1
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/django_advanced_report_builder.egg-info/SOURCES.txt +1 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/setup.py +1 -1
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/LICENSE +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/MANIFEST.in +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/README.md +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/admin.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/apps.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/column_types.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/columns.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/customise.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/data_merge/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/data_merge/utils.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/data_merge/widget.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/duplicate.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/exceptions.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/field_types.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/field_utils.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/filter_query.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/generate_series.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/globals.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/includes.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0001_initial.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0002_auto_20220209_1657.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0003_auto_20220215_1219.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0004_customreport.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0005_auto_20220303_0958.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0006_auto_20220310_1147.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0007_auto_20220322_1939.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0008_auto_20220404_1144.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0009_auto_20230428_1554.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0010_auto_20230428_2033.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0011_auto_20230620_1449.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0012_auto_20230718_1642.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0013_reportqueryorder.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/0014_auto_20240706_2207.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/migrations/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/report_builder.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/signals.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.esm.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.min.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chartjs-adapter-moment.min.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chartjs-plugin-datalabels.min.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chunks/helpers.segment.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/chart-js/js/helpers.esm.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/d3/js/d3.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/d3/js/d3.min.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/d3-funnel/js/d3-funnel.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/d3-funnel/js/d3-funnel.min.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/dashboard/js/dashboard.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/dot/js/.gitignore +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/dot/js/.travis.yml +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/dot/js/LICENSE-DOT.txt +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/dot/js/README.md +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/dot/js/bin/dot-packer +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/dot/js/bower.json +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/dot/js/doT.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/dot/js/doT.min.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/dot/js/doU.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/dot/js/index.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/dot/js/package.json +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/fullcalendar/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/jquery_extendext/js/jQuery.extendext.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/jquery_extendext/js/jQuery.extendext.min.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/css/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.dark.css +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.dark.min.css +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.default.css +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.default.min.css +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ar.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.az.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.bg.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.cs.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.da.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.de.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.el.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.en.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.es.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.fa-IR.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.fr.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.he.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.it.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.nl.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.no.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pl.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pt-BR.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pt-PT.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ro.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ru.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.sq.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.tr.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ua.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.zh-CN.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/js/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/js/plugins/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/js/plugins/currency/plugin.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.min.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.standalone.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.standalone.min.js +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/dark.scss +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/default.scss +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_bt-checkbox.scss +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_bt-tooltip-errors.scss +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_filter-description.scss +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_invert.scss +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_sortable.scss +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/bt-tooltip-errors.scss +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/filter-description.scss +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/invert.scss +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/sortable.scss +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/charts/bar/middle.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/charts/funnel/middle.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/charts/funnel/report.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/charts/line/middle.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/charts/modal.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/charts/modal_field.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/charts/pie/middle.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/charts/report.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/data_merge/data_merge.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/datatables/fields/modal.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/datatables/fields/single_query_builder.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/datatables/modal.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/datatables/onclick_menu.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/datatables/report.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/datatables/select_pivot.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/kanban/description_modal.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/kanban/middle.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/kanban/modal.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/kanban/report.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/query_builder.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/query_modal.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/select_column.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/single_values/middle.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/single_values/modal.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/templates/advanced_report_builder/single_values/report.html +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/toggle.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/urls.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/utils.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/bar_charts.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/charts_base.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/custom.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/dashboard.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/datatables/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/datatables/datatables.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/datatables/utils.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/funnel_charts.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/helpers.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/line_charts.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/pie_charts.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/query_modal/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/query_modal/mixin.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/report.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/report_utils_mixin.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/reports.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/targets/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/targets/utils.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/advanced_report_builder/views/targets/views.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/django_advanced_report_builder.egg-info/dependency_links.txt +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/django_advanced_report_builder.egg-info/requires.txt +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/django_advanced_report_builder.egg-info/top_level.txt +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: django-advanced-report-builder
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.3
|
|
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
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Generated by Django 5.0.7 on 2025-05-07 11:13
|
|
2
|
+
|
|
3
|
+
import django.db.models.deletion
|
|
4
|
+
from django.conf import settings
|
|
5
|
+
from django.db import migrations, models
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
('advanced_report_builder', '0014_auto_20240706_2207'),
|
|
12
|
+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
operations = [
|
|
16
|
+
migrations.AddField(
|
|
17
|
+
model_name='report',
|
|
18
|
+
name='user_created',
|
|
19
|
+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='report_user_created_set', to=settings.AUTH_USER_MODEL),
|
|
20
|
+
),
|
|
21
|
+
migrations.AddField(
|
|
22
|
+
model_name='report',
|
|
23
|
+
name='user_updated',
|
|
24
|
+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='report_user_updated_set', to=settings.AUTH_USER_MODEL),
|
|
25
|
+
),
|
|
26
|
+
]
|
|
@@ -3,8 +3,10 @@ from django.db import models
|
|
|
3
3
|
from django.utils.dates import MONTHS
|
|
4
4
|
from django_datatables.columns import DatatableColumn, NoHeadingColumn, ManyToManyColumn
|
|
5
5
|
from django_datatables.model_def import DatatableModel
|
|
6
|
-
from time_stamped_model.models import TimeStampedModel
|
|
7
6
|
from django_modals.model_fields.colour import ColourField
|
|
7
|
+
from time_stamped_model.models import TimeStampedModel
|
|
8
|
+
|
|
9
|
+
from django.conf import settings
|
|
8
10
|
|
|
9
11
|
from advanced_report_builder.globals import (
|
|
10
12
|
DISPLAY_OPTION_CHOICES,
|
|
@@ -131,6 +133,20 @@ class Report(TimeStampedModel):
|
|
|
131
133
|
report_tags = models.ManyToManyField(ReportTag, blank=True)
|
|
132
134
|
notes = models.TextField(null=True, blank=True)
|
|
133
135
|
version = models.PositiveSmallIntegerField(default=0)
|
|
136
|
+
user_created = models.ForeignKey(
|
|
137
|
+
settings.AUTH_USER_MODEL,
|
|
138
|
+
on_delete=models.SET_NULL,
|
|
139
|
+
null=True,
|
|
140
|
+
blank=True,
|
|
141
|
+
related_name='report_user_created_set'
|
|
142
|
+
)
|
|
143
|
+
user_updated = models.ForeignKey(
|
|
144
|
+
settings.AUTH_USER_MODEL,
|
|
145
|
+
on_delete=models.SET_NULL,
|
|
146
|
+
null=True,
|
|
147
|
+
blank=True,
|
|
148
|
+
related_name='report_user_updated_set'
|
|
149
|
+
)
|
|
134
150
|
|
|
135
151
|
def __str__(self):
|
|
136
152
|
return self.name
|
|
@@ -145,6 +161,12 @@ class Report(TimeStampedModel):
|
|
|
145
161
|
return self.name
|
|
146
162
|
|
|
147
163
|
def save(self, *args, **kwargs):
|
|
164
|
+
|
|
165
|
+
current_user = getattr(self, '_current_user', None)
|
|
166
|
+
if current_user is not None and current_user.is_authenticated:
|
|
167
|
+
self.user_updated = current_user
|
|
168
|
+
if self.user_created is None:
|
|
169
|
+
self.user_created = current_user
|
|
148
170
|
is_new = self.pk is None
|
|
149
171
|
if self.version is not None:
|
|
150
172
|
self.version += 1
|
|
@@ -155,7 +177,7 @@ class Report(TimeStampedModel):
|
|
|
155
177
|
if self.instance_type is None:
|
|
156
178
|
self.instance_type = self._meta.label_lower.split('.')[1]
|
|
157
179
|
result = super().save(*args, **kwargs)
|
|
158
|
-
model_report_save.send(sender=self.__class__, instance=self, created=is_new)
|
|
180
|
+
model_report_save.send(sender=self.__class__, instance=self, created=is_new, user=current_user)
|
|
159
181
|
return result
|
|
160
182
|
|
|
161
183
|
def get_base_model(self):
|
|
@@ -221,10 +243,10 @@ class ReportQuery(TimeStampedModel):
|
|
|
221
243
|
order = models.PositiveSmallIntegerField()
|
|
222
244
|
|
|
223
245
|
def save(self, *args, **kwargs):
|
|
224
|
-
is_new = self.pk is None
|
|
225
246
|
self.set_order_field(extra_filters={'report': self.report})
|
|
226
247
|
result = super().save(*args, **kwargs)
|
|
227
|
-
|
|
248
|
+
self.report._current_user = getattr(self, '_current_user', None) # this is to update the users
|
|
249
|
+
self.report.save()
|
|
228
250
|
return result
|
|
229
251
|
|
|
230
252
|
class Meta:
|
|
@@ -423,10 +445,10 @@ class KanbanReportDescription(TimeStampedModel):
|
|
|
423
445
|
order = models.PositiveSmallIntegerField()
|
|
424
446
|
|
|
425
447
|
def save(self, *args, **kwargs):
|
|
426
|
-
is_new = self.pk is None
|
|
427
448
|
self.set_order_field(extra_filters={'kanban_report': self.kanban_report})
|
|
428
449
|
result = super().save(*args, **kwargs)
|
|
429
|
-
|
|
450
|
+
self.kanban_report._current_user = getattr(self, '_current_user', None) # this is to update the users
|
|
451
|
+
self.kanban_report.save()
|
|
430
452
|
return result
|
|
431
453
|
|
|
432
454
|
def get_base_model(self):
|
|
@@ -484,10 +506,10 @@ class KanbanReportLane(TimeStampedModel):
|
|
|
484
506
|
query_data = models.JSONField(null=True, blank=True)
|
|
485
507
|
|
|
486
508
|
def save(self, *args, **kwargs):
|
|
487
|
-
is_new = self.pk is None
|
|
488
509
|
self.set_order_field(extra_filters={'kanban_report': self.kanban_report})
|
|
489
510
|
result = super().save(*args, **kwargs)
|
|
490
|
-
|
|
511
|
+
self.kanban_report._current_user = getattr(self, '_current_user', None) # this is to update the users
|
|
512
|
+
self.kanban_report.save()
|
|
491
513
|
return result
|
|
492
514
|
|
|
493
515
|
def get_base_model(self):
|
|
@@ -46,6 +46,13 @@ class VariableDate:
|
|
|
46
46
|
RANGE_TYPE_NEXT_24_MONTHS = 41
|
|
47
47
|
RANGE_TYPE_LAST_36_MONTHS = 42
|
|
48
48
|
RANGE_TYPE_NEXT_36_MONTHS = 43
|
|
49
|
+
|
|
50
|
+
RANGE_TYPE_2_WEEKS_AGO = 44
|
|
51
|
+
RANGE_TYPE_3_WEEKS_AGO = 45
|
|
52
|
+
RANGE_TYPE_4_WEEKS_AGO = 46
|
|
53
|
+
RANGE_TYPE_5_WEEKS_AGO = 47
|
|
54
|
+
RANGE_TYPE_6_WEEKS_AGO = 48
|
|
55
|
+
|
|
49
56
|
RANGE_TYPE_CHOICES = (
|
|
50
57
|
(RANGE_TYPE_LAST_36_MONTHS, 'Last 36 months'),
|
|
51
58
|
(RANGE_TYPE_LAST_24_MONTHS, 'Last 24 months'),
|
|
@@ -60,6 +67,12 @@ class VariableDate:
|
|
|
60
67
|
(RANGE_TYPE_LAST_28_DAYS, 'Last 28 days'),
|
|
61
68
|
(RANGE_TYPE_LAST_14_DAYS, 'Last 14 days'),
|
|
62
69
|
(RANGE_TYPE_LAST_7_DAYS, 'Last 7 days'),
|
|
70
|
+
(RANGE_TYPE_6_WEEKS_AGO, '6 weeks ago'),
|
|
71
|
+
(RANGE_TYPE_5_WEEKS_AGO, '5 weeks ago'),
|
|
72
|
+
(RANGE_TYPE_4_WEEKS_AGO, '4 weeks ago'),
|
|
73
|
+
(RANGE_TYPE_3_WEEKS_AGO, '3 weeks ago'),
|
|
74
|
+
(RANGE_TYPE_2_WEEKS_AGO, '2 weeks ago'),
|
|
75
|
+
|
|
63
76
|
(RANGE_TYPE_LAST_WEEK, 'Last week'),
|
|
64
77
|
(RANGE_TYPE_YESTERDAY, 'Yesterday'),
|
|
65
78
|
(RANGE_TYPE_TODAY, 'Today'),
|
|
@@ -90,6 +103,7 @@ class VariableDate:
|
|
|
90
103
|
|
|
91
104
|
def get_variable_dates(self, range_type):
|
|
92
105
|
today = date.today()
|
|
106
|
+
start_of_this_week = today - timedelta(days=today.weekday())
|
|
93
107
|
if range_type == self.RANGE_TYPE_TODAY:
|
|
94
108
|
start_date = today
|
|
95
109
|
end_date = today + timedelta(days=1)
|
|
@@ -103,35 +117,55 @@ class VariableDate:
|
|
|
103
117
|
end_date = start_date + timedelta(days=1)
|
|
104
118
|
number_of_days = 1
|
|
105
119
|
elif range_type == self.RANGE_TYPE_THIS_WEEK: # This Week
|
|
106
|
-
start_date =
|
|
120
|
+
start_date = start_of_this_week
|
|
107
121
|
end_date = start_date + timedelta(days=7)
|
|
108
122
|
number_of_days = 7
|
|
109
123
|
elif range_type == self.RANGE_TYPE_NEXT_WEEK: # Next Week
|
|
110
|
-
start_date =
|
|
124
|
+
start_date = start_of_this_week + timedelta(days=7)
|
|
111
125
|
end_date = start_date + timedelta(days=7)
|
|
112
126
|
number_of_days = 7
|
|
113
127
|
elif range_type == self.RANGE_TYPE_LAST_WEEK: # Last Week
|
|
114
|
-
start_date =
|
|
128
|
+
start_date = start_of_this_week - timedelta(days=7)
|
|
129
|
+
end_date = start_date + timedelta(days=7)
|
|
130
|
+
number_of_days = 7
|
|
131
|
+
elif range_type == self.RANGE_TYPE_2_WEEKS_TIME: # 2 Weeks Time
|
|
132
|
+
start_date = start_of_this_week + timedelta(days=14)
|
|
133
|
+
end_date = start_date + timedelta(days=7)
|
|
134
|
+
number_of_days = 7
|
|
135
|
+
elif range_type == self.RANGE_TYPE_2_WEEKS_AGO: # 2 Weeks Ago
|
|
136
|
+
start_date = start_of_this_week - timedelta(days=14)
|
|
137
|
+
end_date = start_date + timedelta(days=7)
|
|
138
|
+
number_of_days = 7
|
|
139
|
+
elif range_type == self.RANGE_TYPE_3_WEEKS_TIME: # 3 Weeks Time
|
|
140
|
+
start_date = start_of_this_week + timedelta(days=21)
|
|
141
|
+
end_date = start_date + timedelta(days=7)
|
|
142
|
+
number_of_days = 7
|
|
143
|
+
elif range_type == self.RANGE_TYPE_3_WEEKS_AGO: # 3 Weeks Ago
|
|
144
|
+
start_date = start_of_this_week - timedelta(days=21)
|
|
145
|
+
end_date = start_date + timedelta(days=7)
|
|
146
|
+
number_of_days = 7
|
|
147
|
+
elif range_type == self.RANGE_TYPE_4_WEEKS_TIME: # 4 Weeks Time
|
|
148
|
+
start_date = start_of_this_week + timedelta(days=28)
|
|
115
149
|
end_date = start_date + timedelta(days=7)
|
|
116
150
|
number_of_days = 7
|
|
117
|
-
elif range_type == self.
|
|
118
|
-
start_date =
|
|
151
|
+
elif range_type == self.RANGE_TYPE_4_WEEKS_AGO: # 4 Weeks Ago
|
|
152
|
+
start_date = start_of_this_week - timedelta(days=28)
|
|
119
153
|
end_date = start_date + timedelta(days=7)
|
|
120
154
|
number_of_days = 7
|
|
121
|
-
elif range_type == self.
|
|
122
|
-
start_date =
|
|
155
|
+
elif range_type == self.RANGE_TYPE_5_WEEKS_TIME: # 5 Weeks Time
|
|
156
|
+
start_date = start_of_this_week + timedelta(days=35)
|
|
123
157
|
end_date = start_date + timedelta(days=7)
|
|
124
158
|
number_of_days = 7
|
|
125
|
-
elif range_type == self.
|
|
126
|
-
start_date =
|
|
159
|
+
elif range_type == self.RANGE_TYPE_5_WEEKS_AGO: # 5 Weeks Ago
|
|
160
|
+
start_date = start_of_this_week - timedelta(days=35)
|
|
127
161
|
end_date = start_date + timedelta(days=7)
|
|
128
162
|
number_of_days = 7
|
|
129
|
-
elif range_type == self.
|
|
130
|
-
start_date =
|
|
163
|
+
elif range_type == self.RANGE_TYPE_6_WEEKS_TIME: # 6 Weeks Time
|
|
164
|
+
start_date = start_of_this_week + timedelta(days=42)
|
|
131
165
|
end_date = start_date + timedelta(days=7)
|
|
132
166
|
number_of_days = 7
|
|
133
|
-
elif range_type == self.
|
|
134
|
-
start_date =
|
|
167
|
+
elif range_type == self.RANGE_TYPE_6_WEEKS_AGO: # 6 Weeks Ago
|
|
168
|
+
start_date = start_of_this_week - timedelta(days=42)
|
|
135
169
|
end_date = start_date + timedelta(days=7)
|
|
136
170
|
number_of_days = 7
|
|
137
171
|
elif range_type == self.RANGE_TYPE_THIS_MONTH: # This Month
|
|
@@ -160,11 +194,7 @@ class VariableDate:
|
|
|
160
194
|
start_date = today
|
|
161
195
|
end_date = start_date + timedelta(days=14)
|
|
162
196
|
number_of_days = 14
|
|
163
|
-
elif range_type == self.RANGE_TYPE_LAST_14_DAYS: #
|
|
164
|
-
start_date = today - timedelta(days=14)
|
|
165
|
-
end_date = today
|
|
166
|
-
number_of_days = 14
|
|
167
|
-
elif range_type == 13: # Last 14 Days
|
|
197
|
+
elif range_type == self.RANGE_TYPE_LAST_14_DAYS: # Last 14 Days
|
|
168
198
|
start_date = today - timedelta(days=14)
|
|
169
199
|
end_date = today
|
|
170
200
|
number_of_days = 14
|
|
@@ -181,9 +181,9 @@ class TableModal(MultiQueryModalMixin, QueryBuilderModalBase):
|
|
|
181
181
|
|
|
182
182
|
def form_valid(self, form):
|
|
183
183
|
org_id = self.object.pk if hasattr(self, 'object') else None
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
184
|
+
instance = form.save(commit=False)
|
|
185
|
+
instance._current_user = self.request.user
|
|
186
|
+
instance.save()
|
|
187
187
|
self.post_save(created=org_id is None, form=form)
|
|
188
188
|
if not self.response_commands:
|
|
189
189
|
self.add_command('reload')
|
|
@@ -261,10 +261,6 @@ class TableFieldForm(ChartBaseFieldForm):
|
|
|
261
261
|
if int(data_attr.get('display_heading', 1)) == 1:
|
|
262
262
|
self.fields['display_heading'].initial = True
|
|
263
263
|
|
|
264
|
-
print('-------==========-')
|
|
265
|
-
print(self.django_field)
|
|
266
|
-
print(self.col_type_override)
|
|
267
|
-
|
|
268
264
|
has_existing_annotations = self.col_type_override is not None and self.col_type_override.annotations is not None
|
|
269
265
|
|
|
270
266
|
if self.django_field is not None and isinstance(self.django_field, DATE_FIELDS):
|
|
@@ -514,7 +514,12 @@ class KanbanModal(ModelFormModal):
|
|
|
514
514
|
o.save()
|
|
515
515
|
return self.command_response('')
|
|
516
516
|
|
|
517
|
-
def
|
|
517
|
+
def form_valid(self, form):
|
|
518
|
+
org_id = self.object.pk if hasattr(self, 'object') else None
|
|
519
|
+
created=org_id is None
|
|
520
|
+
instance = form.save(commit=False)
|
|
521
|
+
instance._current_user = self.request.user
|
|
522
|
+
instance.save()
|
|
518
523
|
if created:
|
|
519
524
|
self.modal_redirect(
|
|
520
525
|
self.request.resolver_match.view_name,
|
|
@@ -524,7 +529,10 @@ class KanbanModal(ModelFormModal):
|
|
|
524
529
|
url_name = getattr(settings, 'REPORT_BUILDER_DETAIL_URL_NAME', '')
|
|
525
530
|
if url_name and self.slug.get('new'):
|
|
526
531
|
url = reverse(url_name, kwargs={'slug': self.object.slug})
|
|
527
|
-
self.
|
|
532
|
+
self.add_command('redirect', url=url)
|
|
533
|
+
if not self.response_commands:
|
|
534
|
+
self.add_command('reload')
|
|
535
|
+
return self.command_response()
|
|
528
536
|
|
|
529
537
|
|
|
530
538
|
class KanbanLaneModal(QueryBuilderModalBase):
|
|
@@ -762,7 +770,9 @@ class KanbanLaneModal(QueryBuilderModalBase):
|
|
|
762
770
|
return JsonResponse({'results': descriptions})
|
|
763
771
|
|
|
764
772
|
def form_valid(self, form):
|
|
765
|
-
form.save()
|
|
773
|
+
instance = form.save(commit=False)
|
|
774
|
+
instance._current_user = self.request.user
|
|
775
|
+
instance.save()
|
|
766
776
|
return self.command_response('reload')
|
|
767
777
|
|
|
768
778
|
|
|
@@ -781,6 +791,7 @@ class KanbanLaneDuplicateModal(Modal):
|
|
|
781
791
|
kanban_report_lane.pk = None
|
|
782
792
|
kanban_report_lane.name = f'Copy of {kanban_report_lane.name}'
|
|
783
793
|
kanban_report_lane.order = None
|
|
794
|
+
kanban_report_lane._current_user = self.request.user
|
|
784
795
|
kanban_report_lane.save()
|
|
785
796
|
return self.command_response('reload')
|
|
786
797
|
|
|
@@ -818,7 +829,9 @@ class KanbanDescriptionModal(DataMergeUtils, QueryBuilderModalBase):
|
|
|
818
829
|
return self.command_response(f'build_data_merge_menu_{field_auto_id}', data=json.dumps(menus))
|
|
819
830
|
|
|
820
831
|
def form_valid(self, form):
|
|
821
|
-
form.save()
|
|
832
|
+
instance = form.save(commit=False)
|
|
833
|
+
instance._current_user = self.request.user
|
|
834
|
+
instance.save()
|
|
822
835
|
return self.command_response('reload')
|
|
823
836
|
|
|
824
837
|
|
|
@@ -836,5 +849,6 @@ class KanbanDescriptionDuplicateModal(Modal):
|
|
|
836
849
|
kanban_report_description = get_object_or_404(KanbanReportDescription, id=self.slug['pk'])
|
|
837
850
|
kanban_report_description.pk = None
|
|
838
851
|
kanban_report_description.name = f'Copy of {kanban_report_description.name}'
|
|
852
|
+
kanban_report_description._current_user = self.request.user
|
|
839
853
|
kanban_report_description.save()
|
|
840
854
|
return self.command_response('reload')
|
|
@@ -195,6 +195,7 @@ class QueryBuilderModalBaseMixin(ReportBuilderFieldUtils):
|
|
|
195
195
|
form.fields[field_name].widget.select_data = _fields
|
|
196
196
|
|
|
197
197
|
|
|
198
|
+
|
|
198
199
|
class QueryBuilderModalBase(QueryBuilderModalBaseMixin, ModelFormModal):
|
|
199
200
|
size = 'xl'
|
|
200
201
|
|
|
@@ -227,7 +228,10 @@ class QueryBuilderModalBase(QueryBuilderModalBaseMixin, ModelFormModal):
|
|
|
227
228
|
|
|
228
229
|
def form_valid(self, form):
|
|
229
230
|
org_id = self.object.id if hasattr(self, 'object') else None
|
|
230
|
-
chart_report = form.save()
|
|
231
|
+
chart_report = form.save(commit=False)
|
|
232
|
+
chart_report._current_user = self.request.user
|
|
233
|
+
chart_report.save()
|
|
234
|
+
|
|
231
235
|
self.post_save(created=org_id is None, form=form)
|
|
232
236
|
if not self.response_commands:
|
|
233
237
|
url_name = getattr(settings, 'REPORT_BUILDER_DETAIL_URL_NAME', '')
|
|
@@ -196,6 +196,16 @@ class QueryModal(QueryBuilderModalBaseMixin, ModelFormModal):
|
|
|
196
196
|
o.save()
|
|
197
197
|
return self.command_response('')
|
|
198
198
|
|
|
199
|
+
def form_valid(self, form):
|
|
200
|
+
org_id = self.object.pk if hasattr(self, 'object') else None
|
|
201
|
+
instance = form.save(commit=False)
|
|
202
|
+
instance._current_user = self.request.user
|
|
203
|
+
instance.save()
|
|
204
|
+
self.post_save(created=org_id is None, form=form)
|
|
205
|
+
if not self.response_commands:
|
|
206
|
+
self.add_command('reload')
|
|
207
|
+
return self.command_response()
|
|
208
|
+
|
|
199
209
|
|
|
200
210
|
class OrderByFieldForm(ModelCrispyForm):
|
|
201
211
|
class Meta:
|
|
@@ -366,22 +366,6 @@ class SingleValueModal(MultiQueryModalMixin, QueryBuilderModalBase):
|
|
|
366
366
|
'values': {SingleValueReport.SINGLE_VALUE_TYPE_PERCENT: 'show'},
|
|
367
367
|
'default': 'hide',
|
|
368
368
|
},
|
|
369
|
-
{
|
|
370
|
-
'selector': '.btn-query-edit',
|
|
371
|
-
'values': {
|
|
372
|
-
SingleValueReport.SINGLE_VALUE_TYPE_PERCENT: 'hide',
|
|
373
|
-
SingleValueReport.SINGLE_VALUE_TYPE_PERCENT_FROM_COUNT: 'hide',
|
|
374
|
-
},
|
|
375
|
-
'default': 'show',
|
|
376
|
-
},
|
|
377
|
-
{
|
|
378
|
-
'selector': '.btn-query-numerator-edit',
|
|
379
|
-
'values': {
|
|
380
|
-
SingleValueReport.SINGLE_VALUE_TYPE_PERCENT: 'show',
|
|
381
|
-
SingleValueReport.SINGLE_VALUE_TYPE_PERCENT_FROM_COUNT: 'show',
|
|
382
|
-
},
|
|
383
|
-
'default': 'hide',
|
|
384
|
-
},
|
|
385
369
|
{
|
|
386
370
|
'selector': 'label[for=id_field]',
|
|
387
371
|
'values': {
|
|
@@ -542,29 +526,43 @@ class SingleValueModal(MultiQueryModalMixin, QueryBuilderModalBase):
|
|
|
542
526
|
)
|
|
543
527
|
return self.command_response('report_fields', data=json.dumps({'fields': fields, 'tables': tables}))
|
|
544
528
|
|
|
545
|
-
def
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
529
|
+
def button_add_query(self, **_kwargs):
|
|
530
|
+
single_value_type = _kwargs['single_value_type']
|
|
531
|
+
if (single_value_type == '' or
|
|
532
|
+
int(single_value_type) not in [SingleValueReport.SINGLE_VALUE_TYPE_COUNT,
|
|
533
|
+
SingleValueReport.SINGLE_VALUE_TYPE_PERCENT_FROM_COUNT, ]):
|
|
534
|
+
return super().button_add_query(**_kwargs)
|
|
535
|
+
else:
|
|
536
|
+
report_type = self.get_report_type(**_kwargs)
|
|
537
|
+
show_order_by = 1 if self.show_order_by else 0
|
|
538
|
+
url = reverse(
|
|
539
|
+
'advanced_report_builder:single_value_numerator_modal',
|
|
540
|
+
kwargs={'slug': f'report_id-{self.object.id}-report_type-{report_type}-show_order_by-{show_order_by}'},
|
|
556
541
|
)
|
|
557
|
-
|
|
558
|
-
|
|
542
|
+
return self.command_response('show_modal', modal=url)
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
def button_edit_query(self, **_kwargs):
|
|
546
|
+
single_value_type = _kwargs['single_value_type']
|
|
547
|
+
if (single_value_type == '' or
|
|
548
|
+
int(single_value_type) not in [SingleValueReport.SINGLE_VALUE_TYPE_COUNT,
|
|
549
|
+
SingleValueReport.SINGLE_VALUE_TYPE_PERCENT_FROM_COUNT,]):
|
|
550
|
+
return super().button_edit_query(**_kwargs)
|
|
551
|
+
else:
|
|
552
|
+
query_id = _kwargs['query_id'][1:]
|
|
553
|
+
report_type = self.get_report_type(**_kwargs)
|
|
554
|
+
url = reverse(
|
|
555
|
+
'advanced_report_builder:single_value_numerator_modal',
|
|
556
|
+
kwargs={'slug': f'pk-{query_id}-report_type-{report_type}'},
|
|
557
|
+
)
|
|
558
|
+
return self.command_response('show_modal', modal=url)
|
|
559
559
|
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
)
|
|
567
|
-
return self.command_response('show_modal', modal=url)
|
|
560
|
+
|
|
561
|
+
def form_valid(self, form):
|
|
562
|
+
instance = form.save(commit=False)
|
|
563
|
+
instance._current_user = self.request.user
|
|
564
|
+
instance.save()
|
|
565
|
+
return self.command_response('reload')
|
|
568
566
|
|
|
569
567
|
|
|
570
568
|
class SingleValueShowBreakdownModal(TableUtilsMixin, Modal):
|
|
@@ -668,3 +666,14 @@ class QueryNumeratorModal(QueryBuilderModalBaseMixin, ModelFormModal):
|
|
|
668
666
|
|
|
669
667
|
def get_report_type(self):
|
|
670
668
|
return self.slug['report_type']
|
|
669
|
+
|
|
670
|
+
def form_valid(self, form):
|
|
671
|
+
org_id = self.object.pk if hasattr(self, 'object') else None
|
|
672
|
+
instance = form.save(commit=False)
|
|
673
|
+
instance._current_user = self.request.user
|
|
674
|
+
instance.save()
|
|
675
|
+
self.post_save(created=org_id is None, form=form)
|
|
676
|
+
if not self.response_commands:
|
|
677
|
+
self.add_command('reload')
|
|
678
|
+
return self.command_response()
|
|
679
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: django-advanced-report-builder
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.3
|
|
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
|
|
@@ -41,6 +41,7 @@ advanced_report_builder/migrations/0011_auto_20230620_1449.py
|
|
|
41
41
|
advanced_report_builder/migrations/0012_auto_20230718_1642.py
|
|
42
42
|
advanced_report_builder/migrations/0013_reportqueryorder.py
|
|
43
43
|
advanced_report_builder/migrations/0014_auto_20240706_2207.py
|
|
44
|
+
advanced_report_builder/migrations/0015_report_user_created_report_user_updated.py
|
|
44
45
|
advanced_report_builder/migrations/__init__.py
|
|
45
46
|
advanced_report_builder/static/.DS_Store
|
|
46
47
|
advanced_report_builder/static/advanced_report_builder/.DS_Store
|
|
@@ -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.9.
|
|
8
|
+
version="0.9.3",
|
|
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
|