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,63 @@
1
+ {% load modal_tags %}
2
+ <div>
3
+ {% if datatable.breakdown_url %}
4
+ <a class="single_value_link" href="{{ datatable.breakdown_url }}"><h1 id="{{ datatable.table_id }}"></h1></a>{% else %} <h1 id="{{ datatable.table_id }}"></h1>{% endif %}
5
+ {% if datatable.target_data %}
6
+ <div class="d-flex align-items-center" style="gap: 0.5rem;">
7
+ <div style="min-width: 100px; text-align: right; font-weight: bold;">
8
+ {{ datatable.target_data.percentage|floatformat }}% of {{ datatable.target_data.target_value|safe}}
9
+ </div>
10
+ <div class="flex-grow-1">
11
+ <div class="progress" style="height: 24px;">
12
+ <div class="progress-bar"
13
+ role="progressbar"
14
+ style="
15
+ width: {{ datatable.target_data.bar_percentage }}%;
16
+ background-color: #{{ datatable.target_data.colour|default:"008000" }};">
17
+ </div>
18
+ </div>
19
+ </div>
20
+ </div>
21
+ {% endif %}
22
+
23
+ </div>
24
+ <script>
25
+ (function () {
26
+
27
+ var cell_data, row_class;
28
+ var table = {{ datatable.model_table_setup }};
29
+ table.find_column = django_datatables.PythonTable.prototype.find_column
30
+ for (var i = 0; i < table.initsetup.colOptions.length; i++) {
31
+ var row = '';
32
+ var prefix = '';
33
+ var suffix = '';
34
+ if(i === table.initsetup.colOptions.length-1) {
35
+ prefix = '{{ datatable.prefix|default:"" }}';
36
+ {% if datatable.single_value.is_percentage %}suffix = '%';{% endif %}
37
+ }
38
+
39
+ if(i > 0) {
40
+ row += '<span class="single_value_separator"> | </span>';
41
+ }
42
+ if (table.initsetup.colOptions[i].row_class !== undefined){
43
+ row_class = ' class="' + table.initsetup.colOptions[i].row_class + '"'
44
+ } else {
45
+ row_class = ' class="single_value"'
46
+ }
47
+
48
+ for (var j = 0; j < table.data.length; j++) {
49
+ if (table.initsetup.colOptions[i]['render'] != undefined) {
50
+ render = new django_datatables.column_render(i, table.initsetup.colOptions[i]['render'], table);
51
+ cell_data = render(table.data[j][i], null, table.data[j]);
52
+ } else {
53
+ cell_data = table.data[j][i];
54
+ }
55
+ if (cell_data == null) {
56
+ cell_data = '';
57
+ }
58
+ row += '<span' + row_class + '>' + prefix + cell_data + suffix + '</span>';
59
+ }
60
+ $('#' + table.table_id).append(row);
61
+ }
62
+ })();
63
+ </script>
@@ -0,0 +1,13 @@
1
+ {% extends 'django_modals/modal_base.html' %}
2
+
3
+ {% block javascript %}
4
+ <script>
5
+ $(function () {
6
+ $('#id_report_type').on('change', function (e) {
7
+ $('#id_field').val('').trigger('change');
8
+ $('#id_numerator').val('').trigger('change');
9
+ });
10
+ });
11
+
12
+ </script>
13
+ {% endblock %}
@@ -0,0 +1,56 @@
1
+ {% load datatable_tags %}
2
+ {% load ajax_helpers %}
3
+ <style>
4
+
5
+ .dashboard-tile {
6
+ background-color: #fff;
7
+ color: #555;
8
+ margin-bottom: 15px;
9
+ padding: 10px;
10
+ -webkit-border-radius: 3px;
11
+ -moz-border-radius: 3px;
12
+ -ms-border-radius: 3px;
13
+ -o-border-radius: 3px;
14
+ border-radius: 3px;
15
+ }
16
+
17
+ .single_value_link {
18
+ color: white;
19
+ text-decoration: none;
20
+ }
21
+ .single_value_link:hover {
22
+ color: white;
23
+ text-decoration: none;
24
+ }
25
+
26
+
27
+ </style>
28
+
29
+ {% lib_include 'ChartJS' module='advanced_report_builder.includes' %}
30
+ {% if show_toolbar %}
31
+ <div class="card report-card">
32
+ <div class="card-header">
33
+ <div class="d-flex align-items-center">
34
+ <h5 class="mr-auto">{{ title }}</h5>
35
+
36
+ {% block button_menu %}{{ menus.button_menu.render }}{% endblock %}
37
+ </div>
38
+ </div>
39
+ <div class="dashboard-tile detail" style="background-color: {% if single_value_report.tile_colour %}#{{ single_value_report.tile_colour }}{% else %}#23527c{% endif %}; color: white;">
40
+ <div class="content" style="padding: 2px;">
41
+ {{ datatable.render }}
42
+ </div>
43
+ </div>
44
+ </div>
45
+
46
+ {% else %}
47
+ <div>
48
+ <div class="dashboard-tile detail" style="background-color: {% if single_value_report.tile_colour %}#{{ single_value_report.tile_colour }}{% else %}#23527c{% endif %}; color: white;">
49
+ <div class="content" style="padding: 2px;">
50
+ {{ datatable.render }}
51
+
52
+ <p>{{ title|safe }}</p>
53
+ </div>
54
+ </div>
55
+ </div>
56
+ {% endif %}
@@ -0,0 +1,9 @@
1
+ from django_modals.widgets.widgets import Toggle
2
+
3
+
4
+ class RBToggle(Toggle):
5
+ def __init__(self, attrs=None, check_test=None):
6
+ if attrs is None:
7
+ attrs = {'data-onstyle': 'success', 'data-on': 'YES', 'data-off': 'NO'}
8
+
9
+ super().__init__(attrs, check_test)
@@ -0,0 +1,237 @@
1
+ from django.urls import path
2
+
3
+ from advanced_report_builder.views.bar_charts import (
4
+ BarChartBreakdownFieldModal,
5
+ BarChartFieldModal,
6
+ BarChartModal,
7
+ BarChartShowBreakdownModal,
8
+ )
9
+ from advanced_report_builder.views.calendar import (
10
+ CalendarDataSetDuplicateModal,
11
+ CalendarDataSetModal,
12
+ CalendarDescriptionDuplicateModal,
13
+ CalendarDescriptionModal,
14
+ CalendarModal,
15
+ )
16
+ from advanced_report_builder.views.custom import CustomModal
17
+ from advanced_report_builder.views.dashboard import (
18
+ DashboardAddReportModal,
19
+ DashboardModal,
20
+ DashboardReportModal,
21
+ )
22
+ from advanced_report_builder.views.datatables.modal import (
23
+ TableFieldModal,
24
+ TableModal,
25
+ TablePivotModal,
26
+ )
27
+ from advanced_report_builder.views.funnel_charts import (
28
+ FunnelChartFieldModal,
29
+ FunnelChartModal,
30
+ )
31
+ from advanced_report_builder.views.kanban import (
32
+ KanbanDescriptionDuplicateModal,
33
+ KanbanDescriptionModal,
34
+ KanbanLaneDuplicateModal,
35
+ KanbanLaneModal,
36
+ KanbanModal,
37
+ )
38
+ from advanced_report_builder.views.line_charts import (
39
+ LineChartFieldModal,
40
+ LineChartModal,
41
+ )
42
+ from advanced_report_builder.views.multi_value import (
43
+ MultiValueCellCopyFromModal,
44
+ MultiValueCellStyleModal,
45
+ MultiValueHeldQueryModal,
46
+ MultiValueModal,
47
+ MultiValueReportCellModal,
48
+ MultiValueReportCellsModal,
49
+ MultiValueReportColumnModal,
50
+ MultiValueShowBreakdownModal,
51
+ MultiValueTableFieldModal,
52
+ )
53
+ from advanced_report_builder.views.pie_charts import PieChartFieldModal, PieChartModal
54
+ from advanced_report_builder.views.query_modal.modal import QueryModal, QueryOrderModal
55
+ from advanced_report_builder.views.report import SelectOptionModal
56
+ from advanced_report_builder.views.reports import DuplicateReportModal
57
+ from advanced_report_builder.views.single_values import (
58
+ QueryNumeratorModal,
59
+ SingleValueModal,
60
+ SingleValueOptionModal,
61
+ SingleValueShowBreakdownModal,
62
+ SingleValueTableFieldModal,
63
+ )
64
+ from advanced_report_builder.views.targets.views import TargetColourModal, TargetModal
65
+
66
+ app_name = 'advanced_report_builder'
67
+
68
+
69
+ urlpatterns = [
70
+ path('query/modal/query/<str:slug>', QueryModal.as_view(), name='query_modal'),
71
+ path(
72
+ 'query/modal/query/order/<str:slug>',
73
+ QueryOrderModal.as_view(),
74
+ name='query_order_modal',
75
+ ),
76
+ path('table/modal/<str:slug>/', TableModal.as_view(), name='table_modal'),
77
+ path(
78
+ 'table/modal/field/<str:slug>/',
79
+ TableFieldModal.as_view(),
80
+ name='table_field_modal',
81
+ ),
82
+ path(
83
+ 'table/modal/pivot/<str:slug>/',
84
+ TablePivotModal.as_view(),
85
+ name='table_pivot_modal',
86
+ ),
87
+ path(
88
+ 'single-value/modal/<str:slug>/',
89
+ SingleValueModal.as_view(),
90
+ name='single_value_modal',
91
+ ),
92
+ path(
93
+ 'single-value/option/modal/<str:slug>/',
94
+ SingleValueOptionModal.as_view(),
95
+ name='single_value_option_modal',
96
+ ),
97
+ path(
98
+ 'single-value/modal/field/<str:slug>/',
99
+ SingleValueTableFieldModal.as_view(),
100
+ name='single_value_field_modal',
101
+ ),
102
+ path(
103
+ 'single-value/modal/numerator-field/<str:slug>/',
104
+ QueryNumeratorModal.as_view(),
105
+ name='single_value_numerator_modal',
106
+ ),
107
+ path(
108
+ 'single-value/show-breakdown/<str:slug>/',
109
+ SingleValueShowBreakdownModal.as_view(),
110
+ name='single_value_show_breakdown_modal',
111
+ ),
112
+ path('bar-chart/modal/<str:slug>/', BarChartModal.as_view(), name='bar_chart_modal'),
113
+ path(
114
+ 'bar-chart/modal/field/<str:slug>/',
115
+ BarChartFieldModal.as_view(),
116
+ name='bar_chart_field_modal',
117
+ ),
118
+ path(
119
+ 'bar-chart/modal/breakdown/field/<str:slug>/',
120
+ BarChartBreakdownFieldModal.as_view(),
121
+ name='bar_chart_breakdown_field_modal',
122
+ ),
123
+ path(
124
+ 'bar-chart/show-breakdown/<str:slug>/',
125
+ BarChartShowBreakdownModal.as_view(),
126
+ name='bar_chart_show_breakdown_modal',
127
+ ),
128
+ path(
129
+ 'line-chart/modal/<str:slug>/',
130
+ LineChartModal.as_view(),
131
+ name='line_chart_modal',
132
+ ),
133
+ path(
134
+ 'line-chart/modal/field/<str:slug>/',
135
+ LineChartFieldModal.as_view(),
136
+ name='line_chart_field_modal',
137
+ ),
138
+ path('pie-chart/modal/<str:slug>/', PieChartModal.as_view(), name='pie_chart_modal'),
139
+ path(
140
+ 'pie-chart/modal/field/<str:slug>/',
141
+ PieChartFieldModal.as_view(),
142
+ name='pie_chart_field_modal',
143
+ ),
144
+ path(
145
+ 'funnel-chart/modal/<str:slug>/',
146
+ FunnelChartModal.as_view(),
147
+ name='funnel_chart_modal',
148
+ ),
149
+ path(
150
+ 'funnel-chart/modal/field/<str:slug>/',
151
+ FunnelChartFieldModal.as_view(),
152
+ name='funnel_chart_field_modal',
153
+ ),
154
+ path('multi-value/modal/<str:slug>/', MultiValueModal.as_view(), name='multi_value_modal'),
155
+ path(
156
+ 'multi-value/cell-style/modal/<str:slug>/',
157
+ MultiValueCellStyleModal.as_view(),
158
+ name='multi_value_cell_style_modal',
159
+ ),
160
+ path('multi-value/cell/modal/<str:slug>/', MultiValueReportCellModal.as_view(), name='multi_value_cell_modal'),
161
+ path('multi-value/cells/modal/<str:slug>/', MultiValueReportCellsModal.as_view(), name='multi_value_cells_modal'),
162
+ path(
163
+ 'multi-value/column/modal/<str:slug>/', MultiValueReportColumnModal.as_view(), name='multi_value_column_modal'
164
+ ),
165
+ path('multi-value/query/modal/<str:slug>/', MultiValueHeldQueryModal.as_view(), name='multi_value_query_modal'),
166
+ path(
167
+ 'multi-value/breakdown/modal/<str:slug>/',
168
+ MultiValueShowBreakdownModal.as_view(),
169
+ name='multi_value_breakdown_modal',
170
+ ),
171
+ path(
172
+ 'multi-value/cell/duplicate/modal/<str:slug>/',
173
+ MultiValueCellCopyFromModal.as_view(),
174
+ name='multi_value_cell_copy_from_modal',
175
+ ),
176
+ path(
177
+ 'multi-value/modal/field/<str:slug>/',
178
+ MultiValueTableFieldModal.as_view(),
179
+ name='multi_value_field_modal',
180
+ ),
181
+ path('kanban/modal/<str:slug>/', KanbanModal.as_view(), name='kanban_modal'),
182
+ path(
183
+ 'kanban/modal/lane/<str:slug>/',
184
+ KanbanLaneModal.as_view(),
185
+ name='kanban_lane_modal',
186
+ ),
187
+ path(
188
+ 'kanban/modal/lane/duplicate/<str:slug>/',
189
+ KanbanLaneDuplicateModal.as_view(),
190
+ name='kanban_lane_duplicate_modal',
191
+ ),
192
+ path(
193
+ 'kanban/modal/description/<str:slug>/',
194
+ KanbanDescriptionModal.as_view(),
195
+ name='kanban_description_modal',
196
+ ),
197
+ path(
198
+ 'kanban/modal/description/duplicate/<str:slug>/',
199
+ KanbanDescriptionDuplicateModal.as_view(),
200
+ name='kanban_description_duplicate_modal',
201
+ ),
202
+ path('calendar/modal/<str:slug>/', CalendarModal.as_view(), name='calendar_modal'),
203
+ path('calendar/modal/data-set/<str:slug>/', CalendarDataSetModal.as_view(), name='calendar_data_set_modal'),
204
+ path(
205
+ 'calendar/modal/lane/duplicate/<str:slug>/',
206
+ CalendarDataSetDuplicateModal.as_view(),
207
+ name='calendar_data_set_duplicate_modal',
208
+ ),
209
+ path(
210
+ 'calendar/modal/description/<str:slug>/', CalendarDescriptionModal.as_view(), name='calendar_description_modal'
211
+ ),
212
+ path(
213
+ 'calendar/modal/description/duplicate/<str:slug>/',
214
+ CalendarDescriptionDuplicateModal.as_view(),
215
+ name='calendar_description_duplicate_modal',
216
+ ),
217
+ path('custom/modal/<str:slug>/', CustomModal.as_view(), name='custom_modal'),
218
+ path(
219
+ 'dashboard/report/<str:slug>/',
220
+ DashboardReportModal.as_view(),
221
+ name='dashboard_report_modal',
222
+ ),
223
+ path('dashboard/<str:slug>/', DashboardModal.as_view(), name='dashboard_modal'),
224
+ path(
225
+ 'dashboard/add/<str:slug>/',
226
+ DashboardAddReportModal.as_view(),
227
+ name='add_dashboard_report',
228
+ ),
229
+ path(
230
+ 'duplicate/<str:slug>/',
231
+ DuplicateReportModal.as_view(),
232
+ name='duplicate_report_modal',
233
+ ),
234
+ path('target/modal/<str:slug>/', TargetModal.as_view(), name='target_modal'),
235
+ path('target/colour/modal/<str:slug>/', TargetColourModal.as_view(), name='target_colour_modal'),
236
+ path('select/option/modal/<str:slug>/', SelectOptionModal.as_view(), name='select_option_modal'),
237
+ ]
@@ -0,0 +1,171 @@
1
+ import base64
2
+ from datetime import date, timedelta
3
+
4
+ from crispy_forms.layout import HTML, Div
5
+ from django.conf import settings
6
+ from django.utils.module_loading import import_string
7
+ from django_modals.helper import show_modal
8
+
9
+
10
+ def split_attr(data):
11
+ if 'data_attr' not in data:
12
+ return {}
13
+ _attr = {}
14
+ s = data['data_attr'].split('-')
15
+ _attr.update({s[k]: s[k + 1] for k in range(0, int(len(s) - 1), 2)})
16
+ return _attr
17
+
18
+
19
+ def split_slug(slug_str):
20
+ s = slug_str.split('-')
21
+ slug = {}
22
+ if len(s) == 1:
23
+ slug['pk'] = s[0]
24
+ else:
25
+ slug.update({s[k]: s[k + 1] for k in range(0, int(len(s) - 1), 2)})
26
+ return slug
27
+
28
+
29
+ def make_slug_str(slug, overrides=None, excludes=None):
30
+ overrides = overrides or {}
31
+ excludes = set(excludes or [])
32
+
33
+ if len(slug) == 1 and 'pk' in slug and not overrides:
34
+ return slug['pk']
35
+
36
+ # 1. Start from base slug
37
+ final = {k: v for k, v in slug.items() if k not in excludes}
38
+
39
+ # 2. Apply overrides (replace or add)
40
+ for k, v in overrides.items():
41
+ if k not in excludes:
42
+ final[k] = v
43
+
44
+ # 3. Serialize
45
+ return '-'.join(f'{k}-{v}' for k, v in final.items())
46
+
47
+
48
+ def get_custom_report_builder():
49
+ return import_string(
50
+ getattr(
51
+ settings,
52
+ 'REPORT_BUILDER_CUSTOMISATION',
53
+ 'report_builder.customise.CustomiseReportBuilder',
54
+ )
55
+ )
56
+
57
+
58
+ def crispy_modal_link_args(
59
+ modal_name,
60
+ text,
61
+ *args,
62
+ div=False,
63
+ div_classes='',
64
+ button_classes='',
65
+ font_awesome=None,
66
+ ):
67
+ link = HTML(
68
+ show_modal(
69
+ modal_name,
70
+ *args,
71
+ button=text,
72
+ button_classes=button_classes,
73
+ font_awesome=font_awesome,
74
+ )
75
+ )
76
+ if div:
77
+ link = Div(link, css_class=div_classes)
78
+ return link
79
+
80
+
81
+ def encode_attribute(string_in):
82
+ _data = string_in.encode('utf-8', 'ignore')
83
+ _data = base64.urlsafe_b64encode(_data).decode('utf-8', 'ignore')
84
+ return _data.replace('-', '@')
85
+
86
+
87
+ def decode_attribute(data_attr):
88
+ data_attr = data_attr.replace('@', '-')
89
+ _data = base64.urlsafe_b64decode(data_attr)
90
+ return _data.decode('utf-8', 'ignore')
91
+
92
+
93
+ def get_report_builder_class(model, report_type=None, class_name=None):
94
+ if class_name is None:
95
+ class_name = report_type.report_builder_class_name
96
+
97
+ report_builder_class = getattr(model, class_name, None)
98
+ if report_builder_class is not None:
99
+ report_builder_class = report_builder_class()
100
+ return report_builder_class
101
+
102
+
103
+ def get_query_js(button_name, field_id):
104
+ return (
105
+ 'django_modal.process_commands_lock([{"function": "post_modal", "button": {"button": "'
106
+ + button_name
107
+ + '", "'
108
+ + field_id
109
+ + "\": $(this).closest('tr').attr('id')}}])"
110
+ )
111
+
112
+
113
+ def count_days(
114
+ start_date: date, end_date: date, exclude_weekdays: list[int] = None, exclude_dates: list[date] = None
115
+ ) -> int:
116
+ if start_date > end_date:
117
+ start_date, end_date = end_date, start_date
118
+
119
+ exclude_weekdays = set(exclude_weekdays or [])
120
+ exclude_dates = set(exclude_dates or [])
121
+
122
+ current = start_date
123
+ count = 0
124
+ while current < end_date:
125
+ weekday = ((current.weekday() + 1) % 7) + 1 # Django-style Sunday=1
126
+ if weekday not in exclude_weekdays and current not in exclude_dates:
127
+ count += 1
128
+ current += timedelta(days=1)
129
+ return count
130
+
131
+
132
+ def excel_column_name(n: int, row: int | None = None) -> str:
133
+ """Convert a 1-based column index to an Excel column name, with optional row."""
134
+ col = []
135
+ c = n
136
+ while c > 0:
137
+ c -= 1
138
+ col.append(chr((c % 26) + ord('A')))
139
+ c //= 26
140
+ col = ''.join(reversed(col))
141
+
142
+ if row is not None:
143
+ return f'{col}{row}'
144
+ return col
145
+
146
+
147
+ def try_int(value):
148
+ try:
149
+ return int(value)
150
+ except (TypeError, ValueError):
151
+ return value
152
+
153
+
154
+ def get_view_type_class():
155
+ cls_path = getattr(
156
+ settings,
157
+ 'REPORT_BUILDER_VIEW_TYPES_CLASS',
158
+ 'advanced_report_builder.view_types.ViewTypes',
159
+ )
160
+ cls = import_string(cls_path)
161
+ return cls()
162
+
163
+
164
+ def get_template_type_class():
165
+ cls_path = getattr(
166
+ settings,
167
+ 'REPORT_BUILDER_TEMPLATE_TYPES_CLASS',
168
+ 'advanced_report_builder.template_types.TemplateTypes',
169
+ )
170
+ cls = import_string(cls_path)
171
+ return cls()