django-advanced-report-builder 0.9.3__tar.gz → 0.9.5__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.3/django_advanced_report_builder.egg-info → django_advanced_report_builder-0.9.5}/PKG-INFO +17 -2
- django_advanced_report_builder-0.9.5/advanced_report_builder/.ruff_cache/.gitignore +2 -0
- django_advanced_report_builder-0.9.5/advanced_report_builder/.ruff_cache/0.11.9/16555798982502606642 +0 -0
- django_advanced_report_builder-0.9.5/advanced_report_builder/.ruff_cache/CACHEDIR.TAG +1 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/admin.py +12 -11
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/column_types.py +2 -2
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/columns.py +13 -15
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/data_merge/utils.py +2 -5
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/duplicate.py +6 -5
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/field_types.py +2 -6
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/field_utils.py +4 -13
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/filter_query.py +6 -12
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/globals.py +3 -4
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/models.py +10 -12
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/signals.py +1 -1
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/urls.py +14 -14
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/variable_date.py +2 -3
- django_advanced_report_builder-0.9.5/advanced_report_builder/views/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/bar_charts.py +16 -16
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/charts_base.py +7 -7
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/custom.py +2 -3
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/dashboard.py +4 -4
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/datatables/datatables.py +3 -7
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/datatables/modal.py +79 -76
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/datatables/utils.py +69 -60
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/funnel_charts.py +6 -6
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/helpers.py +1 -1
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/kanban.py +39 -38
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/line_charts.py +12 -12
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/modals_base.py +1 -5
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/pie_charts.py +6 -6
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/query_modal/mixin.py +2 -2
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/query_modal/modal.py +5 -8
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/report_utils_mixin.py +33 -28
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/reports.py +4 -5
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/single_values.py +15 -16
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/targets/views.py +1 -1
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5/django_advanced_report_builder.egg-info}/PKG-INFO +17 -2
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/django_advanced_report_builder.egg-info/SOURCES.txt +3 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/setup.py +1 -1
- django-advanced-report-builder-0.9.3/advanced_report_builder/views/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/LICENSE +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/MANIFEST.in +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/README.md +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/__init__.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/apps.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/customise.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/data_merge/__init__.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/data_merge/widget.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/exceptions.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/generate_series.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/includes.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0001_initial.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0002_auto_20220209_1657.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0003_auto_20220215_1219.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0004_customreport.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0005_auto_20220303_0958.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0006_auto_20220310_1147.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0007_auto_20220322_1939.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0008_auto_20220404_1144.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0009_auto_20230428_1554.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0010_auto_20230428_2033.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0011_auto_20230620_1449.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0012_auto_20230718_1642.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0013_reportqueryorder.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0014_auto_20240706_2207.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/0015_report_user_created_report_user_updated.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/migrations/__init__.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/report_builder.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.esm.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.min.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chartjs-adapter-moment.min.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chartjs-plugin-datalabels.min.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chunks/helpers.segment.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/chart-js/js/helpers.esm.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/d3/js/d3.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/d3/js/d3.min.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/d3-funnel/js/d3-funnel.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/d3-funnel/js/d3-funnel.min.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/dashboard/js/dashboard.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/dot/js/.gitignore +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/dot/js/.travis.yml +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/dot/js/LICENSE-DOT.txt +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/dot/js/README.md +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/dot/js/bin/dot-packer +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/dot/js/bower.json +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/dot/js/doT.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/dot/js/doT.min.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/dot/js/doU.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/dot/js/index.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/dot/js/package.json +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/fullcalendar/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/jquery_extendext/js/jQuery.extendext.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/jquery_extendext/js/jQuery.extendext.min.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/css/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.dark.css +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.dark.min.css +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.default.css +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.default.min.css +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ar.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.az.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.bg.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.cs.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.da.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.de.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.el.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.en.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.es.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.fa-IR.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.fr.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.he.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.it.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.nl.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.no.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pl.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pt-BR.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pt-PT.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ro.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ru.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.sq.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.tr.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ua.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.zh-CN.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/js/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/js/plugins/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/js/plugins/currency/plugin.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.min.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.standalone.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.standalone.min.js +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/.DS_Store +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/dark.scss +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/default.scss +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_bt-checkbox.scss +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_bt-tooltip-errors.scss +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_filter-description.scss +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_invert.scss +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_sortable.scss +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/bt-tooltip-errors.scss +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/filter-description.scss +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/invert.scss +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/sortable.scss +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/charts/bar/middle.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/charts/funnel/middle.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/charts/funnel/report.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/charts/line/middle.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/charts/modal.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/charts/modal_field.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/charts/pie/middle.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/charts/report.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/data_merge/data_merge.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/datatables/fields/modal.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/datatables/fields/single_query_builder.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/datatables/modal.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/datatables/onclick_menu.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/datatables/report.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/datatables/select_pivot.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/kanban/description_modal.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/kanban/middle.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/kanban/modal.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/kanban/report.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/query_builder.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/query_modal.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/select_column.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/single_values/middle.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/single_values/modal.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/templates/advanced_report_builder/single_values/report.html +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/toggle.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/utils.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/__init__.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/datatables/__init__.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/query_modal/__init__.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/report.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/targets/__init__.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/advanced_report_builder/views/targets/utils.py +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/django_advanced_report_builder.egg-info/dependency_links.txt +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/django_advanced_report_builder.egg-info/requires.txt +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/django_advanced_report_builder.egg-info/top_level.txt +0 -0
- {django-advanced-report-builder-0.9.3 → django_advanced_report_builder-0.9.5}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: django-advanced-report-builder
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.5
|
|
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
|
|
@@ -10,6 +10,21 @@ Classifier: Operating System :: OS Independent
|
|
|
10
10
|
Requires-Python: >=3.6
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
12
|
License-File: LICENSE
|
|
13
|
+
Requires-Dist: Django>=3.2
|
|
14
|
+
Requires-Dist: django-filtered-datatables>=0.0.21
|
|
15
|
+
Requires-Dist: django-ajax-helpers>=0.0.20
|
|
16
|
+
Requires-Dist: django-nested-modals>=0.0.21
|
|
17
|
+
Requires-Dist: time-stamped-model>=0.2.3
|
|
18
|
+
Requires-Dist: date-offset>=0.0.2
|
|
19
|
+
Dynamic: author
|
|
20
|
+
Dynamic: classifier
|
|
21
|
+
Dynamic: description
|
|
22
|
+
Dynamic: description-content-type
|
|
23
|
+
Dynamic: home-page
|
|
24
|
+
Dynamic: license-file
|
|
25
|
+
Dynamic: requires-dist
|
|
26
|
+
Dynamic: requires-python
|
|
27
|
+
Dynamic: summary
|
|
13
28
|
|
|
14
29
|
[](https://badge.fury.io/py/django-advanced-report-builder)
|
|
15
30
|
|
django_advanced_report_builder-0.9.5/advanced_report_builder/.ruff_cache/0.11.9/16555798982502606642
ADDED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Signature: 8a477f597d28d172789f06886806bc55
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
from django.contrib import admin
|
|
2
|
+
|
|
2
3
|
from advanced_report_builder.models import (
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
TableReport,
|
|
6
|
-
ReportQuery,
|
|
7
|
-
SingleValueReport,
|
|
4
|
+
BarChartReport,
|
|
5
|
+
CustomReport,
|
|
8
6
|
Dashboard,
|
|
9
7
|
DashboardReport,
|
|
10
|
-
BarChartReport,
|
|
11
|
-
LineChartReport,
|
|
12
|
-
PieChartReport,
|
|
13
8
|
FunnelChartReport,
|
|
14
|
-
ReportTag,
|
|
15
9
|
KanbanReport,
|
|
10
|
+
KanbanReportDescription,
|
|
16
11
|
KanbanReportLane,
|
|
12
|
+
LineChartReport,
|
|
13
|
+
PieChartReport,
|
|
14
|
+
Report,
|
|
15
|
+
ReportQuery,
|
|
16
|
+
ReportTag,
|
|
17
|
+
ReportType,
|
|
18
|
+
SingleValueReport,
|
|
19
|
+
TableReport,
|
|
17
20
|
Target,
|
|
18
|
-
CustomReport,
|
|
19
|
-
KanbanReportDescription,
|
|
20
21
|
)
|
|
21
22
|
|
|
22
23
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from django.db import models
|
|
2
|
-
from django_datatables.columns import CurrencyColumn, CurrencyPenceColumn
|
|
2
|
+
from django_datatables.columns import ColumnLink, CurrencyColumn, CurrencyPenceColumn
|
|
3
3
|
|
|
4
4
|
from advanced_report_builder.columns import (
|
|
5
5
|
ColourColumn,
|
|
6
|
-
ReverseForeignKeyStrColumn,
|
|
7
6
|
ReverseForeignKeyBoolColumn,
|
|
8
7
|
ReverseForeignKeyChoiceColumn,
|
|
9
8
|
ReverseForeignKeyDateColumn,
|
|
9
|
+
ReverseForeignKeyStrColumn,
|
|
10
10
|
)
|
|
11
11
|
|
|
12
12
|
NUMBER_FIELDS = (
|
|
@@ -1,31 +1,29 @@
|
|
|
1
1
|
from django.contrib.humanize.templatetags.humanize import intcomma
|
|
2
|
-
from django.contrib.postgres.aggregates import
|
|
3
|
-
from django.db.models import Count,
|
|
2
|
+
from django.contrib.postgres.aggregates import ArrayAgg, BoolAnd, BoolOr, StringAgg
|
|
3
|
+
from django.db.models import BooleanField, Count, Max, Min
|
|
4
4
|
from django.db.models.functions import Cast
|
|
5
5
|
from django_datatables.columns import (
|
|
6
6
|
ColumnBase,
|
|
7
|
-
CurrencyPenceColumn,
|
|
8
|
-
CurrencyColumn,
|
|
9
|
-
NoHeadingColumn,
|
|
10
7
|
ColumnLink,
|
|
8
|
+
CurrencyColumn,
|
|
9
|
+
CurrencyPenceColumn,
|
|
11
10
|
ManyToManyColumn,
|
|
11
|
+
NoHeadingColumn,
|
|
12
12
|
)
|
|
13
|
-
from django_datatables.helpers import
|
|
13
|
+
from django_datatables.helpers import DUMMY_ID, get_url, render_replace
|
|
14
14
|
from django_datatables.model_def import DatatableModel
|
|
15
15
|
|
|
16
16
|
from advanced_report_builder.globals import (
|
|
17
|
-
REVERSE_FOREIGN_KEY_DELIMITER_COMMA,
|
|
18
|
-
REVERSE_FOREIGN_KEY_DELIMITER_VALUES,
|
|
19
17
|
DATE_FORMAT_TYPE_DD_MM_YY_SLASH,
|
|
20
18
|
DATE_FORMAT_TYPES_DJANGO_FORMAT,
|
|
19
|
+
REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_AND,
|
|
20
|
+
REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_ARRAY,
|
|
21
|
+
REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_XOR,
|
|
21
22
|
REVERSE_FOREIGN_KEY_ANNOTATION_DATE_ARRAY,
|
|
22
23
|
REVERSE_FOREIGN_KEY_ANNOTATION_DATE_MAX,
|
|
23
24
|
REVERSE_FOREIGN_KEY_ANNOTATION_DATE_MIN,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_XOR,
|
|
27
|
-
REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_AND,
|
|
28
|
-
REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_ARRAY,
|
|
25
|
+
REVERSE_FOREIGN_KEY_DELIMITER_COMMA,
|
|
26
|
+
REVERSE_FOREIGN_KEY_DELIMITER_VALUES,
|
|
29
27
|
)
|
|
30
28
|
|
|
31
29
|
|
|
@@ -70,7 +68,7 @@ class ReportBuilderNumberColumn(ColumnBase):
|
|
|
70
68
|
class ReportBuilderCurrencyPenceColumn(CurrencyPenceColumn):
|
|
71
69
|
def row_result(self, data, _page_data):
|
|
72
70
|
try:
|
|
73
|
-
return intcomma('{
|
|
71
|
+
return intcomma(f'{data[self.field] / 100.0:.2f}')
|
|
74
72
|
except (KeyError, TypeError):
|
|
75
73
|
return '0.00'
|
|
76
74
|
|
|
@@ -78,7 +76,7 @@ class ReportBuilderCurrencyPenceColumn(CurrencyPenceColumn):
|
|
|
78
76
|
class ReportBuilderCurrencyColumn(CurrencyColumn):
|
|
79
77
|
def row_result(self, data, _page_data):
|
|
80
78
|
try:
|
|
81
|
-
return intcomma('{
|
|
79
|
+
return intcomma(f'{data[self.field]:.2f}')
|
|
82
80
|
except (KeyError, TypeError):
|
|
83
81
|
return '0.00'
|
|
84
82
|
|
|
@@ -44,10 +44,7 @@ class DataMergeUtils(ReportBuilderFieldUtils):
|
|
|
44
44
|
title = include.get('title')
|
|
45
45
|
if title is None or title == '':
|
|
46
46
|
title = new_report_builder_class.title
|
|
47
|
-
if menus is not None
|
|
48
|
-
menu = []
|
|
49
|
-
else:
|
|
50
|
-
menu = None
|
|
47
|
+
menu = [] if menus is not None else None
|
|
51
48
|
self.get_menu_fields(
|
|
52
49
|
base_model=new_model,
|
|
53
50
|
report_builder_class=new_report_builder_class,
|
|
@@ -101,7 +98,7 @@ class DataMergeUtils(ReportBuilderFieldUtils):
|
|
|
101
98
|
report_builder_class=report_builder_class,
|
|
102
99
|
table=table,
|
|
103
100
|
)
|
|
104
|
-
if django_field is not None or isinstance(col_type_override.field,
|
|
101
|
+
if django_field is not None or isinstance(col_type_override.field, list | tuple):
|
|
105
102
|
if field not in columns and f'.{field}' not in columns:
|
|
106
103
|
columns.add('.' + field)
|
|
107
104
|
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
from copy import deepcopy
|
|
2
2
|
|
|
3
|
+
from django.shortcuts import get_object_or_404
|
|
4
|
+
|
|
3
5
|
from advanced_report_builder.models import (
|
|
4
|
-
TableReport,
|
|
5
|
-
SingleValueReport,
|
|
6
6
|
BarChartReport,
|
|
7
|
-
|
|
7
|
+
CustomReport,
|
|
8
8
|
FunnelChartReport,
|
|
9
9
|
KanbanReport,
|
|
10
10
|
LineChartReport,
|
|
11
|
-
|
|
11
|
+
PieChartReport,
|
|
12
|
+
SingleValueReport,
|
|
13
|
+
TableReport,
|
|
12
14
|
)
|
|
13
|
-
from django.shortcuts import get_object_or_404
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class DuplicateReport:
|
|
@@ -76,7 +76,7 @@ class FieldTypes:
|
|
|
76
76
|
'operators': self.get_operator(self.FIELD_TYPE_MULTIPLE_CHOICE),
|
|
77
77
|
}
|
|
78
78
|
)
|
|
79
|
-
elif isinstance(django_field,
|
|
79
|
+
elif isinstance(django_field, models.CharField | models.TextField | models.EmailField):
|
|
80
80
|
query_builder_filters.append(
|
|
81
81
|
{
|
|
82
82
|
'id': column_id,
|
|
@@ -89,11 +89,7 @@ class FieldTypes:
|
|
|
89
89
|
)
|
|
90
90
|
elif isinstance(
|
|
91
91
|
django_field,
|
|
92
|
-
|
|
93
|
-
models.IntegerField,
|
|
94
|
-
models.PositiveSmallIntegerField,
|
|
95
|
-
models.PositiveIntegerField,
|
|
96
|
-
),
|
|
92
|
+
models.IntegerField | models.PositiveSmallIntegerField | models.PositiveIntegerField,
|
|
97
93
|
):
|
|
98
94
|
if django_field.choices is None:
|
|
99
95
|
query_builder_filter = {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
from django.apps import apps
|
|
1
2
|
from django_datatables.columns import ColumnNameError
|
|
2
3
|
from django_datatables.datatables import ColumnInitialisor
|
|
3
|
-
from django.apps import apps
|
|
4
4
|
|
|
5
5
|
from advanced_report_builder.column_types import (
|
|
6
|
-
NUMBER_FIELDS,
|
|
7
|
-
LINK_COLUMNS,
|
|
8
6
|
COLOUR_COLUMNS,
|
|
9
7
|
DATE_FIELDS,
|
|
8
|
+
LINK_COLUMNS,
|
|
9
|
+
NUMBER_FIELDS,
|
|
10
10
|
)
|
|
11
11
|
from advanced_report_builder.exceptions import ReportError
|
|
12
12
|
from advanced_report_builder.utils import get_report_builder_class
|
|
@@ -111,16 +111,7 @@ class ReportBuilderFieldUtils:
|
|
|
111
111
|
selected_field_id=selected_field_value,
|
|
112
112
|
for_select2=for_select2,
|
|
113
113
|
)
|
|
114
|
-
elif field_type == 'order':
|
|
115
|
-
self._get_fields(
|
|
116
|
-
base_model=base_model,
|
|
117
|
-
fields=fields_values,
|
|
118
|
-
report_builder_class=report_builder_class,
|
|
119
|
-
selected_field_id=selected_field_value,
|
|
120
|
-
for_select2=for_select2,
|
|
121
|
-
show_order_by_fields=True,
|
|
122
|
-
)
|
|
123
|
-
elif field_type == 'django_order':
|
|
114
|
+
elif field_type == 'order' or field_type == 'django_order':
|
|
124
115
|
self._get_fields(
|
|
125
116
|
base_model=base_model,
|
|
126
117
|
fields=fields_values,
|
|
@@ -79,10 +79,7 @@ class FilterQueryMixin:
|
|
|
79
79
|
:param display_condition:
|
|
80
80
|
:return:
|
|
81
81
|
"""
|
|
82
|
-
if display_condition == 'AND'
|
|
83
|
-
reduce_by = operator.and_
|
|
84
|
-
else:
|
|
85
|
-
reduce_by = operator.or_
|
|
82
|
+
reduce_by = operator.and_ if display_condition == 'AND' else operator.or_
|
|
86
83
|
|
|
87
84
|
return reduce_by
|
|
88
85
|
|
|
@@ -179,7 +176,7 @@ class FilterQueryMixin:
|
|
|
179
176
|
elif display_operator in ['not_equal', 'not_in']:
|
|
180
177
|
query_list.append(~((Q((field + '__gte', value[0]))) & (Q((field + '__lte', value[1])))))
|
|
181
178
|
else:
|
|
182
|
-
query_list.append((
|
|
179
|
+
query_list.append((Q((field + '__gte', value[0]))) & (Q((field + '__lte', value[1]))))
|
|
183
180
|
|
|
184
181
|
@staticmethod
|
|
185
182
|
def get_variable_year(value, query_list, display_operator, field, query_string):
|
|
@@ -229,7 +226,7 @@ class FilterQueryMixin:
|
|
|
229
226
|
)
|
|
230
227
|
else:
|
|
231
228
|
query_list.append(
|
|
232
|
-
(
|
|
229
|
+
(Q((field + '__month__gt', start_month))) & (Q((field + '__month__lte', end_month)))
|
|
233
230
|
)
|
|
234
231
|
else:
|
|
235
232
|
start_month = self.get_financial_month() - 1
|
|
@@ -246,11 +243,11 @@ class FilterQueryMixin:
|
|
|
246
243
|
)
|
|
247
244
|
else:
|
|
248
245
|
query_list.append(
|
|
249
|
-
|
|
246
|
+
|
|
250
247
|
(Q((field + '__month', months[0])))
|
|
251
248
|
| (Q((field + '__month', months[1])))
|
|
252
249
|
| (Q((field + '__month', months[2])))
|
|
253
|
-
|
|
250
|
+
|
|
254
251
|
)
|
|
255
252
|
|
|
256
253
|
def get_logged_in_user(self, value, query_list, display_operator, field, query_string):
|
|
@@ -352,10 +349,7 @@ class FilterQueryMixin:
|
|
|
352
349
|
):
|
|
353
350
|
if pivot_str in report_builder_class.pivot_fields:
|
|
354
351
|
pivot_data = report_builder_class.pivot_fields[pivot_str]
|
|
355
|
-
if include_str == ''
|
|
356
|
-
full_field_id = pivot_data['field']
|
|
357
|
-
else:
|
|
358
|
-
full_field_id = '__'.join((include_str, pivot_data['field']))
|
|
352
|
+
full_field_id = pivot_data['field'] if include_str == '' else '__'.join((include_str, pivot_data['field']))
|
|
359
353
|
|
|
360
354
|
return {'id': full_field_id, 'details': pivot_data}
|
|
361
355
|
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
from django.db.models import
|
|
1
|
+
from django.db.models import Avg, Count, Max, Min, Sum
|
|
2
2
|
from django.db.models.functions import (
|
|
3
|
+
TruncDay,
|
|
3
4
|
TruncMonth,
|
|
4
5
|
TruncQuarter,
|
|
5
|
-
TruncYear,
|
|
6
6
|
TruncWeek,
|
|
7
|
-
|
|
7
|
+
TruncYear,
|
|
8
8
|
)
|
|
9
9
|
|
|
10
|
-
|
|
11
10
|
REVERSE_FOREIGN_KEY_DELIMITER_COMMA = 1
|
|
12
11
|
REVERSE_FOREIGN_KEY_DELIMITER_SEMICOLON = 2
|
|
13
12
|
REVERSE_FOREIGN_KEY_DELIMITER_PIPE = 3
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
+
from django.conf import settings
|
|
1
2
|
from django.contrib.contenttypes.models import ContentType
|
|
2
3
|
from django.db import models
|
|
3
4
|
from django.utils.dates import MONTHS
|
|
4
|
-
from django_datatables.columns import DatatableColumn,
|
|
5
|
+
from django_datatables.columns import DatatableColumn, ManyToManyColumn, NoHeadingColumn
|
|
5
6
|
from django_datatables.model_def import DatatableModel
|
|
6
7
|
from django_modals.model_fields.colour import ColourField
|
|
7
8
|
from time_stamped_model.models import TimeStampedModel
|
|
8
9
|
|
|
9
|
-
from django.conf import settings
|
|
10
|
-
|
|
11
10
|
from advanced_report_builder.globals import (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
DISPLAY_OPTION_NONE,
|
|
15
|
-
DISPLAY_OPTION_CLASSES,
|
|
11
|
+
ANNOTATION_CHART_SCALE,
|
|
12
|
+
ANNOTATION_CHOICE_COUNT,
|
|
16
13
|
ANNOTATION_VALUE_CHOICES,
|
|
17
14
|
ANNOTATIONS_CHOICES,
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
DISPLAY_OPTION_2_PER_ROW,
|
|
16
|
+
DISPLAY_OPTION_CHOICES,
|
|
17
|
+
DISPLAY_OPTION_CLASSES,
|
|
18
|
+
DISPLAY_OPTION_NONE,
|
|
20
19
|
)
|
|
21
20
|
from advanced_report_builder.signals import model_report_save
|
|
22
21
|
|
|
@@ -138,14 +137,14 @@ class Report(TimeStampedModel):
|
|
|
138
137
|
on_delete=models.SET_NULL,
|
|
139
138
|
null=True,
|
|
140
139
|
blank=True,
|
|
141
|
-
related_name='report_user_created_set'
|
|
140
|
+
related_name='report_user_created_set',
|
|
142
141
|
)
|
|
143
142
|
user_updated = models.ForeignKey(
|
|
144
143
|
settings.AUTH_USER_MODEL,
|
|
145
144
|
on_delete=models.SET_NULL,
|
|
146
145
|
null=True,
|
|
147
146
|
blank=True,
|
|
148
|
-
related_name='report_user_updated_set'
|
|
147
|
+
related_name='report_user_updated_set',
|
|
149
148
|
)
|
|
150
149
|
|
|
151
150
|
def __str__(self):
|
|
@@ -161,7 +160,6 @@ class Report(TimeStampedModel):
|
|
|
161
160
|
return self.name
|
|
162
161
|
|
|
163
162
|
def save(self, *args, **kwargs):
|
|
164
|
-
|
|
165
163
|
current_user = getattr(self, '_current_user', None)
|
|
166
164
|
if current_user is not None and current_user.is_authenticated:
|
|
167
165
|
self.user_updated = current_user
|
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
from django.urls import path
|
|
2
2
|
|
|
3
3
|
from advanced_report_builder.views.bar_charts import (
|
|
4
|
-
|
|
4
|
+
BarChartBreakdownFieldModal,
|
|
5
5
|
BarChartFieldModal,
|
|
6
|
+
BarChartModal,
|
|
6
7
|
BarChartShowBreakdownModal,
|
|
7
|
-
BarChartBreakdownFieldModal,
|
|
8
8
|
)
|
|
9
9
|
from advanced_report_builder.views.custom import CustomModal
|
|
10
10
|
from advanced_report_builder.views.dashboard import (
|
|
11
|
-
DashboardReportModal,
|
|
12
|
-
DashboardModal,
|
|
13
11
|
DashboardAddReportModal,
|
|
12
|
+
DashboardModal,
|
|
13
|
+
DashboardReportModal,
|
|
14
14
|
)
|
|
15
15
|
from advanced_report_builder.views.datatables.modal import (
|
|
16
|
-
TableModal,
|
|
17
16
|
TableFieldModal,
|
|
17
|
+
TableModal,
|
|
18
18
|
TablePivotModal,
|
|
19
19
|
)
|
|
20
|
-
from advanced_report_builder.views.query_modal.modal import QueryModal, QueryOrderModal
|
|
21
20
|
from advanced_report_builder.views.funnel_charts import (
|
|
22
|
-
FunnelChartModal,
|
|
23
21
|
FunnelChartFieldModal,
|
|
22
|
+
FunnelChartModal,
|
|
24
23
|
)
|
|
25
24
|
from advanced_report_builder.views.kanban import (
|
|
26
|
-
KanbanModal,
|
|
27
|
-
KanbanLaneModal,
|
|
28
|
-
KanbanLaneDuplicateModal,
|
|
29
|
-
KanbanDescriptionModal,
|
|
30
25
|
KanbanDescriptionDuplicateModal,
|
|
26
|
+
KanbanDescriptionModal,
|
|
27
|
+
KanbanLaneDuplicateModal,
|
|
28
|
+
KanbanLaneModal,
|
|
29
|
+
KanbanModal,
|
|
31
30
|
)
|
|
32
31
|
from advanced_report_builder.views.line_charts import (
|
|
33
|
-
LineChartModal,
|
|
34
32
|
LineChartFieldModal,
|
|
33
|
+
LineChartModal,
|
|
35
34
|
)
|
|
36
|
-
from advanced_report_builder.views.pie_charts import
|
|
35
|
+
from advanced_report_builder.views.pie_charts import PieChartFieldModal, PieChartModal
|
|
36
|
+
from advanced_report_builder.views.query_modal.modal import QueryModal, QueryOrderModal
|
|
37
37
|
from advanced_report_builder.views.reports import DuplicateReportModal
|
|
38
38
|
from advanced_report_builder.views.single_values import (
|
|
39
|
+
QueryNumeratorModal,
|
|
39
40
|
SingleValueModal,
|
|
40
41
|
SingleValueShowBreakdownModal,
|
|
41
42
|
SingleValueTableFieldModal,
|
|
42
|
-
QueryNumeratorModal,
|
|
43
43
|
)
|
|
44
44
|
from advanced_report_builder.views.targets.views import TargetModal
|
|
45
45
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import calendar
|
|
2
|
-
from datetime import datetime, date, timedelta
|
|
3
2
|
from calendar import monthrange
|
|
3
|
+
from datetime import date, datetime, timedelta
|
|
4
4
|
|
|
5
5
|
from date_offset.date_offset import DateOffset
|
|
6
6
|
|
|
@@ -72,7 +72,6 @@ class VariableDate:
|
|
|
72
72
|
(RANGE_TYPE_4_WEEKS_AGO, '4 weeks ago'),
|
|
73
73
|
(RANGE_TYPE_3_WEEKS_AGO, '3 weeks ago'),
|
|
74
74
|
(RANGE_TYPE_2_WEEKS_AGO, '2 weeks ago'),
|
|
75
|
-
|
|
76
75
|
(RANGE_TYPE_LAST_WEEK, 'Last week'),
|
|
77
76
|
(RANGE_TYPE_YESTERDAY, 'Yesterday'),
|
|
78
77
|
(RANGE_TYPE_TODAY, 'Today'),
|
|
@@ -297,7 +296,7 @@ class VariableDate:
|
|
|
297
296
|
end_date = date_offset.get_offset('36m', today)
|
|
298
297
|
number_of_days = (end_date - start_date).days
|
|
299
298
|
else:
|
|
300
|
-
|
|
299
|
+
raise AssertionError('unknown date value')
|
|
301
300
|
|
|
302
301
|
start_date_and_time = datetime.combine(start_date, datetime.min.time())
|
|
303
302
|
end_date_and_time = datetime.combine(end_date, datetime.max.time())
|
|
@@ -9,7 +9,7 @@ from crispy_forms.layout import Div
|
|
|
9
9
|
from date_offset.monthdelta import MonthDelta
|
|
10
10
|
from django.core.exceptions import FieldDoesNotExist
|
|
11
11
|
from django.db.models import Q
|
|
12
|
-
from django.forms import CharField, ChoiceField
|
|
12
|
+
from django.forms import BooleanField, CharField, ChoiceField
|
|
13
13
|
from django.shortcuts import get_object_or_404
|
|
14
14
|
from django.urls import reverse
|
|
15
15
|
from django_datatables.datatables import DatatableTable
|
|
@@ -17,42 +17,42 @@ from django_menus.menu import MenuItem
|
|
|
17
17
|
from django_modals.fields import FieldEx
|
|
18
18
|
from django_modals.form_helpers import HorizontalNoEnterHelper
|
|
19
19
|
from django_modals.modals import FormModal, Modal
|
|
20
|
-
from django_modals.processes import
|
|
20
|
+
from django_modals.processes import PERMISSION_OFF, PROCESS_EDIT_DELETE
|
|
21
21
|
from django_modals.widgets.colour_picker import ColourPickerWidget
|
|
22
|
-
from django_modals.widgets.select2 import
|
|
22
|
+
from django_modals.widgets.select2 import Select2, Select2Multiple
|
|
23
23
|
from django_modals.widgets.widgets import Toggle
|
|
24
24
|
|
|
25
25
|
from advanced_report_builder.column_types import NUMBER_FIELDS
|
|
26
26
|
from advanced_report_builder.exceptions import ReportError
|
|
27
27
|
from advanced_report_builder.generate_series import GenerateSeries
|
|
28
28
|
from advanced_report_builder.globals import (
|
|
29
|
-
DEFAULT_DATE_FORMAT,
|
|
30
|
-
DATE_FORMAT_TYPES_DJANGO_FORMAT,
|
|
31
|
-
ANNOTATION_VALUE_YEAR,
|
|
32
|
-
ANNOTATION_VALUE_QUARTER,
|
|
33
|
-
ANNOTATION_VALUE_MONTH,
|
|
34
|
-
ANNOTATION_VALUE_WEEK,
|
|
35
29
|
ANNOTATION_VALUE_DAY,
|
|
36
30
|
ANNOTATION_VALUE_FUNCTIONS,
|
|
31
|
+
ANNOTATION_VALUE_MONTH,
|
|
32
|
+
ANNOTATION_VALUE_QUARTER,
|
|
33
|
+
ANNOTATION_VALUE_WEEK,
|
|
34
|
+
ANNOTATION_VALUE_YEAR,
|
|
35
|
+
DATE_FORMAT_TYPES_DJANGO_FORMAT,
|
|
36
|
+
DEFAULT_DATE_FORMAT,
|
|
37
37
|
GENERATE_SERIES_INTERVALS,
|
|
38
38
|
)
|
|
39
39
|
from advanced_report_builder.models import BarChartReport, ReportType
|
|
40
40
|
from advanced_report_builder.toggle import RBToggle
|
|
41
41
|
from advanced_report_builder.utils import (
|
|
42
|
-
split_attr,
|
|
43
|
-
encode_attribute,
|
|
44
42
|
decode_attribute,
|
|
43
|
+
encode_attribute,
|
|
45
44
|
get_report_builder_class,
|
|
45
|
+
split_attr,
|
|
46
46
|
)
|
|
47
|
-
from advanced_report_builder.views.charts_base import
|
|
47
|
+
from advanced_report_builder.views.charts_base import ChartBaseFieldForm, ChartBaseView
|
|
48
48
|
from advanced_report_builder.views.datatables.modal import (
|
|
49
|
-
TableFieldModal,
|
|
50
49
|
TableFieldForm,
|
|
50
|
+
TableFieldModal,
|
|
51
51
|
)
|
|
52
52
|
from advanced_report_builder.views.datatables.utils import TableUtilsMixin
|
|
53
53
|
from advanced_report_builder.views.modals_base import (
|
|
54
|
-
QueryBuilderModalBaseMixin,
|
|
55
54
|
QueryBuilderModalBase,
|
|
55
|
+
QueryBuilderModalBaseMixin,
|
|
56
56
|
)
|
|
57
57
|
from advanced_report_builder.views.query_modal.mixin import MultiQueryModalMixin
|
|
58
58
|
|
|
@@ -705,7 +705,7 @@ class BarChartShowBreakdownModal(TableUtilsMixin, Modal):
|
|
|
705
705
|
elif bar_chart_report.axis_scale == ANNOTATION_VALUE_DAY:
|
|
706
706
|
return start_date.strftime('%d/%m/%Y')
|
|
707
707
|
else:
|
|
708
|
-
|
|
708
|
+
raise AssertionError()
|
|
709
709
|
|
|
710
710
|
def filter_date(self, query):
|
|
711
711
|
bar_chart_report = self.chart_report
|
|
@@ -722,7 +722,7 @@ class BarChartShowBreakdownModal(TableUtilsMixin, Modal):
|
|
|
722
722
|
elif bar_chart_report.axis_scale == ANNOTATION_VALUE_DAY:
|
|
723
723
|
end_date = start_date + timedelta(days=1)
|
|
724
724
|
else:
|
|
725
|
-
|
|
725
|
+
raise AssertionError()
|
|
726
726
|
|
|
727
727
|
if self.end_date_field_path is None:
|
|
728
728
|
query_list = [
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import base64
|
|
2
2
|
import json
|
|
3
|
-
from datetime import
|
|
3
|
+
from datetime import datetime, timedelta
|
|
4
4
|
|
|
5
5
|
from date_offset.date_offset import DateOffset
|
|
6
6
|
from dateutil.relativedelta import relativedelta
|
|
7
7
|
from django.apps import apps
|
|
8
8
|
from django.core.exceptions import FieldError
|
|
9
|
-
from django.db import
|
|
9
|
+
from django.db import DataError, ProgrammingError
|
|
10
10
|
from django.db.models import Q
|
|
11
11
|
from django.forms import ChoiceField
|
|
12
12
|
from django.shortcuts import get_object_or_404
|
|
@@ -21,18 +21,18 @@ from advanced_report_builder.columns import ReportBuilderDateColumn
|
|
|
21
21
|
from advanced_report_builder.exceptions import ReportError
|
|
22
22
|
from advanced_report_builder.field_utils import ReportBuilderFieldUtils
|
|
23
23
|
from advanced_report_builder.globals import (
|
|
24
|
+
ANNOTATION_VALUE_DAY,
|
|
24
25
|
ANNOTATION_VALUE_FUNCTIONS,
|
|
25
|
-
|
|
26
|
+
ANNOTATION_VALUE_MONTH,
|
|
26
27
|
ANNOTATION_VALUE_QUARTER,
|
|
27
28
|
ANNOTATION_VALUE_WEEK,
|
|
28
|
-
|
|
29
|
-
ANNOTATION_VALUE_MONTH,
|
|
29
|
+
ANNOTATION_VALUE_YEAR,
|
|
30
30
|
)
|
|
31
31
|
from advanced_report_builder.models import ReportType
|
|
32
32
|
from advanced_report_builder.utils import (
|
|
33
|
-
split_slug,
|
|
34
|
-
split_attr,
|
|
35
33
|
get_report_builder_class,
|
|
34
|
+
split_attr,
|
|
35
|
+
split_slug,
|
|
36
36
|
)
|
|
37
37
|
from advanced_report_builder.variable_date import VariableDate
|
|
38
38
|
from advanced_report_builder.views.helpers import QueryBuilderForm
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
from django.views.generic import TemplateView
|
|
2
2
|
from django_menus.menu import MenuItem
|
|
3
|
-
from django_menus.menu import MenuMixin
|
|
4
3
|
from django_modals.modals import ModelFormModal
|
|
5
|
-
from django_modals.processes import
|
|
4
|
+
from django_modals.processes import PERMISSION_OFF, PROCESS_EDIT_DELETE
|
|
6
5
|
from django_modals.widgets.select2 import Select2Multiple
|
|
7
6
|
|
|
8
7
|
from advanced_report_builder.filter_query import FilterQueryMixin
|
|
9
8
|
from advanced_report_builder.models import CustomReport, ReportType
|
|
10
|
-
from advanced_report_builder.utils import split_slug
|
|
9
|
+
from advanced_report_builder.utils import split_slug
|
|
11
10
|
from advanced_report_builder.views.query_modal.mixin import MultiQueryModalMixin
|
|
12
11
|
from advanced_report_builder.views.report import ReportBase
|
|
13
12
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import copy
|
|
2
2
|
|
|
3
3
|
from ajax_helpers.mixins import AjaxHelpers
|
|
4
|
+
from django.conf import settings
|
|
4
5
|
from django.forms import ModelChoiceField
|
|
5
6
|
from django.http import Http404
|
|
6
7
|
from django.shortcuts import get_object_or_404
|
|
@@ -8,11 +9,11 @@ from django.urls import reverse
|
|
|
8
9
|
from django.views.generic import TemplateView
|
|
9
10
|
from django_menus.menu import MenuMixin
|
|
10
11
|
from django_modals.forms import CrispyForm
|
|
11
|
-
from django_modals.modals import
|
|
12
|
+
from django_modals.modals import FormModal, ModelFormModal
|
|
12
13
|
from django_modals.processes import (
|
|
13
|
-
PROCESS_EDIT_DELETE,
|
|
14
|
-
PERMISSION_OFF,
|
|
15
14
|
PERMISSION_DISABLE,
|
|
15
|
+
PERMISSION_OFF,
|
|
16
|
+
PROCESS_EDIT_DELETE,
|
|
16
17
|
)
|
|
17
18
|
from django_modals.widgets.select2 import Select2
|
|
18
19
|
from django_modals.widgets.widgets import Toggle
|
|
@@ -31,7 +32,6 @@ from advanced_report_builder.views.kanban import KanbanView
|
|
|
31
32
|
from advanced_report_builder.views.line_charts import LineChartView
|
|
32
33
|
from advanced_report_builder.views.pie_charts import PieChartView
|
|
33
34
|
from advanced_report_builder.views.single_values import SingleValueView
|
|
34
|
-
from django.conf import settings
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
class ViewDashboardBase(AjaxHelpers, MenuMixin, TemplateView):
|