django-advanced-report-builder 0.9.1__tar.gz → 0.9.2__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.2}/PKG-INFO +1 -1
- django-advanced-report-builder-0.9.2/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.2}/advanced_report_builder/models.py +28 -7
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/variable_date.py +48 -18
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/datatables/modal.py +3 -7
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/kanban.py +18 -4
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/modals_base.py +5 -1
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/query_modal/modal.py +13 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/single_values.py +46 -37
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2/django_advanced_report_builder.egg-info}/PKG-INFO +1 -1
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/django_advanced_report_builder.egg-info/SOURCES.txt +1 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/setup.py +1 -1
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/LICENSE +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/MANIFEST.in +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/README.md +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/admin.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/apps.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/column_types.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/columns.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/customise.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/data_merge/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/data_merge/utils.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/data_merge/widget.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/duplicate.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/exceptions.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/field_types.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/field_utils.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/filter_query.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/generate_series.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/globals.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/includes.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0001_initial.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0002_auto_20220209_1657.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0003_auto_20220215_1219.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0004_customreport.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0005_auto_20220303_0958.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0006_auto_20220310_1147.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0007_auto_20220322_1939.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0008_auto_20220404_1144.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0009_auto_20230428_1554.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0010_auto_20230428_2033.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0011_auto_20230620_1449.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0012_auto_20230718_1642.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0013_reportqueryorder.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/0014_auto_20240706_2207.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/migrations/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/report_builder.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/signals.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/static/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/static/advanced_report_builder/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/advanced_report_builder/toggle.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/urls.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/utils.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/bar_charts.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/charts_base.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/custom.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/dashboard.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/datatables/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/datatables/datatables.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/datatables/utils.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/funnel_charts.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/helpers.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/line_charts.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/pie_charts.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/query_modal/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/query_modal/mixin.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/report.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/report_utils_mixin.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/reports.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/targets/__init__.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/targets/utils.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/advanced_report_builder/views/targets/views.py +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/django_advanced_report_builder.egg-info/dependency_links.txt +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/django_advanced_report_builder.egg-info/requires.txt +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/django_advanced_report_builder.egg-info/top_level.txt +0 -0
- {django-advanced-report-builder-0.9.1 → django-advanced-report-builder-0.9.2}/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.2
|
|
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
|
+
]
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from django.contrib.auth import get_user_model
|
|
1
2
|
from django.contrib.contenttypes.models import ContentType
|
|
2
3
|
from django.db import models
|
|
3
4
|
from django.utils.dates import MONTHS
|
|
@@ -131,6 +132,20 @@ class Report(TimeStampedModel):
|
|
|
131
132
|
report_tags = models.ManyToManyField(ReportTag, blank=True)
|
|
132
133
|
notes = models.TextField(null=True, blank=True)
|
|
133
134
|
version = models.PositiveSmallIntegerField(default=0)
|
|
135
|
+
user_created = models.ForeignKey(
|
|
136
|
+
get_user_model(),
|
|
137
|
+
on_delete=models.SET_NULL,
|
|
138
|
+
null=True,
|
|
139
|
+
blank=True,
|
|
140
|
+
related_name='report_user_created_set'
|
|
141
|
+
)
|
|
142
|
+
user_updated = models.ForeignKey(
|
|
143
|
+
get_user_model(),
|
|
144
|
+
on_delete=models.SET_NULL,
|
|
145
|
+
null=True,
|
|
146
|
+
blank=True,
|
|
147
|
+
related_name='report_user_updated_set'
|
|
148
|
+
)
|
|
134
149
|
|
|
135
150
|
def __str__(self):
|
|
136
151
|
return self.name
|
|
@@ -145,6 +160,12 @@ class Report(TimeStampedModel):
|
|
|
145
160
|
return self.name
|
|
146
161
|
|
|
147
162
|
def save(self, *args, **kwargs):
|
|
163
|
+
|
|
164
|
+
current_user = getattr(self, '_current_user', None)
|
|
165
|
+
if current_user is not None and current_user.is_authenticated:
|
|
166
|
+
self.user_updated = current_user
|
|
167
|
+
if self.user_created is None:
|
|
168
|
+
self.user_created = current_user
|
|
148
169
|
is_new = self.pk is None
|
|
149
170
|
if self.version is not None:
|
|
150
171
|
self.version += 1
|
|
@@ -155,7 +176,7 @@ class Report(TimeStampedModel):
|
|
|
155
176
|
if self.instance_type is None:
|
|
156
177
|
self.instance_type = self._meta.label_lower.split('.')[1]
|
|
157
178
|
result = super().save(*args, **kwargs)
|
|
158
|
-
model_report_save.send(sender=self.__class__, instance=self, created=is_new)
|
|
179
|
+
model_report_save.send(sender=self.__class__, instance=self, created=is_new, user=current_user)
|
|
159
180
|
return result
|
|
160
181
|
|
|
161
182
|
def get_base_model(self):
|
|
@@ -221,10 +242,10 @@ class ReportQuery(TimeStampedModel):
|
|
|
221
242
|
order = models.PositiveSmallIntegerField()
|
|
222
243
|
|
|
223
244
|
def save(self, *args, **kwargs):
|
|
224
|
-
is_new = self.pk is None
|
|
225
245
|
self.set_order_field(extra_filters={'report': self.report})
|
|
226
246
|
result = super().save(*args, **kwargs)
|
|
227
|
-
|
|
247
|
+
self.report._current_user = getattr(self, '_current_user', None) # this is to update the users
|
|
248
|
+
self.report.save()
|
|
228
249
|
return result
|
|
229
250
|
|
|
230
251
|
class Meta:
|
|
@@ -423,10 +444,10 @@ class KanbanReportDescription(TimeStampedModel):
|
|
|
423
444
|
order = models.PositiveSmallIntegerField()
|
|
424
445
|
|
|
425
446
|
def save(self, *args, **kwargs):
|
|
426
|
-
is_new = self.pk is None
|
|
427
447
|
self.set_order_field(extra_filters={'kanban_report': self.kanban_report})
|
|
428
448
|
result = super().save(*args, **kwargs)
|
|
429
|
-
|
|
449
|
+
self.kanban_report._current_user = getattr(self, '_current_user', None) # this is to update the users
|
|
450
|
+
self.kanban_report.save()
|
|
430
451
|
return result
|
|
431
452
|
|
|
432
453
|
def get_base_model(self):
|
|
@@ -484,10 +505,10 @@ class KanbanReportLane(TimeStampedModel):
|
|
|
484
505
|
query_data = models.JSONField(null=True, blank=True)
|
|
485
506
|
|
|
486
507
|
def save(self, *args, **kwargs):
|
|
487
|
-
is_new = self.pk is None
|
|
488
508
|
self.set_order_field(extra_filters={'kanban_report': self.kanban_report})
|
|
489
509
|
result = super().save(*args, **kwargs)
|
|
490
|
-
|
|
510
|
+
self.kanban_report._current_user = getattr(self, '_current_user', None) # this is to update the users
|
|
511
|
+
self.kanban_report.save()
|
|
491
512
|
return result
|
|
492
513
|
|
|
493
514
|
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,19 @@ 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
|
+
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
199
212
|
|
|
200
213
|
class OrderByFieldForm(ModelCrispyForm):
|
|
201
214
|
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.2
|
|
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.2",
|
|
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
|