django-advanced-report-builder 1.2.9__py3-none-any.whl

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.
Files changed (360) hide show
  1. advanced_report_builder/.DS_Store +0 -0
  2. advanced_report_builder/.ruff_cache/.gitignore +2 -0
  3. advanced_report_builder/.ruff_cache/0.11.9/16555798982502606642 +0 -0
  4. advanced_report_builder/.ruff_cache/CACHEDIR.TAG +1 -0
  5. advanced_report_builder/__init__.py +0 -0
  6. advanced_report_builder/admin.py +264 -0
  7. advanced_report_builder/apps.py +7 -0
  8. advanced_report_builder/column_types.py +26 -0
  9. advanced_report_builder/columns.py +296 -0
  10. advanced_report_builder/customise.py +2 -0
  11. advanced_report_builder/data_merge/__init__.py +0 -0
  12. advanced_report_builder/data_merge/utils.py +112 -0
  13. advanced_report_builder/data_merge/widget.py +30 -0
  14. advanced_report_builder/duplicate.py +171 -0
  15. advanced_report_builder/exceptions.py +9 -0
  16. advanced_report_builder/field_types.py +466 -0
  17. advanced_report_builder/field_utils.py +401 -0
  18. advanced_report_builder/filter_query.py +862 -0
  19. advanced_report_builder/form_utils.py +12 -0
  20. advanced_report_builder/generate_series.py +14 -0
  21. advanced_report_builder/globals.py +276 -0
  22. advanced_report_builder/includes.py +72 -0
  23. advanced_report_builder/migrations/0001_initial.py +246 -0
  24. advanced_report_builder/migrations/0002_auto_20220209_1657.py +23 -0
  25. advanced_report_builder/migrations/0003_auto_20220215_1219.py +42 -0
  26. advanced_report_builder/migrations/0004_customreport.py +27 -0
  27. advanced_report_builder/migrations/0005_auto_20220303_0958.py +84 -0
  28. advanced_report_builder/migrations/0006_auto_20220310_1147.py +32 -0
  29. advanced_report_builder/migrations/0007_auto_20220322_1939.py +23 -0
  30. advanced_report_builder/migrations/0008_auto_20220404_1144.py +28 -0
  31. advanced_report_builder/migrations/0009_auto_20230428_1554.py +53 -0
  32. advanced_report_builder/migrations/0010_auto_20230428_2033.py +23 -0
  33. advanced_report_builder/migrations/0011_auto_20230620_1449.py +23 -0
  34. advanced_report_builder/migrations/0012_auto_20230718_1642.py +24 -0
  35. advanced_report_builder/migrations/0013_reportqueryorder.py +30 -0
  36. advanced_report_builder/migrations/0014_auto_20240706_2207.py +24 -0
  37. advanced_report_builder/migrations/0015_report_user_created_report_user_updated.py +26 -0
  38. advanced_report_builder/migrations/0016_calendarreport_dashboardreport_options_and_more.py +74 -0
  39. advanced_report_builder/migrations/0017_alter_barchartreport_options_and_more.py +57 -0
  40. advanced_report_builder/migrations/0018_reportquery_target_target_period_type.py +24 -0
  41. advanced_report_builder/migrations/0019_multicellstyle_and_more.py +107 -0
  42. advanced_report_builder/migrations/0020_alter_multicellstyle_font_size.py +18 -0
  43. advanced_report_builder/migrations/0021_multivalueheldquery_and_more.py +36 -0
  44. advanced_report_builder/migrations/0022_dashboardreport_show_options_report_template_style_and_more.py +44 -0
  45. advanced_report_builder/migrations/0023_rename_colour_target_default_colour_and_more.py +41 -0
  46. advanced_report_builder/migrations/0024_alter_target_period_type.py +18 -0
  47. advanced_report_builder/migrations/__init__.py +0 -0
  48. advanced_report_builder/models.py +954 -0
  49. advanced_report_builder/report_builder.py +28 -0
  50. advanced_report_builder/signals.py +3 -0
  51. advanced_report_builder/static/.DS_Store +0 -0
  52. advanced_report_builder/static/advanced_report_builder/.DS_Store +0 -0
  53. advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.esm.js +10553 -0
  54. advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.js +13190 -0
  55. advanced_report_builder/static/advanced_report_builder/chart-js/js/chart.min.js +13 -0
  56. advanced_report_builder/static/advanced_report_builder/chart-js/js/chartjs-adapter-moment.min.js +8 -0
  57. advanced_report_builder/static/advanced_report_builder/chart-js/js/chartjs-plugin-datalabels.min.js +7 -0
  58. advanced_report_builder/static/advanced_report_builder/chart-js/js/chunks/helpers.segment.js +2499 -0
  59. advanced_report_builder/static/advanced_report_builder/chart-js/js/helpers.esm.js +7 -0
  60. advanced_report_builder/static/advanced_report_builder/d3/js/d3.js +20196 -0
  61. advanced_report_builder/static/advanced_report_builder/d3/js/d3.min.js +2 -0
  62. advanced_report_builder/static/advanced_report_builder/d3-funnel/js/d3-funnel.js +6087 -0
  63. advanced_report_builder/static/advanced_report_builder/d3-funnel/js/d3-funnel.min.js +2 -0
  64. advanced_report_builder/static/advanced_report_builder/dashboard/js/dashboard.js +19 -0
  65. advanced_report_builder/static/advanced_report_builder/dot/js/.gitignore +31 -0
  66. advanced_report_builder/static/advanced_report_builder/dot/js/.travis.yml +9 -0
  67. advanced_report_builder/static/advanced_report_builder/dot/js/LICENSE-DOT.txt +24 -0
  68. advanced_report_builder/static/advanced_report_builder/dot/js/README.md +90 -0
  69. advanced_report_builder/static/advanced_report_builder/dot/js/bin/dot-packer +52 -0
  70. advanced_report_builder/static/advanced_report_builder/dot/js/bower.json +21 -0
  71. advanced_report_builder/static/advanced_report_builder/dot/js/doT.js +141 -0
  72. advanced_report_builder/static/advanced_report_builder/dot/js/doT.min.js +8 -0
  73. advanced_report_builder/static/advanced_report_builder/dot/js/doU.js +56 -0
  74. advanced_report_builder/static/advanced_report_builder/dot/js/index.js +143 -0
  75. advanced_report_builder/static/advanced_report_builder/dot/js/package.json +46 -0
  76. advanced_report_builder/static/advanced_report_builder/fullcalendar/.DS_Store +0 -0
  77. advanced_report_builder/static/advanced_report_builder/fullcalendar/LICENSE.txt +20 -0
  78. advanced_report_builder/static/advanced_report_builder/fullcalendar/README.md +10 -0
  79. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/LICENSE.txt +20 -0
  80. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/README.md +8 -0
  81. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/af.js +30 -0
  82. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ar-dz.js +31 -0
  83. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ar-kw.js +31 -0
  84. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ar-ly.js +31 -0
  85. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ar-ma.js +31 -0
  86. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ar-sa.js +31 -0
  87. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ar-tn.js +31 -0
  88. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ar.js +31 -0
  89. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/bg.js +31 -0
  90. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/bs.js +32 -0
  91. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ca.js +30 -0
  92. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/cs.js +32 -0
  93. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/da.js +30 -0
  94. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/de.js +33 -0
  95. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/el.js +30 -0
  96. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/en-au.js +17 -0
  97. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/en-gb.js +17 -0
  98. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/en-nz.js +17 -0
  99. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/es-us.js +30 -0
  100. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/es.js +30 -0
  101. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/et.js +32 -0
  102. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/eu.js +30 -0
  103. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/fa.js +33 -0
  104. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/fi.js +30 -0
  105. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/fr-ca.js +27 -0
  106. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/fr-ch.js +31 -0
  107. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/fr.js +31 -0
  108. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/gl.js +30 -0
  109. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/he.js +27 -0
  110. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/hi.js +32 -0
  111. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/hr.js +32 -0
  112. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/hu.js +30 -0
  113. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/id.js +30 -0
  114. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/is.js +30 -0
  115. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/it.js +32 -0
  116. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ja.js +28 -0
  117. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ka.js +32 -0
  118. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/kk.js +32 -0
  119. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ko.js +26 -0
  120. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/lb.js +30 -0
  121. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/lt.js +30 -0
  122. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/lv.js +32 -0
  123. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/mk.js +28 -0
  124. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ms.js +32 -0
  125. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/nb.js +30 -0
  126. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/nl.js +30 -0
  127. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/nn.js +30 -0
  128. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/pl.js +30 -0
  129. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/pt-br.js +28 -0
  130. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/pt.js +30 -0
  131. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ro.js +32 -0
  132. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/ru.js +32 -0
  133. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/sk.js +32 -0
  134. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/sl.js +30 -0
  135. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/sq.js +32 -0
  136. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/sr-cyrl.js +32 -0
  137. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/sr.js +32 -0
  138. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/sv.js +30 -0
  139. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/th.js +25 -0
  140. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/tr.js +30 -0
  141. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/uk.js +32 -0
  142. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/vi.js +32 -0
  143. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/zh-cn.js +33 -0
  144. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales/zh-tw.js +26 -0
  145. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales-all.js +1348 -0
  146. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/locales-all.min.js +1 -0
  147. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/main.css +1052 -0
  148. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/main.d.ts +2730 -0
  149. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/main.esm.js +8558 -0
  150. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/main.js +8717 -0
  151. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/main.min.css +1 -0
  152. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/main.min.js +6 -0
  153. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/core/package.json +30 -0
  154. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/daygrid/LICENSE.txt +20 -0
  155. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/daygrid/README.md +8 -0
  156. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/daygrid/main.css +78 -0
  157. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/daygrid/main.d.ts +310 -0
  158. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/daygrid/main.esm.js +1627 -0
  159. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/daygrid/main.js +1641 -0
  160. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/daygrid/main.min.css +1 -0
  161. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/daygrid/main.min.js +6 -0
  162. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/daygrid/package.json +33 -0
  163. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/fullcalendar-yearview/LICENSE +21 -0
  164. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/fullcalendar-yearview/css/main.css +85 -0
  165. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/fullcalendar-yearview/js/main.js +2018 -0
  166. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/google-calendar/LICENSE.txt +20 -0
  167. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/google-calendar/README.md +8 -0
  168. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/google-calendar/main.d.ts +20 -0
  169. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/google-calendar/main.esm.js +162 -0
  170. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/google-calendar/main.js +170 -0
  171. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/google-calendar/main.min.js +6 -0
  172. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/google-calendar/package.json +33 -0
  173. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/interaction/LICENSE.txt +20 -0
  174. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/interaction/README.md +8 -0
  175. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/interaction/main.d.ts +323 -0
  176. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/interaction/main.esm.js +2132 -0
  177. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/interaction/main.js +2143 -0
  178. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/interaction/main.min.js +6 -0
  179. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/interaction/package.json +33 -0
  180. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/list/LICENSE.txt +20 -0
  181. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/list/README.md +8 -0
  182. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/list/main.css +118 -0
  183. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/list/main.d.ts +33 -0
  184. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/list/main.esm.js +335 -0
  185. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/list/main.js +343 -0
  186. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/list/main.min.css +1 -0
  187. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/list/main.min.js +6 -0
  188. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/list/package.json +33 -0
  189. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/luxon/LICENSE.txt +20 -0
  190. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/luxon/README.md +8 -0
  191. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/luxon/main.d.ts +14 -0
  192. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/luxon/main.esm.js +162 -0
  193. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/luxon/main.js +170 -0
  194. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/luxon/main.min.js +6 -0
  195. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/luxon/package.json +34 -0
  196. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment/LICENSE.txt +20 -0
  197. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment/README.md +8 -0
  198. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment/main.d.ts +14 -0
  199. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment/main.esm.js +102 -0
  200. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment/main.js +110 -0
  201. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment/main.min.js +6 -0
  202. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment/package.json +34 -0
  203. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment-timezone/LICENSE.txt +20 -0
  204. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment-timezone/README.md +8 -0
  205. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment-timezone/main.d.ts +11 -0
  206. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment-timezone/main.esm.js +58 -0
  207. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment-timezone/main.js +64 -0
  208. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment-timezone/main.min.js +6 -0
  209. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/moment-timezone/package.json +35 -0
  210. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/rrule/LICENSE.txt +20 -0
  211. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/rrule/README.md +8 -0
  212. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/rrule/main.d.ts +9 -0
  213. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/rrule/main.esm.js +121 -0
  214. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/rrule/main.js +128 -0
  215. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/rrule/main.min.js +6 -0
  216. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/rrule/package.json +34 -0
  217. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/timegrid/LICENSE.txt +20 -0
  218. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/timegrid/README.md +8 -0
  219. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/timegrid/main.css +309 -0
  220. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/timegrid/main.d.ts +220 -0
  221. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/timegrid/main.esm.js +1345 -0
  222. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/timegrid/main.js +1357 -0
  223. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/timegrid/main.min.css +1 -0
  224. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/timegrid/main.min.js +6 -0
  225. advanced_report_builder/static/advanced_report_builder/fullcalendar/packages/timegrid/package.json +36 -0
  226. advanced_report_builder/static/advanced_report_builder/fullcalendar/vendor/rrule.js +3782 -0
  227. advanced_report_builder/static/advanced_report_builder/jquery_extendext/js/jQuery.extendext.js +132 -0
  228. advanced_report_builder/static/advanced_report_builder/jquery_extendext/js/jQuery.extendext.min.js +9 -0
  229. advanced_report_builder/static/advanced_report_builder/moment/locales.js +9769 -0
  230. advanced_report_builder/static/advanced_report_builder/moment/locales.min.js +1 -0
  231. advanced_report_builder/static/advanced_report_builder/moment/moment-with-locales.js +14289 -0
  232. advanced_report_builder/static/advanced_report_builder/moment/moment-with-locales.min.js +1 -0
  233. advanced_report_builder/static/advanced_report_builder/moment/moment.min.js +1 -0
  234. advanced_report_builder/static/advanced_report_builder/query_builder/.DS_Store +0 -0
  235. advanced_report_builder/static/advanced_report_builder/query_builder/css/.DS_Store +0 -0
  236. advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.dark.css +173 -0
  237. advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.dark.min.css +6 -0
  238. advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.default.css +173 -0
  239. advanced_report_builder/static/advanced_report_builder/query_builder/css/query-builder.default.min.css +6 -0
  240. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ar.js +80 -0
  241. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.az.js +79 -0
  242. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.bg.js +79 -0
  243. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.cs.js +79 -0
  244. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.da.js +56 -0
  245. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.de.js +76 -0
  246. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.el.js +80 -0
  247. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.en.js +83 -0
  248. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.es.js +81 -0
  249. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.fa-IR.js +79 -0
  250. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.fr.js +83 -0
  251. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.he.js +81 -0
  252. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.it.js +79 -0
  253. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.nl.js +76 -0
  254. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.no.js +54 -0
  255. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pl.js +80 -0
  256. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pt-BR.js +80 -0
  257. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.pt-PT.js +75 -0
  258. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ro.js +54 -0
  259. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ru.js +77 -0
  260. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.sq.js +78 -0
  261. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.tr.js +82 -0
  262. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.ua.js +79 -0
  263. advanced_report_builder/static/advanced_report_builder/query_builder/i18n/query-builder.zh-CN.js +80 -0
  264. advanced_report_builder/static/advanced_report_builder/query_builder/js/.DS_Store +0 -0
  265. advanced_report_builder/static/advanced_report_builder/query_builder/js/plugins/.DS_Store +0 -0
  266. advanced_report_builder/static/advanced_report_builder/query_builder/js/plugins/currency/plugin.js +30 -0
  267. advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.js +6200 -0
  268. advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.min.js +7 -0
  269. advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.standalone.js +6477 -0
  270. advanced_report_builder/static/advanced_report_builder/query_builder/js/query-builder.standalone.min.js +7 -0
  271. advanced_report_builder/static/advanced_report_builder/query_builder/scss/.DS_Store +0 -0
  272. advanced_report_builder/static/advanced_report_builder/query_builder/scss/dark.scss +19 -0
  273. advanced_report_builder/static/advanced_report_builder/query_builder/scss/default.scss +186 -0
  274. advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_bt-checkbox.scss +12 -0
  275. advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_bt-tooltip-errors.scss +9 -0
  276. advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_filter-description.scss +21 -0
  277. advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_invert.scss +5 -0
  278. advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/_sortable.scss +28 -0
  279. advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/bt-tooltip-errors.scss +9 -0
  280. advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/filter-description.scss +21 -0
  281. advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/invert.scss +5 -0
  282. advanced_report_builder/static/advanced_report_builder/query_builder/scss/plugins/sortable.scss +27 -0
  283. advanced_report_builder/template_types.py +34 -0
  284. advanced_report_builder/templates/advanced_report_builder/calendar/description_modal.html +12 -0
  285. advanced_report_builder/templates/advanced_report_builder/calendar/middle.html +33 -0
  286. advanced_report_builder/templates/advanced_report_builder/calendar/modal.html +10 -0
  287. advanced_report_builder/templates/advanced_report_builder/calendar/report.html +80 -0
  288. advanced_report_builder/templates/advanced_report_builder/charts/bar/middle.html +122 -0
  289. advanced_report_builder/templates/advanced_report_builder/charts/funnel/middle.html +46 -0
  290. advanced_report_builder/templates/advanced_report_builder/charts/funnel/report.html +34 -0
  291. advanced_report_builder/templates/advanced_report_builder/charts/line/middle.html +119 -0
  292. advanced_report_builder/templates/advanced_report_builder/charts/modal.html +12 -0
  293. advanced_report_builder/templates/advanced_report_builder/charts/modal_field.html +13 -0
  294. advanced_report_builder/templates/advanced_report_builder/charts/pie/middle.html +58 -0
  295. advanced_report_builder/templates/advanced_report_builder/charts/report.html +33 -0
  296. advanced_report_builder/templates/advanced_report_builder/data_merge/data_merge.html +144 -0
  297. advanced_report_builder/templates/advanced_report_builder/datatables/fields/modal.html +13 -0
  298. advanced_report_builder/templates/advanced_report_builder/datatables/fields/single_query_builder.html +87 -0
  299. advanced_report_builder/templates/advanced_report_builder/datatables/modal.html +13 -0
  300. advanced_report_builder/templates/advanced_report_builder/datatables/onclick_menu.html +14 -0
  301. advanced_report_builder/templates/advanced_report_builder/datatables/report.html +37 -0
  302. advanced_report_builder/templates/advanced_report_builder/datatables/select_pivot.html +199 -0
  303. advanced_report_builder/templates/advanced_report_builder/error.html +21 -0
  304. advanced_report_builder/templates/advanced_report_builder/extra_query_modal.html +13 -0
  305. advanced_report_builder/templates/advanced_report_builder/kanban/description_modal.html +12 -0
  306. advanced_report_builder/templates/advanced_report_builder/kanban/middle.html +63 -0
  307. advanced_report_builder/templates/advanced_report_builder/kanban/modal.html +10 -0
  308. advanced_report_builder/templates/advanced_report_builder/kanban/report.html +71 -0
  309. advanced_report_builder/templates/advanced_report_builder/multi_values/held_modal.html +14 -0
  310. advanced_report_builder/templates/advanced_report_builder/multi_values/middle.html +61 -0
  311. advanced_report_builder/templates/advanced_report_builder/multi_values/modal.html +15 -0
  312. advanced_report_builder/templates/advanced_report_builder/multi_values/report.html +19 -0
  313. advanced_report_builder/templates/advanced_report_builder/query_builder.html +88 -0
  314. advanced_report_builder/templates/advanced_report_builder/query_modal.html +12 -0
  315. advanced_report_builder/templates/advanced_report_builder/select_column.html +230 -0
  316. advanced_report_builder/templates/advanced_report_builder/single_values/gauge_middle.html +143 -0
  317. advanced_report_builder/templates/advanced_report_builder/single_values/middle.html +63 -0
  318. advanced_report_builder/templates/advanced_report_builder/single_values/modal.html +13 -0
  319. advanced_report_builder/templates/advanced_report_builder/single_values/report.html +56 -0
  320. advanced_report_builder/toggle.py +9 -0
  321. advanced_report_builder/urls.py +237 -0
  322. advanced_report_builder/utils.py +171 -0
  323. advanced_report_builder/variable_date.py +670 -0
  324. advanced_report_builder/view_types.py +27 -0
  325. advanced_report_builder/views/.DS_Store +0 -0
  326. advanced_report_builder/views/__init__.py +0 -0
  327. advanced_report_builder/views/bar_charts.py +746 -0
  328. advanced_report_builder/views/calendar.py +745 -0
  329. advanced_report_builder/views/charts_base.py +625 -0
  330. advanced_report_builder/views/custom.py +147 -0
  331. advanced_report_builder/views/dashboard.py +357 -0
  332. advanced_report_builder/views/datatables/__init__.py +0 -0
  333. advanced_report_builder/views/datatables/datatables.py +151 -0
  334. advanced_report_builder/views/datatables/modal.py +1151 -0
  335. advanced_report_builder/views/datatables/utils.py +701 -0
  336. advanced_report_builder/views/error_pod.py +50 -0
  337. advanced_report_builder/views/funnel_charts.py +289 -0
  338. advanced_report_builder/views/helpers.py +22 -0
  339. advanced_report_builder/views/kanban.py +868 -0
  340. advanced_report_builder/views/line_charts.py +415 -0
  341. advanced_report_builder/views/modals_base.py +213 -0
  342. advanced_report_builder/views/multi_value.py +1160 -0
  343. advanced_report_builder/views/pie_charts.py +290 -0
  344. advanced_report_builder/views/query_modal/__init__.py +0 -0
  345. advanced_report_builder/views/query_modal/mixin.py +161 -0
  346. advanced_report_builder/views/query_modal/modal.py +274 -0
  347. advanced_report_builder/views/report.py +241 -0
  348. advanced_report_builder/views/report_utils_mixin.py +312 -0
  349. advanced_report_builder/views/reports.py +154 -0
  350. advanced_report_builder/views/single_values.py +792 -0
  351. advanced_report_builder/views/targets/__init__.py +0 -0
  352. advanced_report_builder/views/targets/utils.py +251 -0
  353. advanced_report_builder/views/targets/views.py +139 -0
  354. advanced_report_builder/views/value_base.py +198 -0
  355. advanced_report_builder/widgets.py +5 -0
  356. django_advanced_report_builder-1.2.9.dist-info/METADATA +35 -0
  357. django_advanced_report_builder-1.2.9.dist-info/RECORD +360 -0
  358. django_advanced_report_builder-1.2.9.dist-info/WHEEL +5 -0
  359. django_advanced_report_builder-1.2.9.dist-info/licenses/LICENSE +21 -0
  360. django_advanced_report_builder-1.2.9.dist-info/top_level.txt +1 -0
@@ -0,0 +1,12 @@
1
+ from django.forms import TextInput
2
+ from django_modals.fields import FieldEx
3
+
4
+
5
+ class PercentageWidget(TextInput):
6
+ crispy_kwargs = {'appended_text': '%', 'field_class': 'col-sm-3', 'input_size': 'input-group-sm'}
7
+ crispy_field_class = FieldEx
8
+
9
+
10
+ class SmallInputWidget(TextInput):
11
+ crispy_kwargs = {'field_class': 'col-sm-3', 'input_size': 'input-group-sm'}
12
+ crispy_field_class = FieldEx
@@ -0,0 +1,14 @@
1
+ from django.db.models import Func
2
+ from django.db.models.expressions import RawSQL
3
+
4
+
5
+ class GenerateSeries(Func):
6
+ function = 'GENERATE_SERIES'
7
+
8
+ def __init__(self, start_date_field, end_date_field, interval='1 month', output_field=None):
9
+ expressions = [
10
+ start_date_field,
11
+ end_date_field,
12
+ RawSQL('%s', [interval]),
13
+ ]
14
+ super().__init__(*expressions, output_field=output_field)
@@ -0,0 +1,276 @@
1
+ from enum import Enum
2
+
3
+ from django.db.models import Avg, Count, Max, Min, Sum
4
+ from django.db.models.functions import (
5
+ TruncDay,
6
+ TruncMonth,
7
+ TruncQuarter,
8
+ TruncWeek,
9
+ TruncYear,
10
+ )
11
+
12
+ REVERSE_FOREIGN_KEY_DELIMITER_COMMA = 1
13
+ REVERSE_FOREIGN_KEY_DELIMITER_SEMICOLON = 2
14
+ REVERSE_FOREIGN_KEY_DELIMITER_PIPE = 3
15
+ REVERSE_FOREIGN_KEY_DELIMITER_DASH = 4
16
+ REVERSE_FOREIGN_KEY_DELIMITER_SPACE = 5
17
+
18
+ REVERSE_FOREIGN_KEY_DELIMITER_CHOICES = [
19
+ (REVERSE_FOREIGN_KEY_DELIMITER_COMMA, ', '),
20
+ (REVERSE_FOREIGN_KEY_DELIMITER_SEMICOLON, ';'),
21
+ (REVERSE_FOREIGN_KEY_DELIMITER_PIPE, ' | '),
22
+ (REVERSE_FOREIGN_KEY_DELIMITER_DASH, ' - '),
23
+ (REVERSE_FOREIGN_KEY_DELIMITER_SPACE, 'Space'),
24
+ ]
25
+
26
+ REVERSE_FOREIGN_KEY_DELIMITER_VALUES = {
27
+ REVERSE_FOREIGN_KEY_DELIMITER_COMMA: ', ',
28
+ REVERSE_FOREIGN_KEY_DELIMITER_SEMICOLON: ';',
29
+ REVERSE_FOREIGN_KEY_DELIMITER_PIPE: ' | ',
30
+ REVERSE_FOREIGN_KEY_DELIMITER_DASH: ' - ',
31
+ REVERSE_FOREIGN_KEY_DELIMITER_SPACE: ' ',
32
+ }
33
+
34
+ ANNOTATION_VALUE_YEAR = 1
35
+ ANNOTATION_VALUE_QUARTER = 2
36
+ ANNOTATION_VALUE_MONTH = 3
37
+ ANNOTATION_VALUE_WEEK = 4
38
+ ANNOTATION_VALUE_DAY = 5
39
+ ANNOTATION_VALUE_FINANCIAL_QUARTER = 6 # not used yet
40
+
41
+ ANNOTATION_VALUE_CHOICES = [
42
+ (ANNOTATION_VALUE_YEAR, 'Year'),
43
+ (ANNOTATION_VALUE_QUARTER, 'Quarter'),
44
+ # (ANNOTATION_VALUE_FINANCIAL_QUARTER, 'Financial Quarter'),
45
+ (ANNOTATION_VALUE_MONTH, 'Month'),
46
+ (ANNOTATION_VALUE_WEEK, 'Week'),
47
+ (ANNOTATION_VALUE_DAY, 'Day'),
48
+ ]
49
+
50
+ ANNOTATION_VALUE_FUNCTIONS = {
51
+ ANNOTATION_VALUE_YEAR: TruncYear,
52
+ ANNOTATION_VALUE_QUARTER: TruncQuarter,
53
+ ANNOTATION_VALUE_MONTH: TruncMonth,
54
+ ANNOTATION_VALUE_WEEK: TruncWeek,
55
+ ANNOTATION_VALUE_DAY: TruncDay,
56
+ }
57
+
58
+ REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_XOR = 1
59
+ REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_AND = 2
60
+ REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_ARRAY = 3
61
+
62
+ REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_CHOICES = [
63
+ (REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_XOR, 'XOR'),
64
+ (REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_AND, 'And'),
65
+ (REVERSE_FOREIGN_KEY_ANNOTATION_BOOLEAN_ARRAY, 'Array'),
66
+ ]
67
+
68
+ REVERSE_FOREIGN_KEY_ANNOTATION_DATE_ARRAY = 1
69
+ REVERSE_FOREIGN_KEY_ANNOTATION_DATE_MIN = 2
70
+ REVERSE_FOREIGN_KEY_ANNOTATION_DATE_MAX = 3
71
+
72
+ REVERSE_FOREIGN_KEY_ANNOTATION_DATE_CHOICES = [
73
+ (REVERSE_FOREIGN_KEY_ANNOTATION_DATE_ARRAY, 'Array'),
74
+ (REVERSE_FOREIGN_KEY_ANNOTATION_DATE_MIN, 'Min'),
75
+ (REVERSE_FOREIGN_KEY_ANNOTATION_DATE_MAX, 'Max'),
76
+ ]
77
+
78
+ ANNOTATION_CHART_SCALE = {
79
+ ANNOTATION_VALUE_YEAR: 'year',
80
+ ANNOTATION_VALUE_QUARTER: 'quarter',
81
+ ANNOTATION_VALUE_MONTH: 'month',
82
+ ANNOTATION_VALUE_WEEK: 'week',
83
+ ANNOTATION_VALUE_DAY: 'day',
84
+ }
85
+
86
+ GENERATE_SERIES_INTERVALS = {
87
+ ANNOTATION_VALUE_YEAR: '1 year',
88
+ ANNOTATION_VALUE_QUARTER: '3 month',
89
+ ANNOTATION_VALUE_MONTH: '1 month',
90
+ ANNOTATION_VALUE_WEEK: '1 week',
91
+ ANNOTATION_VALUE_DAY: '1 day',
92
+ }
93
+
94
+ ANNOTATION_CHOICE_NA = 0
95
+ ANNOTATION_CHOICE_SUM = 1
96
+ ANNOTATION_CHOICE_MAXIMUM = 2
97
+ ANNOTATION_CHOICE_MINIMUM = 3
98
+ ANNOTATION_CHOICE_COUNT = 4
99
+ ANNOTATION_CHOICE_AVERAGE_SUM_FROM_COUNT = 5
100
+
101
+ ANNOTATIONS_CHOICES = [
102
+ (ANNOTATION_CHOICE_SUM, 'Sum'),
103
+ (ANNOTATION_CHOICE_MAXIMUM, 'Maximum'),
104
+ (ANNOTATION_CHOICE_MINIMUM, 'Minimum'),
105
+ (ANNOTATION_CHOICE_COUNT, 'Count'),
106
+ (ANNOTATION_CHOICE_AVERAGE_SUM_FROM_COUNT, 'Average Sum from Count'),
107
+ ]
108
+
109
+ ANNOTATION_FUNCTIONS = {
110
+ ANNOTATION_CHOICE_SUM: Sum,
111
+ ANNOTATION_CHOICE_MAXIMUM: Max,
112
+ ANNOTATION_CHOICE_MINIMUM: Min,
113
+ ANNOTATION_CHOICE_COUNT: Count,
114
+ ANNOTATION_CHOICE_AVERAGE_SUM_FROM_COUNT: Avg,
115
+ }
116
+
117
+ AGGREGATE_CLASSES = (Sum, Avg, Max, Min, Count)
118
+
119
+ ALIGNMENT_CHOICE_LEFT = 0
120
+ ALIGNMENT_CHOICE_CENTRE = 1
121
+ ALIGNMENT_CHOICE_RIGHT = 2
122
+
123
+ ALIGNMENT_CHOICES = [
124
+ (ALIGNMENT_CHOICE_LEFT, 'Left'),
125
+ (ALIGNMENT_CHOICE_CENTRE, 'Centre'),
126
+ (ALIGNMENT_CHOICE_RIGHT, 'Right'),
127
+ ]
128
+
129
+ ALIGNMENT_CLASS = {
130
+ ALIGNMENT_CHOICE_LEFT: '',
131
+ ALIGNMENT_CHOICE_CENTRE: 'dt-center',
132
+ ALIGNMENT_CHOICE_RIGHT: 'dt-right',
133
+ }
134
+
135
+ DATE_FORMAT_TYPE_DD_MM_YY_SLASH = 1
136
+ DATE_FORMAT_TYPE_DD_MM_YYYY_SLASH = 2
137
+ DATE_FORMAT_TYPE_MM_DD_YY_SLASH = 3
138
+ DATE_FORMAT_TYPE_MM_DD_YYYY_SLASH = 4
139
+ DATE_FORMAT_TYPE_DD_MM_YY_DASH = 5
140
+ DATE_FORMAT_TYPE_DD_MM_YYYY_DASH = 6
141
+ DATE_FORMAT_TYPE_MM_DD_YY_DASH = 7
142
+ DATE_FORMAT_TYPE_MM_DD_YYYY_DASH = 8
143
+ DATE_FORMAT_TYPE_WORDS_MM_DD_YYYY = 9
144
+ DATE_FORMAT_TYPE_WORDS_DD_MM_YYYY = 10
145
+ DATE_FORMAT_TYPE_SHORT_WORDS_MM_DD_YYYY = 11
146
+ DATE_FORMAT_TYPE_SHORT_WORDS_DD_MM_YYYY = 12
147
+ DATE_FORMAT_TYPE_YYYY = 13
148
+ DATE_FORMAT_TYPE_YY = 14
149
+ DATE_FORMAT_TYPE_MM_YY = 15
150
+ DATE_FORMAT_TYPE_MM_YYYY = 16
151
+ DATE_FORMAT_TYPE_WORDS_MM_YY = 17
152
+ DATE_FORMAT_TYPE_WORDS_MM_YYYY = 18
153
+ DATE_FORMAT_TYPE_SHORT_WORDS_MM_YY = 19
154
+ DATE_FORMAT_TYPE_SHORT_WORDS_MM_YYYY = 20
155
+ DATE_FORMAT_TYPE_MM = 21
156
+ DATE_FORMAT_TYPE_WORDS_MM = 22
157
+ DATE_FORMAT_TYPE_SHORT_WORDS_MM = 23
158
+ DATE_FORMAT_TYPE_WW = 24
159
+ DATE_FORMAT_TYPE_WW_YYYY_DASH = 25
160
+ DATE_FORMAT_TYPE_WW_YY_DASH = 26
161
+ DATE_FORMAT_TYPE_YYYY_MM = 27
162
+
163
+
164
+ DATE_FORMAT_TYPES_DJANGO_FORMAT = {
165
+ DATE_FORMAT_TYPE_DD_MM_YY_SLASH: '%d/%m/%y',
166
+ DATE_FORMAT_TYPE_DD_MM_YYYY_SLASH: '%d/%m/%Y',
167
+ DATE_FORMAT_TYPE_MM_DD_YY_SLASH: '%m/%d/%y',
168
+ DATE_FORMAT_TYPE_MM_DD_YYYY_SLASH: '%m/%d/%Y',
169
+ DATE_FORMAT_TYPE_DD_MM_YY_DASH: '%d-%m-%y',
170
+ DATE_FORMAT_TYPE_DD_MM_YYYY_DASH: '%d-%m-%Y',
171
+ DATE_FORMAT_TYPE_MM_DD_YY_DASH: '%m-%d-%y',
172
+ DATE_FORMAT_TYPE_MM_DD_YYYY_DASH: '%m-%d-%Y',
173
+ DATE_FORMAT_TYPE_WORDS_MM_DD_YYYY: '%B %d %Y',
174
+ DATE_FORMAT_TYPE_WORDS_DD_MM_YYYY: '%d %B %Y',
175
+ DATE_FORMAT_TYPE_SHORT_WORDS_MM_DD_YYYY: '%b %d %Y',
176
+ DATE_FORMAT_TYPE_SHORT_WORDS_DD_MM_YYYY: '%d %b %Y',
177
+ DATE_FORMAT_TYPE_YYYY: '%Y',
178
+ DATE_FORMAT_TYPE_YY: '%y',
179
+ DATE_FORMAT_TYPE_MM_YY: '%m %y',
180
+ DATE_FORMAT_TYPE_YYYY_MM: '%Y %m',
181
+ DATE_FORMAT_TYPE_MM_YYYY: '%m %Y',
182
+ DATE_FORMAT_TYPE_WORDS_MM_YY: '%B %y',
183
+ DATE_FORMAT_TYPE_WORDS_MM_YYYY: '%B %Y',
184
+ DATE_FORMAT_TYPE_SHORT_WORDS_MM_YY: '%b %y',
185
+ DATE_FORMAT_TYPE_SHORT_WORDS_MM_YYYY: '%b %Y',
186
+ DATE_FORMAT_TYPE_MM: '%m',
187
+ DATE_FORMAT_TYPE_WORDS_MM: '%B',
188
+ DATE_FORMAT_TYPE_SHORT_WORDS_MM: '%b',
189
+ DATE_FORMAT_TYPE_WW: '%W',
190
+ DATE_FORMAT_TYPE_WW_YYYY_DASH: '%W-%Y',
191
+ DATE_FORMAT_TYPE_WW_YY_DASH: '%W-%y',
192
+ }
193
+
194
+ DATE_FORMAT_TYPES = [
195
+ (DATE_FORMAT_TYPE_DD_MM_YY_SLASH, 'dd/mm/yy'),
196
+ (DATE_FORMAT_TYPE_DD_MM_YYYY_SLASH, 'dd/mm/yyyy'),
197
+ (DATE_FORMAT_TYPE_MM_DD_YY_SLASH, 'mm/dd/yy'),
198
+ (DATE_FORMAT_TYPE_MM_DD_YYYY_SLASH, 'mm/dd/yyyy'),
199
+ (DATE_FORMAT_TYPE_DD_MM_YY_DASH, 'dd-mm-yy'),
200
+ (DATE_FORMAT_TYPE_DD_MM_YYYY_DASH, 'dd-mm-yyyy'),
201
+ (DATE_FORMAT_TYPE_MM_DD_YY_DASH, 'mm-dd-yy'),
202
+ (DATE_FORMAT_TYPE_MM_DD_YYYY_DASH, 'mm-dd-yyyy'),
203
+ (DATE_FORMAT_TYPE_WORDS_MM_DD_YYYY, 'MM d yyyy'),
204
+ (DATE_FORMAT_TYPE_WORDS_DD_MM_YYYY, 'd MM yyyy'),
205
+ (DATE_FORMAT_TYPE_SHORT_WORDS_MM_DD_YYYY, 'M d yyyy'),
206
+ (DATE_FORMAT_TYPE_SHORT_WORDS_DD_MM_YYYY, 'd M yyyy'),
207
+ (DATE_FORMAT_TYPE_YYYY, 'yyyy'),
208
+ (DATE_FORMAT_TYPE_YY, 'yy'),
209
+ (DATE_FORMAT_TYPE_MM_YY, 'mm yy'),
210
+ (DATE_FORMAT_TYPE_MM_YYYY, 'mm yyyy'),
211
+ (DATE_FORMAT_TYPE_YYYY_MM, 'yyyy mm'),
212
+ (DATE_FORMAT_TYPE_WORDS_MM_YY, 'MM yy'),
213
+ (DATE_FORMAT_TYPE_WORDS_MM_YYYY, 'MM yyyy'),
214
+ (DATE_FORMAT_TYPE_SHORT_WORDS_MM_YY, 'b yy'),
215
+ (DATE_FORMAT_TYPE_SHORT_WORDS_MM_YYYY, 'b yyyy'),
216
+ (DATE_FORMAT_TYPE_MM, 'mm'),
217
+ (DATE_FORMAT_TYPE_WORDS_MM, 'MM'),
218
+ (DATE_FORMAT_TYPE_SHORT_WORDS_MM, 'd'),
219
+ (DATE_FORMAT_TYPE_WW, 'WW'),
220
+ (DATE_FORMAT_TYPE_WW_YYYY_DASH, 'WW-YYYY'),
221
+ (DATE_FORMAT_TYPE_WW_YY_DASH, 'WW-YY'),
222
+ ]
223
+
224
+ DISPLAY_OPTION_NONE = 0
225
+ DISPLAY_OPTION_1_PER_ROW = 1
226
+ DISPLAY_OPTION_2_PER_ROW = 2
227
+ DISPLAY_OPTION_3_PER_ROW = 3
228
+ DISPLAY_OPTION_4_PER_ROW = 4
229
+
230
+ DISPLAY_OPTION_CHOICES = [
231
+ (DISPLAY_OPTION_NONE, 'None/Default'),
232
+ (DISPLAY_OPTION_1_PER_ROW, '1 Report per Row'),
233
+ (DISPLAY_OPTION_2_PER_ROW, '2 Reports per Row'),
234
+ (DISPLAY_OPTION_3_PER_ROW, '3 Reports per Row'),
235
+ (DISPLAY_OPTION_4_PER_ROW, '4 Reports per Row'),
236
+ ]
237
+
238
+ DISPLAY_OPTION_CLASSES = {
239
+ DISPLAY_OPTION_1_PER_ROW: ' col-12',
240
+ DISPLAY_OPTION_2_PER_ROW: ' col-12 col-md-12 col-lg-6',
241
+ DISPLAY_OPTION_3_PER_ROW: ' col-12 col-md-12 col-lg-4',
242
+ DISPLAY_OPTION_4_PER_ROW: ' col-12 col-md-12 col-lg-3',
243
+ }
244
+
245
+ DEFAULT_DATE_FORMAT = {
246
+ ANNOTATION_VALUE_YEAR: DATE_FORMAT_TYPE_YYYY,
247
+ ANNOTATION_VALUE_QUARTER: DATE_FORMAT_TYPE_WORDS_MM_YY,
248
+ ANNOTATION_VALUE_MONTH: DATE_FORMAT_TYPE_WORDS_MM_YY,
249
+ ANNOTATION_VALUE_WEEK: DATE_FORMAT_TYPE_WW_YY_DASH,
250
+ ANNOTATION_VALUE_DAY: DATE_FORMAT_TYPE_DD_MM_YY_SLASH,
251
+ }
252
+
253
+ CALENDAR_VIEW_TYPE_MONTH = 1
254
+ CALENDAR_VIEW_TYPE_GRID_WEEK = 2
255
+ CALENDAR_VIEW_TYPE_LIST_WEEK = 3
256
+ CALENDAR_VIEW_TYPE_DAY = 4
257
+ CALENDAR_VIEW_TYPE_YEAR = 5
258
+
259
+ CALENDAR_VIEW_TYPE_CHOICES = (
260
+ (CALENDAR_VIEW_TYPE_MONTH, 'Month'),
261
+ (CALENDAR_VIEW_TYPE_GRID_WEEK, 'Grid Week'),
262
+ (CALENDAR_VIEW_TYPE_LIST_WEEK, 'List Week'),
263
+ (CALENDAR_VIEW_TYPE_DAY, 'Day'),
264
+ (CALENDAR_VIEW_TYPE_YEAR, 'Year'),
265
+ )
266
+
267
+
268
+ class FieldType(Enum):
269
+ NULL_FIELD = 1
270
+ ABSTRACT_USER = 2
271
+ FILTER_FOREIGN_KEY = 3
272
+ STRING = 4
273
+ NUMBER = 5
274
+ BOOLEAN = 6
275
+ DATE = 7
276
+ MANY_TO_MANY = 8
@@ -0,0 +1,72 @@
1
+ # version = pip_version('django-advanced-report-builder')
2
+ from ajax_helpers.html_include import SourceBase
3
+
4
+
5
+ class Dot(SourceBase):
6
+ static_path = 'advanced_report_builder/dot/'
7
+ js_filename = 'doT.js'
8
+
9
+
10
+ class JQueryExtendext(SourceBase):
11
+ static_path = 'advanced_report_builder/jquery_extendext/'
12
+ js_filename = 'jQuery.extendext.js'
13
+
14
+
15
+ class QueryBuilder(SourceBase):
16
+ static_path = 'advanced_report_builder/query_builder/'
17
+ css_filename = 'query-builder.default.css'
18
+ js_filename = 'query-builder.min.js'
19
+
20
+
21
+ class DashboardInclude(SourceBase):
22
+ static_path = 'advanced_report_builder/dashboard/'
23
+ js_filename = 'dashboard.js'
24
+
25
+
26
+ class ChartJS(SourceBase):
27
+ static_path = 'advanced_report_builder/chart-js/'
28
+ js_filename = [
29
+ 'chart.min.js',
30
+ 'chartjs-adapter-moment.min.js', # this does require moment however it's already included
31
+ 'chartjs-plugin-datalabels.min.js',
32
+ ]
33
+
34
+
35
+ class D3(SourceBase):
36
+ static_path = 'advanced_report_builder/d3/'
37
+ js_filename = ['d3.min.js']
38
+
39
+
40
+ class D3Funnel(SourceBase):
41
+ static_path = 'advanced_report_builder/d3-funnel/'
42
+ js_filename = ['d3-funnel.min.js']
43
+
44
+
45
+ class FullCalendar(SourceBase):
46
+ static_path = 'advanced_report_builder/fullcalendar/packages/'
47
+
48
+ js_path = cdn_js_path = ''
49
+ css_path = cdn_css_path = ''
50
+
51
+ css_filename = ['core/main.css', 'daygrid/main.css', 'timegrid/main.css', 'list/main.css']
52
+
53
+ js_filename = ['core/main.js', 'interaction/main.js', 'daygrid/main.js', 'timegrid/main.js', 'list/main.js']
54
+
55
+
56
+ class Moment(SourceBase):
57
+ static_path = 'advanced_report_builder/moment/'
58
+ js_path = cdn_js_path = ''
59
+ js_filename = 'moment.min.js'
60
+
61
+
62
+ class FullCalendarYearView(SourceBase):
63
+ static_path = 'advanced_report_builder/fullcalendar/packages/fullcalendar-yearview/'
64
+ filename = 'main'
65
+
66
+
67
+ packages = {
68
+ 'query_builder': [JQueryExtendext, Dot, QueryBuilder],
69
+ 'full_calendar': [Moment, FullCalendar, FullCalendarYearView],
70
+ 'dashboard': [DashboardInclude],
71
+ 'funnel': [D3, D3Funnel],
72
+ }
@@ -0,0 +1,246 @@
1
+ # Generated by Django 3.2.7 on 2022-02-07 15:37
2
+
3
+ from django.db import migrations, models
4
+ import django.db.models.deletion
5
+ import time_stamped_model.models
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+
10
+ initial = True
11
+
12
+ dependencies = [
13
+ ('contenttypes', '0002_remove_content_type_name'),
14
+ ]
15
+
16
+ operations = [
17
+ migrations.CreateModel(
18
+ name='Dashboard',
19
+ fields=[
20
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
21
+ ('created', time_stamped_model.models.CreationDateTimeField(auto_now_add=True)),
22
+ ('modified', time_stamped_model.models.ModificationDateTimeField(auto_now=True)),
23
+ ('slug', models.SlugField(unique=True)),
24
+ ('slug_alias', models.SlugField(blank=True, null=True)),
25
+ ('name', models.CharField(max_length=200)),
26
+ ('display_option', models.PositiveIntegerField(choices=[(1, '1 Report per Row'), (2, '2 Reports per Row'), (3, '3 Reports per Row'), (4, '4 Reports per Row')], default=2)),
27
+ ],
28
+ options={
29
+ 'abstract': False,
30
+ },
31
+ ),
32
+ migrations.CreateModel(
33
+ name='Report',
34
+ fields=[
35
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
36
+ ('created', time_stamped_model.models.CreationDateTimeField(auto_now_add=True)),
37
+ ('modified', time_stamped_model.models.ModificationDateTimeField(auto_now=True)),
38
+ ('name', models.CharField(max_length=200)),
39
+ ('slug', models.SlugField(unique=True)),
40
+ ('slug_alias', models.SlugField(blank=True, null=True)),
41
+ ('instance_type', models.CharField(max_length=255, null=True)),
42
+ ('notes', models.TextField(blank=True, null=True)),
43
+ ('version', models.PositiveSmallIntegerField(default=0)),
44
+ ],
45
+ options={
46
+ 'ordering': ['name'],
47
+ },
48
+ ),
49
+ migrations.CreateModel(
50
+ name='ReportTag',
51
+ fields=[
52
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
53
+ ('created', time_stamped_model.models.CreationDateTimeField(auto_now_add=True)),
54
+ ('modified', time_stamped_model.models.ModificationDateTimeField(auto_now=True)),
55
+ ('name', models.CharField(max_length=128, unique=True)),
56
+ ('slug', models.SlugField(unique=True)),
57
+ ('order', models.PositiveSmallIntegerField()),
58
+ ],
59
+ options={
60
+ 'ordering': ('order',),
61
+ },
62
+ ),
63
+ migrations.CreateModel(
64
+ name='BarChartReport',
65
+ fields=[
66
+ ('report_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='advanced_report_builder.report')),
67
+ ('axis_scale', models.PositiveSmallIntegerField(choices=[(1, 'Year'), (2, 'Quarter'), (3, 'Month'), (4, 'Week'), (5, 'Day')])),
68
+ ('date_field', models.CharField(max_length=200)),
69
+ ('axis_value_type', models.PositiveSmallIntegerField(blank=True, choices=[(1, 'Sum'), (2, 'Max'), (3, 'Min'), (4, 'Count'), (5, 'Avg')], default=4, null=True)),
70
+ ('fields', models.JSONField(blank=True, null=True)),
71
+ ('x_label', models.CharField(blank=True, max_length=200, null=True)),
72
+ ('y_label', models.CharField(blank=True, max_length=200, null=True)),
73
+ ('bar_chart_orientation', models.PositiveSmallIntegerField(choices=[(1, 'Vertical'), (2, 'Horizontal')], default=1)),
74
+ ('stacked', models.BooleanField(default=False)),
75
+ ('show_totals', models.BooleanField(default=False)),
76
+ ('show_blank_dates', models.BooleanField(default=True)),
77
+ ],
78
+ options={
79
+ 'abstract': False,
80
+ },
81
+ bases=('advanced_report_builder.report',),
82
+ ),
83
+ migrations.CreateModel(
84
+ name='FunnelChartReport',
85
+ fields=[
86
+ ('report_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='advanced_report_builder.report')),
87
+ ('axis_value_type', models.PositiveSmallIntegerField(blank=True, choices=[(1, 'Sum'), (2, 'Max'), (3, 'Min'), (4, 'Count'), (5, 'Avg')], default=4, null=True)),
88
+ ('fields', models.JSONField(blank=True, null=True)),
89
+ ],
90
+ options={
91
+ 'abstract': False,
92
+ },
93
+ bases=('advanced_report_builder.report',),
94
+ ),
95
+ migrations.CreateModel(
96
+ name='KanbanReport',
97
+ fields=[
98
+ ('report_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='advanced_report_builder.report')),
99
+ ],
100
+ options={
101
+ 'abstract': False,
102
+ },
103
+ bases=('advanced_report_builder.report',),
104
+ ),
105
+ migrations.CreateModel(
106
+ name='LineChartReport',
107
+ fields=[
108
+ ('report_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='advanced_report_builder.report')),
109
+ ('axis_scale', models.PositiveSmallIntegerField(choices=[(1, 'Year'), (2, 'Quarter'), (3, 'Month'), (4, 'Week'), (5, 'Day')])),
110
+ ('date_field', models.CharField(max_length=200)),
111
+ ('axis_value_type', models.PositiveSmallIntegerField(blank=True, choices=[(1, 'Sum'), (2, 'Max'), (3, 'Min'), (4, 'Count'), (5, 'Avg')], default=4, null=True)),
112
+ ('fields', models.JSONField(blank=True, null=True)),
113
+ ('x_label', models.CharField(blank=True, max_length=200, null=True)),
114
+ ('y_label', models.CharField(blank=True, max_length=200, null=True)),
115
+ ('show_totals', models.BooleanField(default=False)),
116
+ ],
117
+ options={
118
+ 'abstract': False,
119
+ },
120
+ bases=('advanced_report_builder.report',),
121
+ ),
122
+ migrations.CreateModel(
123
+ name='PieChartReport',
124
+ fields=[
125
+ ('report_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='advanced_report_builder.report')),
126
+ ('axis_value_type', models.PositiveSmallIntegerField(blank=True, choices=[(1, 'Sum'), (2, 'Max'), (3, 'Min'), (4, 'Count'), (5, 'Avg')], default=4, null=True)),
127
+ ('fields', models.JSONField(blank=True, null=True)),
128
+ ('style', models.PositiveSmallIntegerField(choices=[(1, 'Pie'), (2, 'Doughnut')], default=1)),
129
+ ],
130
+ options={
131
+ 'abstract': False,
132
+ },
133
+ bases=('advanced_report_builder.report',),
134
+ ),
135
+ migrations.CreateModel(
136
+ name='SingleValueReport',
137
+ fields=[
138
+ ('report_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='advanced_report_builder.report')),
139
+ ('tile_colour', models.CharField(blank=True, max_length=10, null=True)),
140
+ ('field', models.CharField(blank=True, max_length=200, null=True)),
141
+ ('numerator', models.CharField(blank=True, max_length=200, null=True)),
142
+ ('single_value_type', models.PositiveSmallIntegerField(choices=[(1, 'Count'), (2, 'Sum'), (3, 'Count & Sum'), (4, 'Percent'), (5, 'Percent from Count'), (6, 'Average')], default=1)),
143
+ ('prefix', models.CharField(blank=True, max_length=64, null=True)),
144
+ ('decimal_places', models.IntegerField(default=0)),
145
+ ],
146
+ options={
147
+ 'abstract': False,
148
+ },
149
+ bases=('advanced_report_builder.report',),
150
+ ),
151
+ migrations.CreateModel(
152
+ name='TableReport',
153
+ fields=[
154
+ ('report_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='advanced_report_builder.report')),
155
+ ('table_fields', models.JSONField(blank=True, null=True)),
156
+ ('has_clickable_rows', models.BooleanField(default=False)),
157
+ ('link_field', models.CharField(blank=True, max_length=200, null=True)),
158
+ ('pivot_fields', models.JSONField(blank=True, null=True)),
159
+ ('page_length', models.PositiveSmallIntegerField(choices=[(10, '10'), (25, '25'), (50, '50'), (100, '100'), (150, '150'), (200, '200')], default=100)),
160
+ ],
161
+ options={
162
+ 'abstract': False,
163
+ },
164
+ bases=('advanced_report_builder.report',),
165
+ ),
166
+ migrations.CreateModel(
167
+ name='ReportType',
168
+ fields=[
169
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
170
+ ('created', time_stamped_model.models.CreationDateTimeField(auto_now_add=True)),
171
+ ('modified', time_stamped_model.models.ModificationDateTimeField(auto_now=True)),
172
+ ('name', models.CharField(max_length=200)),
173
+ ('slug', models.SlugField(unique=True)),
174
+ ('report_builder_class_name', models.CharField(max_length=200)),
175
+ ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='contenttypes.contenttype')),
176
+ ],
177
+ options={
178
+ 'ordering': ['name'],
179
+ },
180
+ ),
181
+ migrations.AddField(
182
+ model_name='report',
183
+ name='report_tags',
184
+ field=models.ManyToManyField(blank=True, to='advanced_report_builder.ReportTag'),
185
+ ),
186
+ migrations.AddField(
187
+ model_name='report',
188
+ name='report_type',
189
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='advanced_report_builder.reporttype'),
190
+ ),
191
+ migrations.CreateModel(
192
+ name='DashboardReport',
193
+ fields=[
194
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
195
+ ('created', time_stamped_model.models.CreationDateTimeField(auto_now_add=True)),
196
+ ('modified', time_stamped_model.models.ModificationDateTimeField(auto_now=True)),
197
+ ('order', models.PositiveSmallIntegerField()),
198
+ ('top', models.BooleanField(default=False)),
199
+ ('name_override', models.CharField(blank=True, max_length=200, null=True)),
200
+ ('display_option', models.PositiveIntegerField(choices=[(0, 'None/Default'), (1, '1 Report per Row'), (2, '2 Reports per Row'), (3, '3 Reports per Row'), (4, '4 Reports per Row')], default=0)),
201
+ ('dashboard', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='advanced_report_builder.dashboard')),
202
+ ('report', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='advanced_report_builder.report')),
203
+ ],
204
+ options={
205
+ 'ordering': ['order'],
206
+ },
207
+ ),
208
+ migrations.CreateModel(
209
+ name='ReportQuery',
210
+ fields=[
211
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
212
+ ('created', time_stamped_model.models.CreationDateTimeField(auto_now_add=True)),
213
+ ('modified', time_stamped_model.models.ModificationDateTimeField(auto_now=True)),
214
+ ('name', models.TextField(default='Standard')),
215
+ ('query', models.JSONField(blank=True, null=True)),
216
+ ('extra_query', models.JSONField(blank=True, null=True)),
217
+ ('report', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='advanced_report_builder.report')),
218
+ ],
219
+ options={
220
+ 'verbose_name_plural': 'Report queries',
221
+ 'ordering': ['name'],
222
+ 'unique_together': {('name', 'report')},
223
+ },
224
+ ),
225
+ migrations.CreateModel(
226
+ name='KanbanReportLane',
227
+ fields=[
228
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
229
+ ('created', time_stamped_model.models.CreationDateTimeField(auto_now_add=True)),
230
+ ('modified', time_stamped_model.models.ModificationDateTimeField(auto_now=True)),
231
+ ('name', models.CharField(max_length=200)),
232
+ ('order', models.PositiveSmallIntegerField()),
233
+ ('heading_field', models.CharField(blank=True, max_length=200, null=True)),
234
+ ('order_by_field', models.CharField(blank=True, max_length=200, null=True)),
235
+ ('link_field', models.CharField(blank=True, max_length=200, null=True)),
236
+ ('order_by_ascending', models.BooleanField(default=True)),
237
+ ('description', models.TextField(blank=True, null=True)),
238
+ ('query_data', models.JSONField(blank=True, null=True)),
239
+ ('report_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='advanced_report_builder.reporttype')),
240
+ ('kanban_report', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='advanced_report_builder.kanbanreport')),
241
+ ],
242
+ options={
243
+ 'ordering': ('name',),
244
+ },
245
+ ),
246
+ ]
@@ -0,0 +1,23 @@
1
+ # Generated by Django 3.2.7 on 2022-02-09 16:57
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('advanced_report_builder', '0001_initial'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AddField(
14
+ model_name='singlevaluereport',
15
+ name='breakdown_fields',
16
+ field=models.JSONField(blank=True, null=True),
17
+ ),
18
+ migrations.AddField(
19
+ model_name='singlevaluereport',
20
+ name='show_breakdown',
21
+ field=models.BooleanField(default=False),
22
+ ),
23
+ ]