django-advanced-report-builder 0.6.6__tar.gz → 0.7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of django-advanced-report-builder might be problematic. Click here for more details.

Files changed (168) hide show
  1. {django-advanced-report-builder-0.6.6/django_advanced_report_builder.egg-info → django-advanced-report-builder-0.7.0}/PKG-INFO +1 -1
  2. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/filter_query.py +9 -3
  3. django-advanced-report-builder-0.7.0/advanced_report_builder/migrations/0014_auto_20240706_2207.py +24 -0
  4. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/models.py +5 -0
  5. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/modal.html +0 -6
  6. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/datatables/modal.html +0 -4
  7. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/datatables/onclick_menu.html +1 -0
  8. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/kanban/description_modal.html +0 -5
  9. django-advanced-report-builder-0.7.0/advanced_report_builder/templates/advanced_report_builder/kanban/modal.html +10 -0
  10. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/query_builder.html +0 -1
  11. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/single_values/modal.html +0 -6
  12. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/urls.py +4 -2
  13. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/utils.py +5 -0
  14. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/bar_charts.py +34 -37
  15. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/charts_base.py +5 -12
  16. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/custom.py +6 -24
  17. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/dashboard.py +10 -4
  18. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/datatables/datatables.py +1 -13
  19. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/datatables/modal.py +3 -30
  20. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/funnel_charts.py +18 -17
  21. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/kanban.py +2 -2
  22. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/line_charts.py +25 -23
  23. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/modals_base.py +13 -44
  24. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/pie_charts.py +21 -21
  25. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/query_modal/mixin.py +37 -22
  26. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/query_modal/modal.py +19 -12
  27. django-advanced-report-builder-0.7.0/advanced_report_builder/views/report.py +33 -0
  28. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/single_values.py +127 -48
  29. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0/django_advanced_report_builder.egg-info}/PKG-INFO +1 -1
  30. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/django_advanced_report_builder.egg-info/SOURCES.txt +1 -0
  31. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/setup.py +1 -1
  32. django-advanced-report-builder-0.6.6/advanced_report_builder/templates/advanced_report_builder/kanban/modal.html +0 -12
  33. django-advanced-report-builder-0.6.6/advanced_report_builder/views/report.py +0 -13
  34. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/LICENSE +0 -0
  35. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/MANIFEST.in +0 -0
  36. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/README.md +0 -0
  37. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/__init__.py +0 -0
  38. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/admin.py +0 -0
  39. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/apps.py +0 -0
  40. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/columns.py +0 -0
  41. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/customise.py +0 -0
  42. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/data_merge/__init__.py +0 -0
  43. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/data_merge/utils.py +0 -0
  44. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/data_merge/widget.py +0 -0
  45. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/duplicate.py +0 -0
  46. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/exceptions.py +0 -0
  47. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/field_types.py +0 -0
  48. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/field_utils.py +0 -0
  49. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/generate_series.py +0 -0
  50. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/globals.py +0 -0
  51. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/includes.py +0 -0
  52. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0001_initial.py +0 -0
  53. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0002_auto_20220209_1657.py +0 -0
  54. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0003_auto_20220215_1219.py +0 -0
  55. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0004_customreport.py +0 -0
  56. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0005_auto_20220303_0958.py +0 -0
  57. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0006_auto_20220310_1147.py +0 -0
  58. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0007_auto_20220322_1939.py +0 -0
  59. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0008_auto_20220404_1144.py +0 -0
  60. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0009_auto_20230428_1554.py +0 -0
  61. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0010_auto_20230428_2033.py +0 -0
  62. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0011_auto_20230620_1449.py +0 -0
  63. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0012_auto_20230718_1642.py +0 -0
  64. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/0013_reportqueryorder.py +0 -0
  65. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/migrations/__init__.py +0 -0
  66. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/report_builder.py +0 -0
  67. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.esm.js +0 -0
  68. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.js +0 -0
  69. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.min.js +0 -0
  70. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chartjs-adapter-moment.min.js +0 -0
  71. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chartjs-plugin-datalabels.min.js +0 -0
  72. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/chunks/helpers.segment.js +0 -0
  73. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/chart-js/js/helpers.esm.js +0 -0
  74. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/d3/js/d3.js +0 -0
  75. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/d3/js/d3.min.js +0 -0
  76. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/d3-funnel/js/d3-funnel.js +0 -0
  77. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/d3-funnel/js/d3-funnel.min.js +0 -0
  78. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dashboard/js/dashboard.js +0 -0
  79. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/.gitignore +0 -0
  80. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/.travis.yml +0 -0
  81. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/LICENSE-DOT.txt +0 -0
  82. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/README.md +0 -0
  83. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/bin/dot-packer +0 -0
  84. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/bower.json +0 -0
  85. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/doT.js +0 -0
  86. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/doT.min.js +0 -0
  87. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/doU.js +0 -0
  88. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/index.js +0 -0
  89. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/dot/js/package.json +0 -0
  90. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/jquery_extendext/js/jQuery.extendext.js +0 -0
  91. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/jquery_extendext/js/jQuery.extendext.min.js +0 -0
  92. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.dark.css +0 -0
  93. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.dark.min.css +0 -0
  94. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.default.css +0 -0
  95. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.default.min.css +0 -0
  96. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ar.js +0 -0
  97. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.az.js +0 -0
  98. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.bg.js +0 -0
  99. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.cs.js +0 -0
  100. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.da.js +0 -0
  101. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.de.js +0 -0
  102. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.el.js +0 -0
  103. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.en.js +0 -0
  104. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.es.js +0 -0
  105. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.fa-IR.js +0 -0
  106. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.fr.js +0 -0
  107. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.he.js +0 -0
  108. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.it.js +0 -0
  109. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.nl.js +0 -0
  110. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.no.js +0 -0
  111. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pl.js +0 -0
  112. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pt-BR.js +0 -0
  113. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pt-PT.js +0 -0
  114. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ro.js +0 -0
  115. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ru.js +0 -0
  116. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.sq.js +0 -0
  117. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.tr.js +0 -0
  118. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ua.js +0 -0
  119. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.zh-CN.js +0 -0
  120. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/plugins/currency/plugin.js +0 -0
  121. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.js +0 -0
  122. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.min.js +0 -0
  123. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.standalone.js +0 -0
  124. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.standalone.min.js +0 -0
  125. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/dark.scss +0 -0
  126. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/default.scss +0 -0
  127. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_bt-checkbox.scss +0 -0
  128. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_bt-tooltip-errors.scss +0 -0
  129. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_filter-description.scss +0 -0
  130. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_invert.scss +0 -0
  131. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_sortable.scss +0 -0
  132. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/bt-tooltip-errors.scss +0 -0
  133. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/filter-description.scss +0 -0
  134. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/invert.scss +0 -0
  135. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/sortable.scss +0 -0
  136. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/bar/middle.html +0 -0
  137. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/funnel/middle.html +0 -0
  138. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/funnel/report.html +0 -0
  139. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/line/middle.html +0 -0
  140. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/modal_field.html +0 -0
  141. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/pie/middle.html +0 -0
  142. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/charts/report.html +0 -0
  143. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/data_merge/data_merge.html +0 -0
  144. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/datatables/fields/modal.html +0 -0
  145. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/datatables/fields/single_query_builder.html +0 -0
  146. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/datatables/report.html +0 -0
  147. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/datatables/select_pivot.html +0 -0
  148. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/kanban/middle.html +0 -0
  149. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/kanban/report.html +0 -0
  150. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/query_modal.html +0 -0
  151. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/select_column.html +0 -0
  152. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/single_values/middle.html +0 -0
  153. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/templates/advanced_report_builder/single_values/report.html +0 -0
  154. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/toggle.py +0 -0
  155. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/variable_date.py +0 -0
  156. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/__init__.py +0 -0
  157. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/datatables/__init__.py +0 -0
  158. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/datatables/utils.py +0 -0
  159. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/query_modal/__init__.py +0 -0
  160. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/report_utils_mixin.py +0 -0
  161. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/reports.py +0 -0
  162. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/targets/__init__.py +0 -0
  163. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/targets/utils.py +0 -0
  164. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/advanced_report_builder/views/targets/views.py +0 -0
  165. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/django_advanced_report_builder.egg-info/dependency_links.txt +0 -0
  166. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/django_advanced_report_builder.egg-info/requires.txt +0 -0
  167. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/django_advanced_report_builder.egg-info/top_level.txt +0 -0
  168. {django-advanced-report-builder-0.6.6 → django-advanced-report-builder-0.7.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-advanced-report-builder
3
- Version: 0.6.6
3
+ Version: 0.7.0
4
4
  Summary: Django app that allows you to build reports from modals
5
5
  Home-page: https://github.com/django-advance-utils/django-advanced-report-builder
6
6
  Author: Thomas Turner
@@ -233,14 +233,20 @@ class FilterQueryMixin:
233
233
  query_list.append(~Q((query_string, current_user)))
234
234
 
235
235
  def get_report_query(self, report):
236
-
237
- slug_key = self.slug.get(f'query{report.pk}')
236
+ dashboard_report = self.dashboard_report
237
+ if dashboard_report is not None:
238
+ slug_key = self.slug.get(f'query{report.pk}_{dashboard_report.pk}')
239
+ else:
240
+ slug_key = self.slug.get(f'query{report.pk}')
238
241
  if slug_key:
239
242
  report_query = get_object_or_404(ReportQuery, id=slug_key)
240
243
  if report_query.report_id != report.pk:
241
244
  return None
242
245
  else:
243
- report_query = report.reportquery_set.first()
246
+ if dashboard_report is not None and dashboard_report.report_query is not None:
247
+ report_query = dashboard_report.report_query
248
+ else:
249
+ report_query = report.reportquery_set.first()
244
250
  return report_query
245
251
 
246
252
  @staticmethod
@@ -0,0 +1,24 @@
1
+ # Generated by Django 3.2.7 on 2024-07-06 22:07
2
+
3
+ from django.db import migrations, models
4
+ import django.db.models.deletion
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ('advanced_report_builder', '0013_reportqueryorder'),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AddField(
15
+ model_name='dashboardreport',
16
+ name='report_query',
17
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='advanced_report_builder.reportquery'),
18
+ ),
19
+ migrations.AddField(
20
+ model_name='dashboardreport',
21
+ name='show_versions',
22
+ field=models.BooleanField(default=True),
23
+ ),
24
+ ]
@@ -215,6 +215,9 @@ class ReportQuery(TimeStampedModel):
215
215
  ordering = ['order']
216
216
  verbose_name_plural = 'Report queries'
217
217
 
218
+ def __str__(self):
219
+ return self.name
220
+
218
221
 
219
222
  class ReportQueryOrder(TimeStampedModel):
220
223
  report_query = models.ForeignKey(ReportQuery, on_delete=models.CASCADE)
@@ -482,6 +485,8 @@ class DashboardReport(TimeStampedModel):
482
485
  top = models.BooleanField(default=False)
483
486
  name_override = models.CharField(max_length=200, blank=True, null=True)
484
487
  display_option = models.PositiveIntegerField(choices=DISPLAY_OPTION_CHOICES, default=DISPLAY_OPTION_NONE)
488
+ show_versions = models.BooleanField(default=True)
489
+ report_query = models.ForeignKey(ReportQuery, blank=True, null=True, on_delete=models.CASCADE)
485
490
 
486
491
  def get_class(self, extra_class_name):
487
492
  if self.display_option != DISPLAY_OPTION_NONE:
@@ -8,11 +8,5 @@
8
8
  $('#id_date_field').val('').trigger('change');
9
9
  });
10
10
  });
11
-
12
- function save_modal_{{ form.form_id }}() {
13
- id_query_data.save_query_builder();
14
- django_modal.process_commands_lock([{'function': 'post_modal'}]);
15
- }
16
-
17
11
  </script>
18
12
  {% endblock %}
@@ -9,9 +9,5 @@ $(function () {
9
9
  });
10
10
  });
11
11
 
12
-
13
- function save_modal_{{ form.form_id }}() {
14
- django_modal.process_commands_lock([{'function': 'post_modal'}]);
15
- }
16
12
  </script>
17
13
  {% endblock %}
@@ -5,6 +5,7 @@
5
5
  <a {% if value.dropdown %}id="{{ value.dropdown.id }}"{% endif %} href="#" onclick="{{ value.href }}"
6
6
  class="mr-1 mb-1 btn {{ value.css|default:"btn-primary" }}{% if value.active %} active{% endif %}" {{ value.attributes }}>
7
7
  <span {% if value.show_caret %}class="dropdown-toggle"{% endif %}>{{ value.name }}{{ value.badge }}</span></a>
8
+
8
9
  {% else %}
9
10
  {{ value.render }}
10
11
  {% endif %}
@@ -8,10 +8,5 @@
8
8
  reset_id_description();
9
9
  });
10
10
  });
11
-
12
- function save_modal_{{ form.form_id }}() {
13
- django_modal.process_commands_lock([{'function': 'post_modal'}]);
14
- }
15
-
16
11
  </script>
17
12
  {% endblock %}
@@ -0,0 +1,10 @@
1
+ {% extends 'django_modals/modal_base.html' %}
2
+
3
+ {% block javascript %}
4
+ <script>
5
+ function save_modal_{{ form.form_id }}() {
6
+ id_query_data.save_query_builder();
7
+ django_modal.process_commands_lock([{'function': 'post_modal'}]);
8
+ }
9
+ </script>
10
+ {% endblock %}
@@ -78,7 +78,6 @@
78
78
  $(field_id).val(JSON.stringify(results, null, 2));
79
79
  return results;
80
80
  }
81
-
82
81
  }( window.{{ field.auto_id }} = window.{{ field.auto_id }} || {}, jQuery ));
83
82
 
84
83
  ajax_helpers.command_functions.save_query_builder_{{ field.auto_id }} = function (command) {
@@ -9,11 +9,5 @@
9
9
  });
10
10
  });
11
11
 
12
- function save_modal_{{ form.form_id }}() {
13
- id_extra_query_data.save_query_builder();
14
- id_query_data.save_query_builder();
15
- django_modal.process_commands_lock([{'function': 'post_modal'}]);
16
- }
17
-
18
12
  </script>
19
13
  {% endblock %}
@@ -12,8 +12,8 @@ from advanced_report_builder.views.kanban import KanbanModal, KanbanLaneModal, K
12
12
  from advanced_report_builder.views.line_charts import LineChartModal, LineChartFieldModal
13
13
  from advanced_report_builder.views.pie_charts import PieChartModal, PieChartFieldModal
14
14
  from advanced_report_builder.views.reports import DuplicateReportModal
15
- from advanced_report_builder.views.single_values import SingleValueModal, SingleValueShowBreakdownModal,\
16
- SingleValueTableFieldModal
15
+ from advanced_report_builder.views.single_values import SingleValueModal, SingleValueShowBreakdownModal, \
16
+ SingleValueTableFieldModal, QueryNumeratorModal
17
17
  from advanced_report_builder.views.targets.views import TargetModal
18
18
 
19
19
  app_name = 'advanced_report_builder'
@@ -30,6 +30,8 @@ urlpatterns = [
30
30
 
31
31
  path('single-value/modal/<str:slug>/', SingleValueModal.as_view(), name='single_value_modal'),
32
32
  path('single-value/modal/field/<str:slug>/', SingleValueTableFieldModal.as_view(), name='single_value_field_modal'),
33
+ path('single-value/modal/numerator-field/<str:slug>/', QueryNumeratorModal.as_view(),
34
+ name='single_value_numerator_modal'),
33
35
  path('single-value/show-breakdown/<str:slug>/', SingleValueShowBreakdownModal.as_view(),
34
36
  name='single_value_show_breakdown_modal'),
35
37
 
@@ -76,3 +76,8 @@ def get_report_builder_class(model, report_type=None, class_name=None):
76
76
  if report_builder_class is not None:
77
77
  report_builder_class = report_builder_class()
78
78
  return report_builder_class
79
+
80
+
81
+ def get_query_js(button_name, field_id):
82
+ return ('django_modal.process_commands_lock([{"function": "post_modal", "button": {"button": "' +
83
+ button_name + '", "' + field_id + '": $(this).closest(\'tr\').attr(\'id\')}}])')
@@ -36,6 +36,7 @@ from advanced_report_builder.views.charts_base import ChartBaseView, ChartBaseFi
36
36
  from advanced_report_builder.views.datatables.modal import TableFieldModal, TableFieldForm
37
37
  from advanced_report_builder.views.datatables.utils import TableUtilsMixin
38
38
  from advanced_report_builder.views.modals_base import QueryBuilderModalBaseMixin, QueryBuilderModalBase
39
+ from advanced_report_builder.views.query_modal.mixin import MultiQueryModalMixin
39
40
 
40
41
 
41
42
  class BarChartView(ChartBaseView):
@@ -142,11 +143,12 @@ class BarChartView(ChartBaseView):
142
143
  return start_field_name
143
144
 
144
145
 
145
- class BarChartModal(QueryBuilderModalBase):
146
+ class BarChartModal(MultiQueryModalMixin, QueryBuilderModalBase):
146
147
  template_name = 'advanced_report_builder/charts/modal.html'
147
148
  process = PROCESS_EDIT_DELETE
148
149
  permission_delete = PERMISSION_OFF
149
150
  model = BarChartReport
151
+ show_order_by = False
150
152
  widgets = {'positive_bar_colour': ColourPickerWidget,
151
153
  'negative_bar_colour': ColourPickerWidget,
152
154
  'stacked': RBToggle,
@@ -176,7 +178,7 @@ class BarChartModal(QueryBuilderModalBase):
176
178
  'breakdown_fields']
177
179
 
178
180
  def form_setup(self, form, *_args, **_kwargs):
179
- if 'data' in _kwargs:
181
+ if 'data' in _kwargs and len(_kwargs['data']) > 0:
180
182
  date_field = _kwargs['data'].get('date_field')
181
183
  end_date_field = _kwargs['data'].get('end_date_field')
182
184
  report_type_id = _kwargs['data'].get('report_type')
@@ -200,7 +202,6 @@ class BarChartModal(QueryBuilderModalBase):
200
202
 
201
203
  form.fields['notes'].widget.attrs['rows'] = 3
202
204
 
203
- self.add_query_data(form)
204
205
  url = reverse('advanced_report_builder:bar_chart_field_modal',
205
206
  kwargs={'slug': 'selector-99999-data-FIELD_INFO-report_type_id-REPORT_TYPE_ID'})
206
207
 
@@ -220,33 +221,34 @@ class BarChartModal(QueryBuilderModalBase):
220
221
  BarChartReport.DATE_FIELD_RANGE: ('html', 'Start date field')}}
221
222
  ])
222
223
 
223
- return ('name',
224
- 'notes',
225
- 'report_type',
226
- 'report_tags',
227
- 'bar_chart_orientation',
228
- 'axis_scale',
229
- 'axis_value_type',
230
- 'date_field_type',
231
- 'date_field',
232
- 'end_date_field',
233
- FieldEx('fields',
234
- template='advanced_report_builder/select_column.html',
235
- extra_context={'select_column_url': url,
236
- 'command_prefix': ''}),
237
- 'x_label',
238
- 'y_label',
239
- 'stacked',
240
- 'show_totals',
241
- 'show_blank_dates',
242
- 'show_breakdown',
243
- FieldEx('breakdown_fields',
244
- template='advanced_report_builder/select_column.html',
245
- extra_context={'select_column_url': url_breakdown,
246
- 'command_prefix': 'breakdown_'}),
247
- FieldEx('query_data',
248
- template='advanced_report_builder/query_builder.html'),
249
- )
224
+ fields = ['name',
225
+ 'notes',
226
+ 'report_type',
227
+ 'report_tags',
228
+ 'bar_chart_orientation',
229
+ 'axis_scale',
230
+ 'axis_value_type',
231
+ 'date_field_type',
232
+ 'date_field',
233
+ 'end_date_field',
234
+ FieldEx('fields',
235
+ template='advanced_report_builder/select_column.html',
236
+ extra_context={'select_column_url': url,
237
+ 'command_prefix': ''}),
238
+ 'x_label',
239
+ 'y_label',
240
+ 'stacked',
241
+ 'show_totals',
242
+ 'show_blank_dates',
243
+ 'show_breakdown',
244
+ FieldEx('breakdown_fields',
245
+ template='advanced_report_builder/select_column.html',
246
+ extra_context={'select_column_url': url_breakdown,
247
+ 'command_prefix': 'breakdown_'})
248
+ ]
249
+ if self.object.id:
250
+ self.add_extra_queries(form=form, fields=fields)
251
+ return fields
250
252
 
251
253
  def select2_date_field(self, **kwargs):
252
254
  return self.get_fields_for_select2(field_type='date',
@@ -369,7 +371,7 @@ class BarChartFieldModal(QueryBuilderModalBaseMixin, FormModal):
369
371
  'val': _attr})
370
372
 
371
373
  self.add_command({'function': 'html', 'selector': f'#{selector} span', 'html': form.cleaned_data['title']})
372
- self.add_command({'function': 'save_query_builder_id_query_data'})
374
+ self.add_command({'function': 'save_query_builder_id_filter'})
373
375
  self.add_command({'function': 'update_selection'})
374
376
  return self.command_response('close')
375
377
 
@@ -419,11 +421,6 @@ class BarChartBreakdownFieldForm(TableFieldForm):
419
421
  else:
420
422
  return super().submit_button(css_class, button_text, **kwargs)
421
423
 
422
- def cancel_button(self, css_class=cancel_class, **kwargs):
423
- commands = [{'function': 'save_query_builder_id_query_data'},
424
- {'function': 'close'}]
425
- return self.button('Cancel', commands, css_class, **kwargs)
426
-
427
424
 
428
425
  class BarChartBreakdownFieldModal(TableFieldModal):
429
426
  form_class = BarChartBreakdownFieldForm
@@ -438,7 +435,7 @@ class BarChartBreakdownFieldModal(TableFieldModal):
438
435
  'val': _attr})
439
436
 
440
437
  self.add_command({'function': 'html', 'selector': f'#{selector} span', 'html': form.cleaned_data['title']})
441
- self.add_command({'function': 'save_query_builder_id_query_data'})
438
+ self.add_command({'function': 'save_query_builder_id_filter'})
442
439
  self.add_command({'function': 'breakdown_update_selection'})
443
440
  return self.command_response('close')
444
441
 
@@ -6,6 +6,7 @@ from crispy_forms.bootstrap import StrictButton
6
6
  from date_offset.date_offset import DateOffset
7
7
  from dateutil.relativedelta import relativedelta
8
8
  from django.apps import apps
9
+ from django.core.exceptions import FieldError
9
10
  from django.db import ProgrammingError, DataError
10
11
  from django.db.models import Q
11
12
  from django.shortcuts import get_object_or_404
@@ -43,7 +44,7 @@ class ChartJSTable(DatatableTable):
43
44
  targets = []
44
45
  try:
45
46
  data = self.get_table_array(self.kwargs.get('request'), self.get_query())
46
- except DataError:
47
+ except (DataError, FieldError):
47
48
  data = [['N/A']]
48
49
  if self.targets is not None:
49
50
  targets = self.targets.all()
@@ -280,7 +281,7 @@ class ChartBaseView(ReportBase, ReportUtilsMixin, TemplateView):
280
281
 
281
282
  self.add_menu('button_menu', 'button_group').add_items(
282
283
  *report_menu,
283
- *self.queries_menu(),
284
+ *self.queries_menu(report=self.report, dashboard_report=self.dashboard_report),
284
285
  )
285
286
 
286
287
  def pod_dashboard_edit_menu(self):
@@ -303,10 +304,6 @@ class ChartBaseView(ReportBase, ReportUtilsMixin, TemplateView):
303
304
  def edit_report_menu(request, chart_report_id, slug_str):
304
305
  return []
305
306
 
306
- # noinspection PyMethodMayBeStatic
307
- def queries_menu(self):
308
- return []
309
-
310
307
  @staticmethod
311
308
  def get_period_divider(annotation_value_choice, start_date_type, end_date_type):
312
309
  variable_date = VariableDate()
@@ -346,14 +343,10 @@ class ChartBaseFieldForm(ReportBuilderFieldUtils, CrispyForm):
346
343
  super().__init__(*args, **kwargs)
347
344
 
348
345
  def submit_button(self, css_class='btn-success modal-submit', button_text='Submit', **kwargs):
349
- if isinstance(self.django_field, NUMBER_FIELDS):
350
- return StrictButton(button_text, onclick=f'save_modal_{self.form_id}()', css_class=css_class, **kwargs)
351
- else:
352
- return super().submit_button(css_class, button_text, **kwargs)
346
+ return StrictButton(button_text, onclick=f'save_modal_{self.form_id}()', css_class=css_class, **kwargs)
353
347
 
354
348
  def cancel_button(self, css_class=cancel_class, **kwargs):
355
- commands = [{'function': 'save_query_builder_id_query_data'},
356
- {'function': 'close'}]
349
+ commands = [{'function': 'close'}]
357
350
  return self.button('Cancel', commands, css_class, **kwargs)
358
351
 
359
352
  def get_report_type_details(self):
@@ -9,9 +9,10 @@ from advanced_report_builder.filter_query import FilterQueryMixin
9
9
  from advanced_report_builder.models import CustomReport, ReportType
10
10
  from advanced_report_builder.utils import split_slug, make_slug_str
11
11
  from advanced_report_builder.views.query_modal.mixin import MultiQueryModalMixin
12
+ from advanced_report_builder.views.report import ReportBase
12
13
 
13
14
 
14
- class CustomBaseView(MenuMixin, FilterQueryMixin, TemplateView):
15
+ class CustomBaseView(ReportBase, FilterQueryMixin, TemplateView):
15
16
  report_type_slug = None
16
17
 
17
18
  def __init__(self, **kwargs):
@@ -40,18 +41,6 @@ class CustomBaseView(MenuMixin, FilterQueryMixin, TemplateView):
40
41
  context['title'] = self.get_title()
41
42
  return context
42
43
 
43
- def queries_menu(self):
44
- report_queries = self.report.reportquery_set.all()
45
- if len(report_queries) > 1:
46
- dropdown = []
47
- for report_query in report_queries:
48
- slug_str = make_slug_str(self.slug, overrides={f'query{self.report.id}': report_query.id})
49
- dropdown.append((self.request.resolver_match.view_name,
50
- report_query.name, {'url_kwargs': {'slug': slug_str}}))
51
- return [MenuItem(menu_display='Version', no_hover=True, css_classes='btn-secondary',
52
- dropdown=dropdown)]
53
- return []
54
-
55
44
  def setup_menu(self):
56
45
  super().setup_menu()
57
46
  if not self.show_toolbar:
@@ -66,7 +55,7 @@ class CustomBaseView(MenuMixin, FilterQueryMixin, TemplateView):
66
55
 
67
56
  self.add_menu('button_menu', 'button_group').add_items(
68
57
  *report_menu,
69
- *self.queries_menu()
58
+ *self.queries_menu(report=self.report, dashboard_report=self.dashboard_report)
70
59
  )
71
60
 
72
61
  def pod_dashboard_edit_menu(self):
@@ -88,13 +77,10 @@ class CustomBaseView(MenuMixin, FilterQueryMixin, TemplateView):
88
77
  else:
89
78
  return self.report.name
90
79
 
91
- def get_dashboard_class(self, report):
92
- return None
93
-
94
80
  def get_report_type(self):
95
81
  if self.report_type_slug is not None:
96
82
  if self._report_type is None:
97
- self._report_type = ReportType.objects.get(slug=self.report_type_slug)
83
+ self._report_type = ReportType.objects.get(slug=self.report_type_slug)
98
84
  return self._report_type
99
85
  return None
100
86
 
@@ -139,14 +125,10 @@ class CustomModal(MultiQueryModalMixin, ModelFormModal):
139
125
  'notes']
140
126
 
141
127
  def form_setup(self, form, *_args, **_kwargs):
142
- fields = ['name',
143
- 'report_tags',
144
- 'notes']
145
-
128
+ fields = [*self.form_fields]
146
129
  if self.object.id and 'report_type' in self.slug:
147
- self.add_extra_queries(form=form, fields=fields, show_order_by=True)
130
+ self.add_extra_queries(form=form, fields=fields)
148
131
  return fields
149
132
 
150
133
  def get_report_type(self, **_kwargs):
151
134
  return self.slug['report_type']
152
-
@@ -9,11 +9,11 @@ from django.views.generic import TemplateView
9
9
  from django_menus.menu import MenuMixin
10
10
  from django_modals.forms import CrispyForm
11
11
  from django_modals.modals import ModelFormModal, FormModal
12
- from django_modals.processes import PROCESS_EDIT_DELETE, PERMISSION_OFF
12
+ from django_modals.processes import PROCESS_EDIT_DELETE, PERMISSION_OFF, PERMISSION_DISABLE
13
13
  from django_modals.widgets.select2 import Select2
14
14
  from django_modals.widgets.widgets import Toggle
15
15
 
16
- from advanced_report_builder.models import Dashboard, DashboardReport, Report
16
+ from advanced_report_builder.models import Dashboard, DashboardReport, Report, ReportQuery
17
17
  from advanced_report_builder.utils import split_slug
18
18
  from advanced_report_builder.views.bar_charts import BarChartView
19
19
  from advanced_report_builder.views.datatables.datatables import TableView
@@ -188,17 +188,23 @@ class DashboardReportModal(ModelFormModal):
188
188
  model = DashboardReport
189
189
  process = PROCESS_EDIT_DELETE
190
190
  permission_delete = PERMISSION_OFF
191
+ permission_create = PERMISSION_DISABLE
191
192
 
192
193
  form_fields = ['name_override',
193
194
  'top',
194
- 'display_option']
195
- widgets = {'top': Toggle(attrs={'data-onstyle': 'success', 'data-on': 'YES', 'data-off': 'NO'})}
195
+ 'display_option',
196
+ 'show_versions',
197
+ 'report_query']
198
+ widgets = {'top': Toggle(attrs={'data-onstyle': 'success', 'data-on': 'YES', 'data-off': 'NO'}),
199
+ 'show_versions': Toggle(attrs={'data-onstyle': 'success', 'data-on': 'YES', 'data-off': 'NO'})}
196
200
 
197
201
  @staticmethod
198
202
  def form_setup(form, *_args, **_kwargs):
199
203
  form.add_trigger('top', 'onchange', [
200
204
  {'selector': '#div_id_display_option', 'values': {'checked': 'hide'}, 'default': 'show'},
201
205
  ])
206
+ report_queries = ReportQuery.objects.filter(report=form.instance.report)
207
+ form.fields['report_query'] = ModelChoiceField(queryset=report_queries, widget=Select2, required=False)
202
208
 
203
209
 
204
210
  class DashboardAddReportForm(CrispyForm):
@@ -106,7 +106,7 @@ class TableView(ReportBase, TableUtilsMixin, DatatableView):
106
106
 
107
107
  self.add_menu('button_menu', 'button_group').add_items(
108
108
  *report_menu,
109
- *self.queries_menu(),
109
+ *self.queries_menu(report=self.report, dashboard_report=self.dashboard_report),
110
110
  )
111
111
 
112
112
  def pod_dashboard_edit_menu(self):
@@ -134,18 +134,6 @@ class TableView(ReportBase, TableUtilsMixin, DatatableView):
134
134
  *self.duplicate_menu(request=self.request, report_id=chart_report_id)
135
135
  ]
136
136
 
137
- # noinspection PyMethodMayBeStatic
138
- def queries_menu(self):
139
- report_queries = self.table_report.reportquery_set.all()
140
- if len(report_queries) > 1:
141
- dropdown = []
142
- for report_query in report_queries:
143
- slug_str = make_slug_str(self.slug, overrides={f'query{self.table_report.id}': report_query.id})
144
- dropdown.append((self.request.resolver_match.view_name,
145
- report_query.name, {'url_kwargs': {'slug': slug_str}}))
146
- return [MenuItem(menu_display='Version', no_hover=True, css_classes='btn-secondary',
147
- dropdown=dropdown)]
148
- return []
149
137
 
150
138
  def get_dashboard_class(self, report):
151
139
  pivot_fields = report.tablereport.pivot_fields
@@ -2,16 +2,11 @@ import base64
2
2
  import json
3
3
 
4
4
  from crispy_forms.bootstrap import StrictButton
5
- from crispy_forms.layout import Div, HTML
6
- from django.conf import settings
5
+ from crispy_forms.layout import Div
7
6
  from django.forms import CharField, ChoiceField, BooleanField, IntegerField
8
7
  from django.urls import reverse
9
- from django_datatables.columns import MenuColumn
10
- from django_datatables.widgets import DataTableReorderWidget
11
- from django_menus.menu import HtmlMenu, MenuItem
12
8
  from django_modals.fields import FieldEx
13
9
  from django_modals.form_helpers import HorizontalNoEnterHelper
14
- from django_modals.forms import ModelCrispyForm
15
10
  from django_modals.modals import FormModal
16
11
  from django_modals.processes import PROCESS_EDIT_DELETE, PERMISSION_OFF
17
12
  from django_modals.widgets.select2 import Select2Multiple
@@ -19,7 +14,7 @@ from django_modals.widgets.widgets import Toggle
19
14
 
20
15
  from advanced_report_builder.globals import DATE_FIELDS, NUMBER_FIELDS, ANNOTATION_VALUE_CHOICES, ANNOTATIONS_CHOICES, \
21
16
  DATE_FORMAT_TYPES, CURRENCY_COLUMNS, LINK_COLUMNS
22
- from advanced_report_builder.models import TableReport, ReportQuery, ReportType
17
+ from advanced_report_builder.models import TableReport, ReportType
23
18
  from advanced_report_builder.toggle import RBToggle
24
19
  from advanced_report_builder.utils import split_attr, encode_attribute, decode_attribute, get_report_builder_class
25
20
  from advanced_report_builder.views.charts_base import ChartBaseFieldForm
@@ -33,7 +28,6 @@ class TableModal(MultiQueryModalMixin, QueryBuilderModalBase):
33
28
  model = TableReport
34
29
  process = PROCESS_EDIT_DELETE
35
30
  permission_delete = PERMISSION_OFF
36
- ajax_commands = ['datatable', 'button']
37
31
  show_order_by = False
38
32
 
39
33
  widgets = {'report_tags': Select2Multiple}
@@ -110,7 +104,7 @@ class TableModal(MultiQueryModalMixin, QueryBuilderModalBase):
110
104
  ]
111
105
 
112
106
  if self.object.id:
113
- self.add_extra_queries(form=form, fields=fields, show_order_by=False)
107
+ self.add_extra_queries(form=form, fields=fields)
114
108
 
115
109
  return fields
116
110
 
@@ -124,15 +118,6 @@ class TableModal(MultiQueryModalMixin, QueryBuilderModalBase):
124
118
  self.add_command('reload')
125
119
  return self.command_response()
126
120
 
127
- def post_save(self, created, form):
128
- if created:
129
- self.modal_redirect(self.request.resolver_match.view_name, slug=f'pk-{self.object.id}-new-True')
130
- else:
131
- url_name = getattr(settings, 'REPORT_BUILDER_DETAIL_URL_NAME', '')
132
- if url_name and self.slug.get('new'):
133
- url = reverse(url_name, kwargs={'slug': self.object.slug})
134
- self.command_response('redirect', url=url)
135
-
136
121
  def ajax_get_fields(self, **kwargs):
137
122
  report_type_id = kwargs['report_type']
138
123
  report_builder_class, base_model = self.get_report_builder_class(report_type_id=report_type_id)
@@ -161,7 +146,6 @@ class TableModal(MultiQueryModalMixin, QueryBuilderModalBase):
161
146
  search_string=kwargs.get('search'))
162
147
 
163
148
 
164
-
165
149
  class TableFieldForm(ChartBaseFieldForm):
166
150
  cancel_class = 'btn-secondary modal-cancel'
167
151
 
@@ -415,14 +399,3 @@ class TablePivotModal(QueryBuilderModalBaseMixin, FormModal):
415
399
  self.add_command({'function': 'update_pivot_selection'})
416
400
  return self.command_response('close')
417
401
 
418
-
419
- class QueryForm(ModelCrispyForm):
420
- cancel_class = 'btn-secondary modal-cancel'
421
-
422
- class Meta:
423
- model = ReportQuery
424
- fields = ['name',
425
- 'query']
426
-
427
- def submit_button(self, css_class='btn-success modal-submit', button_text='Submit', **kwargs):
428
- return StrictButton(button_text, onclick=f'save_modal_{self.form_id}()', css_class=css_class, **kwargs)