monopyly 1.6.0__tar.gz → 1.6.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. {monopyly-1.6.0 → monopyly-1.6.1}/PKG-INFO +5 -5
  2. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/CHANGELOG.md +7 -0
  3. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/_version.py +2 -2
  4. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/banking/forms.py +4 -0
  5. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/common/forms/_forms.py +5 -14
  6. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/common/forms/fields.py +0 -9
  7. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/common/forms/utils.py +3 -3
  8. monopyly-1.6.1/monopyly/core/context_processors.py +23 -0
  9. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/cards.py +1 -1
  10. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/forms.py +6 -2
  11. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/css/style.css +4 -0
  12. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/account_form/account_form_page_new.html +10 -8
  13. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/accounts_page.html +8 -6
  14. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/index.html +12 -8
  15. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/profile.html +18 -19
  16. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/account_page.html +17 -17
  17. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/card_form/card_form_page_new.html +8 -5
  18. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/statement_page.html +43 -44
  19. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/statements_page.html +13 -13
  20. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/transactions_page.html +28 -28
  21. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/layout.html +7 -5
  22. {monopyly-1.6.0 → monopyly-1.6.1}/pyproject.toml +5 -5
  23. monopyly-1.6.0/monopyly/core/context_processors.py +0 -41
  24. {monopyly-1.6.0 → monopyly-1.6.1}/.gitignore +0 -0
  25. {monopyly-1.6.0 → monopyly-1.6.1}/COPYING +0 -0
  26. {monopyly-1.6.0 → monopyly-1.6.1}/LICENSE +0 -0
  27. {monopyly-1.6.0 → monopyly-1.6.1}/README.md +0 -0
  28. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/README.md +0 -0
  29. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/__init__.py +0 -0
  30. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/auth/actions.py +0 -0
  31. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/auth/blueprint.py +0 -0
  32. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/auth/routes.py +0 -0
  33. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/auth/tools.py +0 -0
  34. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/banking/accounts.py +0 -0
  35. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/banking/actions.py +0 -0
  36. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/banking/banks.py +0 -0
  37. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/banking/blueprint.py +0 -0
  38. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/banking/filters.py +0 -0
  39. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/banking/routes.py +0 -0
  40. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/banking/transactions.py +0 -0
  41. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/common/forms/__init__.py +0 -0
  42. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/common/forms/validators.py +0 -0
  43. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/common/transactions.py +0 -0
  44. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/common/utils.py +0 -0
  45. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/core/actions.py +0 -0
  46. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/core/blueprint.py +0 -0
  47. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/core/errors.py +0 -0
  48. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/core/filters.py +0 -0
  49. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/core/internal_transactions.py +0 -0
  50. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/core/routes.py +0 -0
  51. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/accounts.py +0 -0
  52. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/actions.py +0 -0
  53. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/blueprint.py +0 -0
  54. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/routes.py +0 -0
  55. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/statements.py +0 -0
  56. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/transactions/__init__.py +0 -0
  57. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/transactions/_transactions.py +0 -0
  58. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/transactions/activity/__init__.py +0 -0
  59. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/transactions/activity/data.py +0 -0
  60. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/transactions/activity/parser.py +0 -0
  61. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/credit/transactions/activity/reconciliation.py +0 -0
  62. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/database/__init__.py +0 -0
  63. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/database/models.py +0 -0
  64. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/database/preloads.sql +0 -0
  65. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/database/schema.sql +0 -0
  66. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/database/views.sql +0 -0
  67. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/scripts/screenshot_application.py +0 -0
  68. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/chartist-1.5.0.min.js +0 -0
  69. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/browserconfig.xml +0 -0
  70. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-114.png +0 -0
  71. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-120.png +0 -0
  72. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-144.png +0 -0
  73. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-150.png +0 -0
  74. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-152.png +0 -0
  75. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-16.png +0 -0
  76. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-160.png +0 -0
  77. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-180.png +0 -0
  78. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-192.png +0 -0
  79. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-310.png +0 -0
  80. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-32.png +0 -0
  81. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-57.png +0 -0
  82. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-60.png +0 -0
  83. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-64.png +0 -0
  84. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-70.png +0 -0
  85. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-72.png +0 -0
  86. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-76.png +0 -0
  87. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon-96.png +0 -0
  88. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon.ico +0 -0
  89. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/favicon/favicon.png +0 -0
  90. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/about/bank-account-details.png +0 -0
  91. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/about/bank-account-summaries.png +0 -0
  92. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/about/bank-accounts.png +0 -0
  93. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/about/credit-account-details.png +0 -0
  94. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/about/credit-statement-details.png +0 -0
  95. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/about/credit-transactions.png +0 -0
  96. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/about/homepage-user.png +0 -0
  97. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/about/homepage.png +0 -0
  98. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/about/statement-details.png +0 -0
  99. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/cards/chase-card.png +0 -0
  100. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/cards/discover-card.png +0 -0
  101. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/cards/new-card.png +0 -0
  102. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/cards/template-card.png +0 -0
  103. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/arrow-down.png +0 -0
  104. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/arrow-left.png +0 -0
  105. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/arrow-up.png +0 -0
  106. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/checkmark.png +0 -0
  107. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/delete-orange-thick.png +0 -0
  108. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/delete-orange.png +0 -0
  109. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/delete-thick.png +0 -0
  110. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/delete.png +0 -0
  111. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/edit.png +0 -0
  112. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/link.png +0 -0
  113. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/minus-thick.png +0 -0
  114. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/minus.png +0 -0
  115. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/plus-thick.png +0 -0
  116. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/plus.png +0 -0
  117. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/refresh.png +0 -0
  118. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/save.png +0 -0
  119. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/sort-asc.png +0 -0
  120. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/sort-desc.png +0 -0
  121. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/statement-pair.png +0 -0
  122. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/statement-thick.png +0 -0
  123. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/statement.png +0 -0
  124. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/icons/x-thick.png +0 -0
  125. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/img/statement.png +0 -0
  126. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/jquery-3.7.1.min.js +0 -0
  127. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/add-subtransaction.js +0 -0
  128. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/add-transfer.js +0 -0
  129. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/autocomplete-transaction.js +0 -0
  130. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/bind-tag-actions.js +0 -0
  131. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/create-balance-chart.js +0 -0
  132. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/create-category-chart.js +0 -0
  133. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/define-filter.js +0 -0
  134. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/display-new-account-type-inputs.js +0 -0
  135. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/display-new-bank-inputs.js +0 -0
  136. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/display-new-credit-account-inputs.js +0 -0
  137. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/expand-bank-account.js +0 -0
  138. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/expand-bank.js +0 -0
  139. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/expand-transaction.js +0 -0
  140. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/flip-card.js +0 -0
  141. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/hide-homepage-block.js +0 -0
  142. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/highlight-discrepant-transactions.js +0 -0
  143. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/infer-card.js +0 -0
  144. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/infer-statement.js +0 -0
  145. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/load-more-transactions.js +0 -0
  146. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/make-payment.js +0 -0
  147. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/modules/ajax.js +0 -0
  148. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/modules/autocomplete-input.js +0 -0
  149. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/modules/expand-box-row.js +0 -0
  150. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/modules/expand-transaction.js +0 -0
  151. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/modules/form-suggestions.js +0 -0
  152. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/modules/manage-acquisition-form.js +0 -0
  153. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/modules/manage-overlays.js +0 -0
  154. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/modules/manage-subforms.js +0 -0
  155. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/modules/update-database-widget.js +0 -0
  156. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/modules/update-display-ajax.js +0 -0
  157. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/show-credit-activity-loader.js +0 -0
  158. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/show-linked-transaction.js +0 -0
  159. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/toggle-navigation.js +0 -0
  160. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/update-account-statement-parameters.js +0 -0
  161. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/update-bank-name.js +0 -0
  162. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/update-card-status.js +0 -0
  163. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/update-statement-parameters.js +0 -0
  164. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/update-statements-display.js +0 -0
  165. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/update-transactions-display.js +0 -0
  166. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/use-suggested-amount.js +0 -0
  167. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/static/js/use-suggested-merchant.js +0 -0
  168. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/auth/change_password.html +0 -0
  169. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/auth/login.html +0 -0
  170. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/auth/register.html +0 -0
  171. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/account_form/account_form.html +0 -0
  172. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/account_page.html +24 -24
  173. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/account_summaries.html +0 -0
  174. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/account_summaries_page.html +0 -0
  175. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/account_summary.html +0 -0
  176. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/transaction_form/bank_info_form.html +0 -0
  177. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/transaction_form/transaction_form.html +0 -0
  178. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/transaction_form/transaction_form_page.html +0 -0
  179. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/transaction_form/transaction_form_page_new.html +0 -0
  180. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/transaction_form/transaction_form_page_update.html +0 -0
  181. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/transaction_form/transfer_form.html +0 -0
  182. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/transactions_table/condensed_row_content.html +0 -0
  183. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/transactions_table/expanded_row_content.html +0 -0
  184. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/transactions_table/table.html +0 -0
  185. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/transactions_table/transaction_field_titles.html +0 -0
  186. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/banking/transactions_table/transactions.html +0 -0
  187. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/form_page.html +0 -0
  188. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/tag_tree.html +0 -0
  189. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/tags_page.html +12 -12
  190. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/transaction_form/subform.html +0 -0
  191. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/transaction_form/subtransaction_subform.html +0 -0
  192. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/transaction_form/transaction_form_page.html +0 -0
  193. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/transactions_table/linked_bank_transaction.html +0 -0
  194. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/transactions_table/linked_credit_transaction.html +0 -0
  195. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/transactions_table/linked_transaction_overlay.html +0 -0
  196. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/transactions_table/subtransactions.html +0 -0
  197. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/transactions_table/table.html +0 -0
  198. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/transactions_table/transaction_condensed.html +0 -0
  199. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/transactions_table/transaction_expanded.html +0 -0
  200. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/common/transactions_table/transactions.html +0 -0
  201. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/credits.html +0 -0
  202. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/errors/400.html +0 -0
  203. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/errors/401.html +0 -0
  204. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/errors/403.html +0 -0
  205. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/errors/404.html +0 -0
  206. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/errors/405.html +0 -0
  207. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/errors/408.html +0 -0
  208. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/errors/418.html +0 -0
  209. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/errors/425.html +0 -0
  210. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/errors/500.html +0 -0
  211. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/errors/error.html +0 -0
  212. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/core/story.html +0 -0
  213. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/card_form/card_form.html +0 -0
  214. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/card_form/transfer_statement_inquiry.html +0 -0
  215. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/card_graphic/card_back.html +0 -0
  216. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/card_graphic/card_front.html +0 -0
  217. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/card_submission_page.html +0 -0
  218. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/cards.html +0 -0
  219. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/cards_page.html +0 -0
  220. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/statement_reconciliation/discrepant_records.html +0 -0
  221. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/statement_reconciliation/statement_reconciliation_inquiry.html +0 -0
  222. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/statement_reconciliation/statement_reconciliation_page.html +19 -19
  223. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/statement_reconciliation/summary.html +0 -0
  224. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/statement_reconciliation/unrecorded_activities.html +0 -0
  225. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/statement_summary.html +0 -0
  226. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/statements.html +0 -0
  227. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/transaction_form/transaction_form.html +0 -0
  228. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/transaction_form/transaction_form_page.html +0 -0
  229. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/transaction_form/transaction_form_page_new.html +0 -0
  230. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/transaction_form/transaction_form_page_update.html +9 -9
  231. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/transaction_submission_page.html +0 -0
  232. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/transactions_table/condensed_row_content.html +0 -0
  233. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/transactions_table/expanded_row_content.html +0 -0
  234. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/transactions_table/table.html +0 -0
  235. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/transactions_table/transaction_field_titles.html +0 -0
  236. {monopyly-1.6.0 → monopyly-1.6.1}/monopyly/templates/credit/transactions_table/transactions.html +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: monopyly
3
- Version: 1.6.0
3
+ Version: 1.6.1
4
4
  Summary: A homemade personal finance manager.
5
5
  Project-URL: Download, https://pypi.org/project/monopyly
6
6
  Project-URL: Homepage, http://monopyly.com
@@ -23,15 +23,15 @@ Classifier: Topic :: Office/Business :: Financial
23
23
  Classifier: Topic :: Office/Business :: Financial :: Accounting
24
24
  Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
25
25
  Requires-Python: >=3.10
26
- Requires-Dist: dry-foundation==1.4.1
26
+ Requires-Dist: dry-foundation==1.6.0
27
27
  Requires-Dist: flask-wtf==1.2.2
28
28
  Requires-Dist: flask==3.1.2
29
29
  Requires-Dist: gunicorn==23.0.0
30
- Requires-Dist: markdown==3.9
30
+ Requires-Dist: markdown==3.10
31
31
  Requires-Dist: nltk==3.9.2
32
32
  Requires-Dist: python-dateutil==2.9.0
33
- Requires-Dist: rich==14.1.0
34
- Requires-Dist: sqlalchemy==2.0.43
33
+ Requires-Dist: rich==14.2.0
34
+ Requires-Dist: sqlalchemy==2.0.45
35
35
  Description-Content-Type: text/markdown
36
36
 
37
37
  <div id="header">
@@ -237,4 +237,11 @@
237
237
  - Update JavaScript libraries (jQuery, Chartist)
238
238
 
239
239
 
240
+ ### 1.6.1
241
+
242
+ - Allow pie chart labels to overflow the SVG container
243
+ - Define JavaScript elements in header (deferring execution when logical)
244
+ - Bump dependencies
245
+
246
+
240
247
  <a name="bottom" id="bottom"></a>
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.6.0'
16
- __version_tuple__ = version_tuple = (1, 6, 0)
15
+ __version__ = version = '1.6.1'
16
+ __version_tuple__ = version_tuple = (1, 6, 1)
@@ -115,6 +115,10 @@ class BankAccountForm(EntryForm):
115
115
  }
116
116
  return account_type_data
117
117
 
118
+ def gather_entry_data(self, entry):
119
+ """Gather data for the form from the given database entry."""
120
+ raise NotImplementedError
121
+
118
122
  # Fields to identify the bank/account type information for the account
119
123
  bank_info = FormField(BankSubform)
120
124
  account_type_info = FormField(AccountTypeSubform)
@@ -2,10 +2,10 @@
2
2
  General form constructions.
3
3
  """
4
4
 
5
- from abc import ABC, abstractmethod
5
+ from abc import abstractmethod
6
6
  from datetime import date
7
7
 
8
- from flask_wtf import FlaskForm
8
+ from dry_foundation.forms import AbstractFlaskForm, FlaskSubform
9
9
  from wtforms.fields import StringField, SubmitField
10
10
  from wtforms.validators import DataRequired
11
11
 
@@ -15,12 +15,7 @@ from .fields import CurrencyField, DateField
15
15
  form_err_msg = "There was an improper value in your form. Please try again."
16
16
 
17
17
 
18
- class AbstractEntryFormMixinMeta(type(FlaskForm), ABC):
19
- # Defined to allow the forms to also to be abstract base classes
20
- pass
21
-
22
-
23
- class EntryForm(FlaskForm, metaclass=AbstractEntryFormMixinMeta):
18
+ class EntryForm(AbstractFlaskForm):
24
19
  """
25
20
  A form designed to accept database entry information.
26
21
 
@@ -85,11 +80,8 @@ class EntryForm(FlaskForm, metaclass=AbstractEntryFormMixinMeta):
85
80
  )
86
81
 
87
82
 
88
- class EntrySubform(EntryForm):
89
- """Subform disabling CSRF (CSRF is REQUIRED in encapsulating form)."""
90
-
91
- def __init__(self, *args, **kwargs):
92
- super().__init__(meta={"csrf": False}, *args, **kwargs)
83
+ class EntrySubform(FlaskSubform, EntryForm):
84
+ """A subform implementing ``EntryForm`` behavior."""
93
85
 
94
86
 
95
87
  class AcquisitionSubform(EntrySubform):
@@ -149,7 +141,6 @@ class TransactionForm(EntryForm):
149
141
  }
150
142
  return data
151
143
 
152
- @abstractmethod
153
144
  def gather_entry_data(self, entry):
154
145
  if self.subtransaction_model is None:
155
146
  raise RuntimeError(
@@ -24,15 +24,6 @@ class DateField(wtforms_fields.DateField):
24
24
  super().__init__(*args, filters=filters, **kwargs)
25
25
 
26
26
 
27
- class OptionalDateField(DateField):
28
- """A date field where the field value is optional."""
29
-
30
- def process_formdata(self, valuelist):
31
- """Process data from the form, ignoring an ommitted value."""
32
- if valuelist != [""]:
33
- super().process_formdata(valuelist)
34
-
35
-
36
27
  class CurrencyField(wtforms_fields.DecimalField):
37
28
  """A decimal field with currency-specific customizations."""
38
29
 
@@ -113,9 +113,9 @@ def extend_field_list_for_ajax(form_class, field_list_name, field_list_count):
113
113
 
114
114
  Parameters
115
115
  ----------
116
- form_class : flask_wtf.FlaskForm
117
- The class (not class instance) containing the field list to be
118
- extended.
116
+ form_class : type
117
+ The form class (not class instance) containing the field list to
118
+ be extended.
119
119
  field_list_name : str
120
120
  The name of the field list to be extended.
121
121
  field_list_count : int
@@ -0,0 +1,23 @@
1
+ """
2
+ Filters defined for the application.
3
+ """
4
+
5
+ from dry_foundation.utils import define_basic_template_global_variables
6
+
7
+ from .actions import determine_summary_balance_svg_viewbox_width
8
+ from .blueprint import bp
9
+
10
+
11
+ @bp.app_context_processor
12
+ def inject_global_template_variables():
13
+ """Inject template variables globally into the template context."""
14
+ return define_basic_template_global_variables("monopyly._version")
15
+
16
+
17
+ @bp.app_context_processor
18
+ def inject_utility_functions():
19
+ """Inject utility functions globally into the template context."""
20
+ utility_functions = {
21
+ "calculate_summary_balance_width": determine_summary_balance_svg_viewbox_width,
22
+ }
23
+ return utility_functions
@@ -137,7 +137,7 @@ def save_card(form, card_id=None):
137
137
 
138
138
  Parameters
139
139
  ----------
140
- form : flask_wtf.FlaskForm
140
+ form : CreditCardForm
141
141
  The form beign used to provide the data being saved.
142
142
  card_id : int
143
143
  The ID of hte card to be saved. If provided, the named card will
@@ -5,6 +5,7 @@ Generate credit card forms for the user to complete.
5
5
  from flask import abort
6
6
  from wtforms.fields import (
7
7
  BooleanField,
8
+ DateField,
8
9
  FieldList,
9
10
  FormField,
10
11
  IntegerField,
@@ -18,7 +19,6 @@ from ..common.forms import AcquisitionSubform, EntryForm, EntrySubform, Transact
18
19
  from ..common.forms.fields import (
19
20
  CustomChoiceSelectField,
20
21
  LastFourDigitsField,
21
- OptionalDateField,
22
22
  StringField,
23
23
  )
24
24
  from ..common.forms.utils import Autocompleter
@@ -152,6 +152,10 @@ class CardStatementTransferForm(EntryForm):
152
152
  transfer = RadioField("transfer", choices=[("yes", "Yes"), ("no", "No")])
153
153
  submit = SubmitField("Continue")
154
154
 
155
+ def gather_entry_data(self, entry):
156
+ """Gather data for the form from the given database entry."""
157
+ raise NotImplementedError
158
+
155
159
 
156
160
  class CreditTransactionForm(TransactionForm):
157
161
  """Form to input/edit credit card transactions."""
@@ -193,7 +197,7 @@ class CreditTransactionForm(TransactionForm):
193
197
  # Fields to identify the card/bank information for the statement
194
198
  card_info = FormField(CardSubform)
195
199
  # Fields pertaining to the statement
196
- issue_date = OptionalDateField("Statement Date")
200
+ issue_date = DateField("Statement Date", [Optional()])
197
201
 
198
202
  def get_statement(self, transaction_date):
199
203
  """Get the credit card statement described by the form data."""
@@ -3481,6 +3481,10 @@ form#pay #make-payment[type="submit"] #prompt {
3481
3481
  min-height: 400px;
3482
3482
  }
3483
3483
 
3484
+ #category-chart.ct-chart svg {
3485
+ overflow: visible;
3486
+ }
3487
+
3484
3488
  #category-chart text.ct-label {
3485
3489
  transition: fill 0.1s ease;
3486
3490
  }
@@ -1,6 +1,16 @@
1
1
  {% extends "common/form_page.html" %}
2
2
 
3
3
 
4
+ {% block javascript %}
5
+
6
+ <script type="module" src="{{ url_for('static', filename='js/display-new-bank-inputs.js') }}">
7
+ </script>
8
+ <script type="module" src="{{ url_for('static', filename='js/display-new-account-type-inputs.js') }}">
9
+ </script>
10
+
11
+ {% endblock %}
12
+
13
+
4
14
  {% block title %}
5
15
  New Bank Account
6
16
  {% endblock %}
@@ -13,11 +23,3 @@
13
23
  {% endwith %}
14
24
 
15
25
  {% endblock %}
16
-
17
-
18
- {% block javascript %}
19
- <script type="module" src="{{ url_for('static', filename='js/display-new-bank-inputs.js') }}">
20
- </script>
21
- <script type="module" src="{{ url_for('static', filename='js/display-new-account-type-inputs.js') }}">
22
- </script>
23
- {% endblock %}
@@ -1,6 +1,14 @@
1
1
  {% extends 'layout.html' %}
2
2
 
3
3
 
4
+ {% block javascript %}
5
+
6
+ <script type="module" src="{{ url_for('static', filename='js/expand-bank-account.js') }}">
7
+ </script>
8
+
9
+ {% endblock %}
10
+
11
+
4
12
  {% block header %}
5
13
 
6
14
  <h1>
@@ -83,9 +91,3 @@
83
91
  </div>
84
92
 
85
93
  {% endblock %}
86
-
87
-
88
- {% block javascript %}
89
- <script type="module" src="{{ url_for('static', filename='js/expand-bank-account.js') }}">
90
- </script>
91
- {% endblock %}
@@ -1,5 +1,17 @@
1
1
  {% extends "layout.html" %}
2
2
 
3
+
4
+ {% block javascript %}
5
+
6
+ <script>
7
+ const HIDE_HOMEPAGE_BLOCK_ENDPOINT = "{{ url_for('core.hide_homepage_block') }}";
8
+ </script>
9
+ <script type="module" src="{{ url_for('static', filename='js/hide-homepage-block.js') }}">
10
+ </script>
11
+
12
+ {% endblock %}
13
+
14
+
3
15
  {% block content %}
4
16
 
5
17
  {% if session["show_homepage_block"] %}
@@ -170,11 +182,3 @@
170
182
  {% endif %}
171
183
 
172
184
  {% endblock %}
173
-
174
- {% block javascript %}
175
- <script>
176
- const HIDE_HOMEPAGE_BLOCK_ENDPOINT = "{{ url_for('core.hide_homepage_block') }}";
177
- </script>
178
- <script type="module" src="{{ url_for('static', filename='js/hide-homepage-block.js') }}">
179
- </script>
180
- {% endblock %}
@@ -1,13 +1,28 @@
1
1
  {% extends "layout.html" %}
2
2
 
3
- {% block title %}
4
- Profile
3
+
4
+ {% block javascript %}
5
+
6
+ <script>
7
+ const UPDATE_BANK_NAME_ENDPOINTS = {
8
+ {% for bank in banks %}
9
+ {{ bank.id }}: "{{ url_for('banking.update_bank_name', bank_id=bank.id) }}",
10
+ {% endfor %}
11
+ };
12
+ </script>
13
+ <script type="module" src="{{ url_for('static', filename='js/expand-bank.js') }}">
14
+ </script>
15
+ <script type="module" src="{{ url_for('static', filename='js/update-bank-name.js') }}">
16
+ </script>
17
+
5
18
  {% endblock %}
6
19
 
20
+
7
21
  {% block header %}
8
- <h1>Profile</h1>
22
+ <h1>{% block title %}Profile{% endblock %}</h1>
9
23
  {% endblock %}
10
24
 
25
+
11
26
  {% block content %}
12
27
 
13
28
  <div id="profile">
@@ -76,19 +91,3 @@
76
91
  </div>
77
92
 
78
93
  {% endblock %}
79
-
80
-
81
- {% block javascript %}
82
- <script>
83
-
84
- const UPDATE_BANK_NAME_ENDPOINTS = {
85
- {% for bank in banks %}
86
- {{ bank.id }}: "{{ url_for('banking.update_bank_name', bank_id=bank.id) }}",
87
- {% endfor %}
88
- };
89
- </script>
90
- <script type="module" src="{{ url_for('static', filename='js/expand-bank.js') }}">
91
- </script>
92
- <script type="module" src="{{ url_for('static', filename='js/update-bank-name.js') }}">
93
- </script>
94
- {% endblock %}
@@ -1,6 +1,23 @@
1
1
  {% extends 'layout.html' %}
2
2
 
3
3
 
4
+ {% block javascript %}
5
+
6
+ <script>
7
+ const UPDATE_CARD_STATUS_ENDPOINT = "{{ url_for('credit.update_card_status') }}";
8
+ const UPDATE_ACCOUNT_STATEMENT_ISSUE_DAY_ENDPOINT = "{{ url_for('credit.update_account_statement_issue_day', account_id=account.id) }}";
9
+ const UPDATE_ACCOUNT_STATEMENT_DUE_DAY_ENDPOINT = "{{ url_for('credit.update_account_statement_due_day', account_id=account.id) }}";
10
+ </script>
11
+ <script src="{{ url_for('static', filename='js/flip-card.js') }}" defer>
12
+ </script>
13
+ <script type="module" src="{{ url_for('static', filename='js/update-card-status.js') }}">
14
+ </script>
15
+ <script type="module" src="{{ url_for('static', filename='js/update-account-statement-parameters.js') }}">
16
+ </script>
17
+
18
+ {% endblock %}
19
+
20
+
4
21
  {% block header %}
5
22
 
6
23
  <h1>
@@ -100,20 +117,3 @@
100
117
  </div>
101
118
 
102
119
  {% endblock %}
103
-
104
-
105
- {% block javascript %}
106
-
107
- <script>
108
- const UPDATE_CARD_STATUS_ENDPOINT = "{{ url_for('credit.update_card_status') }}";
109
- const UPDATE_ACCOUNT_STATEMENT_ISSUE_DAY_ENDPOINT = "{{ url_for('credit.update_account_statement_issue_day', account_id=account.id) }}";
110
- const UPDATE_ACCOUNT_STATEMENT_DUE_DAY_ENDPOINT = "{{ url_for('credit.update_account_statement_due_day', account_id=account.id) }}";
111
- </script>
112
- <script src="{{ url_for('static', filename='js/flip-card.js') }}">
113
- </script>
114
- <script type="module" src="{{ url_for('static', filename='js/update-card-status.js') }}">
115
- </script>
116
- <script type="module" src="{{ url_for('static', filename='js/update-account-statement-parameters.js') }}">
117
- </script>
118
-
119
- {% endblock %}
@@ -1,6 +1,14 @@
1
1
  {% extends "common/form_page.html" %}
2
2
 
3
3
 
4
+ {% block javascript %}
5
+
6
+ <script type="module" src="{{ url_for('static', filename='js/display-new-credit-account-inputs.js') }}">
7
+ </script>
8
+
9
+ {% endblock %}
10
+
11
+
4
12
  {% block title %}
5
13
  New Card
6
14
  {% endblock %}
@@ -17,8 +25,3 @@
17
25
  {% endif %}
18
26
 
19
27
  {% endblock %}
20
-
21
- {% block javascript %}
22
- <script type="module" src="{{ url_for('static', filename='js/display-new-credit-account-inputs.js') }}">
23
- </script>
24
- {% endblock %}
@@ -1,6 +1,49 @@
1
1
  {% extends 'layout.html' %}
2
2
 
3
3
 
4
+ {% block javascript %}
5
+
6
+ <script>
7
+ const CREDIT_ACTIVITY_RECONCILIATION_ENDPOINT = "{{ url_for('credit.reconcile_activity', statement_id=statement.id) }}";
8
+ const UPDATE_STATEMENT_DUE_DATE_ENDPOINT = "{{ url_for('credit.update_statement_due_date', statement_id=statement.id) }}";
9
+ const MAKE_PAYMENT_ENDPOINT = "{{ url_for('credit.pay_credit_card', card_id=statement.card_id, statement_id=statement.id) }}";
10
+ const EXPAND_TRANSACTION_ENDPOINT = "{{ url_for('credit.expand_transaction') }}";
11
+ const LINKED_TRANSACTION_ENDPOINT = "{{ url_for('credit.show_linked_transaction') }}";
12
+ </script>
13
+ <script>
14
+ const CATEGORY_CHART_DATA = {
15
+ labels: [
16
+ {% for label in chart_data['labels'] %}
17
+ {% if label == '' %}
18
+ "Other",
19
+ {% else %}
20
+ "{{ label }}",
21
+ {% endif %}
22
+ {% endfor %}
23
+ ],
24
+ series: [
25
+ {% for subtotal in chart_data['subtotals'] %}
26
+ {{ subtotal }},
27
+ {% endfor %}
28
+ ],
29
+ };
30
+ </script>
31
+ <script type="module" src="{{ url_for('static', filename='js/show-credit-activity-loader.js') }}">
32
+ </script>
33
+ <script type="module" src="{{ url_for('static', filename='js/update-statement-parameters.js') }}">
34
+ </script>
35
+ <script type="module" src="{{ url_for('static', filename='js/make-payment.js') }}">
36
+ </script>
37
+ <script type="module" src="{{ url_for('static', filename='js/expand-transaction.js') }}">
38
+ </script>
39
+ <script type="module" src="{{ url_for('static', filename='js/show-linked-transaction.js') }}">
40
+ </script>
41
+ <script type="module" src="{{ url_for('static', filename='js/create-category-chart.js') }}">
42
+ </script>
43
+
44
+ {% endblock %}
45
+
46
+
4
47
  {% block header %}
5
48
 
6
49
  <h1>
@@ -58,47 +101,3 @@
58
101
  </div>
59
102
 
60
103
  {% endblock %}
61
-
62
-
63
- {% block javascript %}
64
-
65
- <script>
66
- const CREDIT_ACTIVITY_RECONCILIATION_ENDPOINT = "{{ url_for('credit.reconcile_activity', statement_id=statement.id) }}";
67
- const UPDATE_STATEMENT_DUE_DATE_ENDPOINT = "{{ url_for('credit.update_statement_due_date', statement_id=statement.id) }}";
68
- const MAKE_PAYMENT_ENDPOINT = "{{ url_for('credit.pay_credit_card', card_id=statement.card_id, statement_id=statement.id) }}";
69
- const EXPAND_TRANSACTION_ENDPOINT = "{{ url_for('credit.expand_transaction') }}";
70
- const LINKED_TRANSACTION_ENDPOINT = "{{ url_for('credit.show_linked_transaction') }}";
71
- </script>
72
- <script>
73
- const CATEGORY_CHART_DATA = {
74
- labels: [
75
- {% for label in chart_data['labels'] %}
76
- {% if label == '' %}
77
- "Other",
78
- {% else %}
79
- "{{ label }}",
80
- {% endif %}
81
- {% endfor %}
82
- ],
83
- series: [
84
- {% for subtotal in chart_data['subtotals'] %}
85
- {{ subtotal }},
86
- {% endfor %}
87
- ],
88
- };
89
- </script>
90
- <script type="module" src="{{ url_for('static', filename='js/show-credit-activity-loader.js') }}">
91
- </script>
92
- <script type="module" src="{{ url_for('static', filename='js/update-statement-parameters.js') }}">
93
- </script>
94
- <script type="module" src="{{ url_for('static', filename='js/make-payment.js') }}">
95
- </script>
96
- <script type="module" src="{{ url_for('static', filename='js/expand-transaction.js') }}">
97
- </script>
98
- <script type="module" src="{{ url_for('static', filename='js/show-linked-transaction.js') }}">
99
- </script>
100
- <script type="module" src="{{ url_for('static', filename='js/create-category-chart.js') }}">
101
- </script>
102
-
103
- {% endblock %}
104
-
@@ -1,6 +1,19 @@
1
1
  {% extends 'layout.html' %}
2
2
 
3
3
 
4
+ {% block javascript %}
5
+
6
+ <script src="{{ url_for('static', filename='js/define-filter.js') }}" defer>
7
+ </script>
8
+ <script>
9
+ const FILTER_ENDPOINT = "{{ url_for('credit.update_statements_display') }}";
10
+ </script>
11
+ <script type="module" src="{{ url_for('static', filename='js/update-statements-display.js') }}">
12
+ </script>
13
+
14
+ {% endblock %}
15
+
16
+
4
17
  {% block left_sidebar %}
5
18
 
6
19
  <nav id="sidebar-nav-menu">
@@ -54,16 +67,3 @@
54
67
  <a name="bottom"></a>
55
68
 
56
69
  {% endblock %}
57
-
58
-
59
- {% block javascript %}
60
-
61
- <script src="{{ url_for('static', filename='js/define-filter.js') }}">
62
- </script>
63
- <script>
64
- const FILTER_ENDPOINT = "{{ url_for('credit.update_statements_display') }}";
65
- </script>
66
- <script type="module" src="{{ url_for('static', filename='js/update-statements-display.js') }}">
67
- </script>
68
-
69
- {% endblock %}
@@ -2,6 +2,34 @@
2
2
  {% set full_view = True %}
3
3
 
4
4
 
5
+ {% block javascript %}
6
+
7
+ <script src="{{ url_for('static', filename='js/define-filter.js') }}" defer>
8
+ </script>
9
+ <script>
10
+ const FILTER_ENDPOINT = "{{ url_for('credit.update_transactions_display') }}";
11
+ const EXPAND_TRANSACTION_ENDPOINT = "{{ url_for('credit.expand_transaction') }}";
12
+ const LINKED_TRANSACTION_ENDPOINT = "{{ url_for('credit.show_linked_transaction') }}";
13
+ const LOAD_TRANSACTIONS_ENDPOINT = "{{ url_for('credit.load_more_transactions') }}";
14
+ const LOAD_TRANSACTIONS_SELECTORS = {
15
+ "selected_card_ids": {{ selected_card_ids }},
16
+ "sort_order": "{{ sort_order }}",
17
+ "block_count": 1,
18
+ "full_view": {{ full_view|tojson }}
19
+ }
20
+ </script>
21
+ <script type="module" src="{{ url_for('static', filename='js/update-transactions-display.js') }}">
22
+ </script>
23
+ <script type="module" src="{{ url_for('static', filename='js/load-more-transactions.js') }}">
24
+ </script>
25
+ <script type="module" src="{{ url_for('static', filename='js/expand-transaction.js') }}">
26
+ </script>
27
+ <script type="module" src="{{ url_for('static', filename='js/show-linked-transaction.js') }}">
28
+ </script>
29
+
30
+ {% endblock %}
31
+
32
+
5
33
  {% block left_sidebar %}
6
34
 
7
35
  <nav id="sidebar-nav-menu">
@@ -75,31 +103,3 @@
75
103
  <a name="bottom"></a>
76
104
 
77
105
  {% endblock %}
78
-
79
-
80
- {% block javascript %}
81
-
82
- <script src="{{ url_for('static', filename='js/define-filter.js') }}">
83
- </script>
84
- <script>
85
- const FILTER_ENDPOINT = "{{ url_for('credit.update_transactions_display') }}";
86
- const EXPAND_TRANSACTION_ENDPOINT = "{{ url_for('credit.expand_transaction') }}";
87
- const LINKED_TRANSACTION_ENDPOINT = "{{ url_for('credit.show_linked_transaction') }}";
88
- const LOAD_TRANSACTIONS_ENDPOINT = "{{ url_for('credit.load_more_transactions') }}";
89
- const LOAD_TRANSACTIONS_SELECTORS = {
90
- "selected_card_ids": {{ selected_card_ids }},
91
- "sort_order": "{{ sort_order }}",
92
- "block_count": 1,
93
- "full_view": {{ full_view|tojson }}
94
- }
95
- </script>
96
- <script type="module" src="{{ url_for('static', filename='js/update-transactions-display.js') }}">
97
- </script>
98
- <script type="module" src="{{ url_for('static', filename='js/load-more-transactions.js') }}">
99
- </script>
100
- <script type="module" src="{{ url_for('static', filename='js/expand-transaction.js') }}">
101
- </script>
102
- <script type="module" src="{{ url_for('static', filename='js/show-linked-transaction.js') }}">
103
- </script>
104
-
105
- {% endblock %}
@@ -43,7 +43,14 @@
43
43
  <script>
44
44
  window.Chartist || document.write('<script src="{{ url_for('static', filename='chartist-1.5.0.min.js') }}"><\/script>')
45
45
  </script>
46
+ <!-- Custom application JavaScript -->
47
+ <script type="module" src="{{ url_for('static', filename='js/toggle-navigation.js') }}">
48
+ </script>
49
+ {% block javascript %}
50
+ {% endblock %}
51
+
46
52
  </head>
53
+
47
54
  <body>
48
55
 
49
56
  <header id="masthead">
@@ -117,10 +124,5 @@
117
124
  </p>
118
125
  </footer>
119
126
 
120
- <script type="module" src="{{ url_for('static', filename='js/toggle-navigation.js') }}">
121
- </script>
122
- {% block javascript %}
123
- {% endblock %}
124
-
125
127
  </body>
126
128
  </html>