chellow 1727274025.0.0__tar.gz → 1728658886.0.0__tar.gz

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

Potentially problematic release.


This version of chellow might be problematic. Click here for more details.

Files changed (480) hide show
  1. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/PKG-INFO +1 -1
  2. chellow-1728658886.0.0/VERSION +1 -0
  3. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/__init__.py +2 -0
  4. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/models.py +8 -0
  5. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_247.py +95 -41
  6. chellow-1728658886.0.0/chellow/rrun.py +77 -0
  7. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/scenario_docs.html +2 -0
  8. chellow-1728658886.0.0/chellow/templates/report_run_monthly_duration_org.html +73 -0
  9. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/report_runs.html +31 -0
  10. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/views.py +17 -1
  11. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_247.py +140 -0
  12. chellow-1727274025.0.0/VERSION +0 -1
  13. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/.ebextensions/chellow.config +0 -0
  14. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/.github/workflows/chellow.yml +0 -0
  15. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/.gitignore +0 -0
  16. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/README.md +0 -0
  17. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/application.py +0 -0
  18. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/bin/chellow_service_monitor.sh +0 -0
  19. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/bin/chellow_start.sh +0 -0
  20. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/api.py +0 -0
  21. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/bank_holidays.py +0 -0
  22. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/commands.py +0 -0
  23. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/dloads.py +0 -0
  24. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/__init__.py +0 -0
  25. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/aahedc.py +0 -0
  26. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_importer.py +0 -0
  27. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/__init__.py +0 -0
  28. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/activity_mop_stark_xlsx.py +0 -0
  29. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/annual_mop_stark_xlsx.py +0 -0
  30. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/bgb_edi.py +0 -0
  31. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/csv.py +0 -0
  32. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/edf_export_xlsx.py +0 -0
  33. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/engie_edi.py +0 -0
  34. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/engie_xls.py +0 -0
  35. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/engie_xlsx.py +0 -0
  36. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/gdf_csv.py +0 -0
  37. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/haven_csv.py +0 -0
  38. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/haven_edi.py +0 -0
  39. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/haven_edi_tprs.py +0 -0
  40. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/mm.py +0 -0
  41. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/nonsettlement_dc_stark_xlsx.py +0 -0
  42. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/settlement_dc_stark_xlsx.py +0 -0
  43. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/sse_edi.py +0 -0
  44. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bill_parsers/sww_xls.py +0 -0
  45. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bmarketidx.py +0 -0
  46. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/bsuos.py +0 -0
  47. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/ccl.py +0 -0
  48. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/cfd.py +0 -0
  49. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/computer.py +0 -0
  50. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/dno_rate_parser.py +0 -0
  51. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/duos.py +0 -0
  52. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/elexon.py +0 -0
  53. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/energy_management.py +0 -0
  54. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/hh_importer.py +0 -0
  55. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/hh_parser_bg_csv.py +0 -0
  56. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/hh_parser_df2.py +0 -0
  57. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/hh_parser_simple_csv.py +0 -0
  58. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/hh_parser_vital_xlsx.py +0 -0
  59. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/laf_import.py +0 -0
  60. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/lcc.py +0 -0
  61. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/mdd_importer.py +0 -0
  62. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/rcrc.py +0 -0
  63. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/ro.py +0 -0
  64. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/scenario.py +0 -0
  65. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/system_price.py +0 -0
  66. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/tlms.py +0 -0
  67. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/tnuos.py +0 -0
  68. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/triad.py +0 -0
  69. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/e/views.py +0 -0
  70. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/edi_lib.py +0 -0
  71. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/gas/bill_import.py +0 -0
  72. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/gas/bill_parser_csv.py +0 -0
  73. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/gas/bill_parser_engie_edi.py +0 -0
  74. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/gas/bill_parser_total_edi.py +0 -0
  75. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/gas/ccl.py +0 -0
  76. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/gas/cv.py +0 -0
  77. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/gas/dn_rate_parser.py +0 -0
  78. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/gas/engine.py +0 -0
  79. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/gas/transportation.py +0 -0
  80. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/gas/views.py +0 -0
  81. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/general_import.py +0 -0
  82. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/national_grid.py +0 -0
  83. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/proxy.py +0 -0
  84. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/rate_server.py +0 -0
  85. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/__init__.py +0 -0
  86. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_109.py +0 -0
  87. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_111.py +0 -0
  88. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_169.py +0 -0
  89. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_181.py +0 -0
  90. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_183.py +0 -0
  91. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_187.py +0 -0
  92. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_219.py +0 -0
  93. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_231.py +0 -0
  94. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_233.py +0 -0
  95. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_241.py +0 -0
  96. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_29.py +0 -0
  97. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_291.py +0 -0
  98. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_33.py +0 -0
  99. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_387.py +0 -0
  100. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_41.py +0 -0
  101. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_429.py +0 -0
  102. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_59.py +0 -0
  103. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_81.py +0 -0
  104. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_87.py +0 -0
  105. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_asset_comparison.py +0 -0
  106. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_batches.py +0 -0
  107. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_bills.py +0 -0
  108. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_csv_llfcs.py +0 -0
  109. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_csv_site_hh_data.py +0 -0
  110. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_csv_site_snags.py +0 -0
  111. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_ecoes_comparison.py +0 -0
  112. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_g_monthly_duration.py +0 -0
  113. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_g_supplies_snapshot.py +0 -0
  114. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_g_supply_virtual_bill.py +0 -0
  115. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_g_virtual_bills.py +0 -0
  116. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_g_virtual_bills_hh.py +0 -0
  117. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_sscs.py +0 -0
  118. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/reports/report_supply_contacts.py +0 -0
  119. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/static/css/chellow.css +0 -0
  120. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/static/images/favicon.svg +0 -0
  121. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/static/images/favicon_test.svg +0 -0
  122. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/static/images/logo.png +0 -0
  123. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/static/js/htmx.min.js +0 -0
  124. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/403.html +0 -0
  125. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/base.html +0 -0
  126. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/bill_type.html +0 -0
  127. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/bill_types.html +0 -0
  128. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/chain.html +0 -0
  129. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/csv_sites_monthly_duration.html +0 -0
  130. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/downloads.html +0 -0
  131. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/asset_comparison.html +0 -0
  132. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/channel.html +0 -0
  133. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/channel_add.html +0 -0
  134. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/channel_edit.html +0 -0
  135. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/channel_snag.html +0 -0
  136. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/channel_snag_edit.html +0 -0
  137. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/channel_snags.html +0 -0
  138. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/comm.html +0 -0
  139. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/comms.html +0 -0
  140. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/cop.html +0 -0
  141. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/cops.html +0 -0
  142. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/csv_bills.html +0 -0
  143. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/csv_register_reads.html +0 -0
  144. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/csv_sites_hh_data.html +0 -0
  145. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/csv_sites_triad.html +0 -0
  146. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/csv_supplies_hh_data.html +0 -0
  147. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/csv_supplies_snapshot.html +0 -0
  148. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/csv_supplies_triad.html +0 -0
  149. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_auto_importer.html +0 -0
  150. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_batch.html +0 -0
  151. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_batch_add.html +0 -0
  152. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_batch_edit.html +0 -0
  153. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_batch_file.html +0 -0
  154. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_batch_file_edit.html +0 -0
  155. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_batch_upload_file.html +0 -0
  156. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_batches.html +0 -0
  157. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_bill.html +0 -0
  158. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_bill_add.html +0 -0
  159. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_bill_edit.html +0 -0
  160. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_bill_import.html +0 -0
  161. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_bill_imports.html +0 -0
  162. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_contract.html +0 -0
  163. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_contract_edit.html +0 -0
  164. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_contract_hh_import.html +0 -0
  165. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_contract_hh_imports.html +0 -0
  166. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_contract_properties.html +0 -0
  167. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_contract_properties_edit.html +0 -0
  168. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_contracts.html +0 -0
  169. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_contracts_add.html +0 -0
  170. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_rate_script.html +0 -0
  171. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_rate_script_add.html +0 -0
  172. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dc_rate_script_edit.html +0 -0
  173. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dno.html +0 -0
  174. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dno_rate_script.html +0 -0
  175. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dno_rate_script_add.html +0 -0
  176. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dno_rate_script_edit.html +0 -0
  177. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dnos.html +0 -0
  178. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dtc_meter_type.html +0 -0
  179. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/dtc_meter_types.html +0 -0
  180. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/duration_report.html +0 -0
  181. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/elexon.html +0 -0
  182. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/em_hh_data.html +0 -0
  183. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/em_months.html +0 -0
  184. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/em_site.html +0 -0
  185. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/em_totals.html +0 -0
  186. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/energisation_status.html +0 -0
  187. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/energisation_statuses.html +0 -0
  188. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/era_edit.html +0 -0
  189. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/era_edit_form.html +0 -0
  190. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/era_supplier_bill_add.html +0 -0
  191. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/generator_type.html +0 -0
  192. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/generator_types.html +0 -0
  193. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/gsp_group.html +0 -0
  194. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/gsp_groups.html +0 -0
  195. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/hh_datum_edit.html +0 -0
  196. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/lafs.html +0 -0
  197. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/lcc.html +0 -0
  198. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/llfc.html +0 -0
  199. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/llfc_edit.html +0 -0
  200. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/llfcs.html +0 -0
  201. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/market_role.html +0 -0
  202. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/market_roles.html +0 -0
  203. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/meter_payment_type.html +0 -0
  204. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/meter_payment_types.html +0 -0
  205. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/meter_type.html +0 -0
  206. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/meter_types.html +0 -0
  207. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_batch.html +0 -0
  208. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_batch_add.html +0 -0
  209. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_batch_edit.html +0 -0
  210. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_batch_file.html +0 -0
  211. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_batch_file_edit.html +0 -0
  212. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_batch_upload_file.html +0 -0
  213. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_batches.html +0 -0
  214. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_bill.html +0 -0
  215. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_bill_add.html +0 -0
  216. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_bill_edit.html +0 -0
  217. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_bill_import.html +0 -0
  218. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_bill_imports.html +0 -0
  219. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_contract.html +0 -0
  220. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_contract_add.html +0 -0
  221. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_contract_edit.html +0 -0
  222. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_contracts.html +0 -0
  223. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_rate_script.html +0 -0
  224. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_rate_script_add.html +0 -0
  225. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mop_rate_script_edit.html +0 -0
  226. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mtc.html +0 -0
  227. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mtc_llfc.html +0 -0
  228. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mtc_llfc_ssc.html +0 -0
  229. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mtc_llfc_ssc_pc.html +0 -0
  230. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mtc_llfc_ssc_pcs.html +0 -0
  231. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mtc_llfc_sscs.html +0 -0
  232. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mtc_llfcs.html +0 -0
  233. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mtc_participant.html +0 -0
  234. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mtc_participants.html +0 -0
  235. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mtc_ssc.html +0 -0
  236. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mtc_sscs.html +0 -0
  237. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/mtcs.html +0 -0
  238. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/ods_monthly_duration.html +0 -0
  239. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/participant.html +0 -0
  240. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/participants.html +0 -0
  241. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/parties.html +0 -0
  242. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/party.html +0 -0
  243. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/pc.html +0 -0
  244. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/pcs.html +0 -0
  245. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/read_add.html +0 -0
  246. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/read_edit.html +0 -0
  247. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/read_type.html +0 -0
  248. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/read_types.html +0 -0
  249. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/scenario.html +0 -0
  250. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/scenario_add.html +0 -0
  251. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/scenario_edit.html +0 -0
  252. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/scenarios.html +0 -0
  253. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/site_add_e_supply.html +0 -0
  254. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/site_add_e_supply_form.html +0 -0
  255. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/site_hh_data.html +0 -0
  256. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/site_site_snags.html +0 -0
  257. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/site_snag.html +0 -0
  258. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/site_snag_edit.html +0 -0
  259. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/site_snags.html +0 -0
  260. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/site_snags_edit.html +0 -0
  261. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/source.html +0 -0
  262. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/sources.html +0 -0
  263. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/ssc.html +0 -0
  264. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/sscs.html +0 -0
  265. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_batch.html +0 -0
  266. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_batch_add.html +0 -0
  267. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_batch_edit.html +0 -0
  268. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_batch_file.html +0 -0
  269. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_batch_file_add.html +0 -0
  270. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_batch_file_edit.html +0 -0
  271. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_batch_upload_file.html +0 -0
  272. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_batches.html +0 -0
  273. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_bill.html +0 -0
  274. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_bill_add.html +0 -0
  275. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_bill_edit.html +0 -0
  276. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_bill_import.html +0 -0
  277. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_bill_imports.html +0 -0
  278. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_contract.html +0 -0
  279. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_contract_add.html +0 -0
  280. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_contract_edit.html +0 -0
  281. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_contracts.html +0 -0
  282. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_rate_script.html +0 -0
  283. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_rate_script_add.html +0 -0
  284. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supplier_rate_script_edit.html +0 -0
  285. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supply.html +0 -0
  286. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supply_edit.html +0 -0
  287. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supply_eras.html +0 -0
  288. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supply_hh_data.html +0 -0
  289. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supply_months.html +0 -0
  290. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supply_note_add.html +0 -0
  291. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supply_note_edit.html +0 -0
  292. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supply_notes.html +0 -0
  293. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supply_post.html +0 -0
  294. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/supply_virtual_bill.html +0 -0
  295. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/tpr.html +0 -0
  296. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/e/tprs.html +0 -0
  297. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/edi_viewer.html +0 -0
  298. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/batch.html +0 -0
  299. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/batch_add.html +0 -0
  300. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/batch_edit.html +0 -0
  301. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/batches.html +0 -0
  302. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/bill.html +0 -0
  303. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/bill_add.html +0 -0
  304. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/bill_edit.html +0 -0
  305. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/bill_import.html +0 -0
  306. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/bill_imports.html +0 -0
  307. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/dn.html +0 -0
  308. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/dns.html +0 -0
  309. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/era_edit.html +0 -0
  310. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/exit_zone.html +0 -0
  311. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/industry_auto_importer.html +0 -0
  312. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/industry_contract.html +0 -0
  313. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/industry_contract_add.html +0 -0
  314. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/industry_contract_edit.html +0 -0
  315. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/industry_contracts.html +0 -0
  316. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/industry_rate_script.html +0 -0
  317. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/industry_rate_script_add.html +0 -0
  318. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/industry_rate_script_edit.html +0 -0
  319. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/ldz.html +0 -0
  320. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/read_add.html +0 -0
  321. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/read_edit.html +0 -0
  322. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/read_type.html +0 -0
  323. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/read_types.html +0 -0
  324. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/reading_frequencies.html +0 -0
  325. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/reading_frequency.html +0 -0
  326. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/reports.html +0 -0
  327. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supplier_contract.html +0 -0
  328. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supplier_contract_add.html +0 -0
  329. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supplier_contract_edit.html +0 -0
  330. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supplier_contracts.html +0 -0
  331. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supplier_rate_script.html +0 -0
  332. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supplier_rate_script_add.html +0 -0
  333. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supplier_rate_script_edit.html +0 -0
  334. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supplies.html +0 -0
  335. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supply.html +0 -0
  336. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supply_edit.html +0 -0
  337. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supply_note_add.html +0 -0
  338. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supply_note_edit.html +0 -0
  339. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/supply_notes.html +0 -0
  340. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/unit.html +0 -0
  341. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/g/units.html +0 -0
  342. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/general_import.html +0 -0
  343. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/general_imports.html +0 -0
  344. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/home.html +0 -0
  345. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/input_date.html +0 -0
  346. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/local_report.html +0 -0
  347. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/local_reports.html +0 -0
  348. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/macros.html +0 -0
  349. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/national_grid.html +0 -0
  350. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/non_core_auto_importer.html +0 -0
  351. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/non_core_contract.html +0 -0
  352. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/non_core_contract_edit.html +0 -0
  353. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/non_core_contracts.html +0 -0
  354. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/non_core_rate_script.html +0 -0
  355. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/non_core_rate_script_add.html +0 -0
  356. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/non_core_rate_script_edit.html +0 -0
  357. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/object_summary.html +0 -0
  358. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/rate_server.html +0 -0
  359. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/report_run.html +0 -0
  360. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/report_run_asset_comparison.html +0 -0
  361. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/report_run_bill_check.html +0 -0
  362. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/report_run_ecoes_comparison.html +0 -0
  363. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/report_run_row.html +0 -0
  364. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/report_run_row_bill_check.html +0 -0
  365. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/report_run_supply_contacts.html +0 -0
  366. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/site.html +0 -0
  367. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/site_add.html +0 -0
  368. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/site_edit.html +0 -0
  369. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/site_gen_graph.html +0 -0
  370. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/site_hh_data.html +0 -0
  371. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/site_months.html +0 -0
  372. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/site_used_graph.html +0 -0
  373. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/sites.html +0 -0
  374. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/supplies.html +0 -0
  375. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/system.html +0 -0
  376. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/tester.html +0 -0
  377. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/user.html +0 -0
  378. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/user_roles.html +0 -0
  379. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/templates/users.html +0 -0
  380. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/testing.py +0 -0
  381. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/chellow/utils.py +0 -0
  382. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/gpl.txt +0 -0
  383. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/pyproject.toml +0 -0
  384. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/requirements.txt +0 -0
  385. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/setup.cfg +0 -0
  386. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/systemd/chellow.service +0 -0
  387. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/systemd/chellow_upgrader.service +0 -0
  388. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/systemd/chellow_upgrader.timer +0 -0
  389. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/conftest.py +0 -0
  390. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_activity_mop_stark_xlsx.py +0 -0
  391. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_annual_mop_stark_xlsx.py +0 -0
  392. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_csv.py +0 -0
  393. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_edf_export_xlsx.py +0 -0
  394. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_engie_edi.py +0 -0
  395. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_engie_xls.py +0 -0
  396. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_engie_xlsx.py +0 -0
  397. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_haven_csv.py +0 -0
  398. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_haven_edi.py +0 -0
  399. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_haven_edi_tprs.py +0 -0
  400. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_mm.py +0 -0
  401. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_nonsettlement_dc_stark_xlsx/bills.nonsettlement.dc.stark.xlsx +0 -0
  402. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_nonsettlement_dc_stark_xlsx/bills_old.nonsettlement.dc.stark.xlsx +0 -0
  403. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_nonsettlement_dc_stark_xlsx/test_bill_parser_nonsettlement_dc_stark_xlsx.py +0 -0
  404. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_settlement_dc_stark_xlsx/bills.settlement.dc.stark.xlsx +0 -0
  405. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_settlement_dc_stark_xlsx/test_bill_parser_settlement_dc_stark_xlsx.py +0 -0
  406. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_sse_edi.py +0 -0
  407. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/bill_parsers/test_bill_parser_sww_xls.py +0 -0
  408. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/system_price/prices.xls +0 -0
  409. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/system_price/test_system_price.py +0 -0
  410. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_aahedc.py +0 -0
  411. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_bill_importer.py +0 -0
  412. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_bsuos.py +0 -0
  413. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_ccl.py +0 -0
  414. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_cfd.py +0 -0
  415. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_computer.py +0 -0
  416. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_dno_rate_parser.py +0 -0
  417. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_duos.py +0 -0
  418. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_e_views.py +0 -0
  419. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_hh_importer.py +0 -0
  420. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_hh_parser_df2.py +0 -0
  421. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_hh_parser_vital_xlsx.py +0 -0
  422. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_laf_importer.py +0 -0
  423. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_mdd_importer.py +0 -0
  424. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_rcrc_importer.py +0 -0
  425. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_ro.py +0 -0
  426. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_scenario.py +0 -0
  427. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_tlms.py +0 -0
  428. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_tnuos.py +0 -0
  429. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/e/test_triad.py +0 -0
  430. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/gas/bill_parsers/test_g_bill_parser_engie_edi.py +0 -0
  431. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/gas/bill_parsers/test_g_bill_parser_total_edi.py +0 -0
  432. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/gas/test_dn_rate_parser.py +0 -0
  433. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/gas/test_engine.py +0 -0
  434. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/gas/test_g_cv.py +0 -0
  435. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/gas/test_gas_views.py +0 -0
  436. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/gas/test_transportation.py +0 -0
  437. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_g_monthly_duration.py +0 -0
  438. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_g_supplies_snapshot.py +0 -0
  439. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_g_supply_virtual_bill.py +0 -0
  440. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_g_virtual_bills.py +0 -0
  441. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_g_virtual_bills_hh.py +0 -0
  442. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_109.py +0 -0
  443. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_111.py +0 -0
  444. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_169.py +0 -0
  445. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_181.py +0 -0
  446. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_183.py +0 -0
  447. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_187.py +0 -0
  448. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_219.py +0 -0
  449. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_231.py +0 -0
  450. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_233.py +0 -0
  451. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_241.py +0 -0
  452. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_29.py +0 -0
  453. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_291.py +0 -0
  454. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_33.py +0 -0
  455. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_387.py +0 -0
  456. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_41.py +0 -0
  457. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_429.py +0 -0
  458. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_59.py +0 -0
  459. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_81.py +0 -0
  460. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_87.py +0 -0
  461. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_asset_comparison.py +0 -0
  462. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_batches.py +0 -0
  463. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_bills.py +0 -0
  464. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_csv_llfcs.py +0 -0
  465. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_csv_site_hh_data.py +0 -0
  466. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_csv_site_snags.py +0 -0
  467. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_dno_vl_parser.py +0 -0
  468. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_ecoes_comparison.py +0 -0
  469. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_sscs.py +0 -0
  470. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/reports/test_report_supply_contacts.py +0 -0
  471. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/test_chellow.py +0 -0
  472. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/test_dloads.py +0 -0
  473. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/test_edi_viewer.py +0 -0
  474. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/test_general_import.py +0 -0
  475. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/test_models.py +0 -0
  476. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/test_rate_server.py +0 -0
  477. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/test_testing.py +0 -0
  478. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/test_utils.py +0 -0
  479. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/test_views.py +0 -0
  480. {chellow-1727274025.0.0 → chellow-1728658886.0.0}/test/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: chellow
3
- Version: 1727274025.0.0
3
+ Version: 1728658886.0.0
4
4
  Summary: Web Application for checking UK energy bills.
5
5
  Project-URL: Homepage, https://github.com/WessexWater/chellow
6
6
  Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
@@ -0,0 +1 @@
1
+ __version__ = "1728658886.0.0"
@@ -25,6 +25,7 @@ import chellow.e.views
25
25
  import chellow.gas.cv
26
26
  import chellow.gas.views
27
27
  import chellow.national_grid
28
+ import chellow.rrun
28
29
  import chellow.testing
29
30
  from chellow.models import (
30
31
  Contract,
@@ -60,6 +61,7 @@ def get_importer_modules():
60
61
  chellow.e.bmarketidx,
61
62
  chellow.national_grid,
62
63
  chellow.rate_server,
64
+ chellow.rrun,
63
65
  )
64
66
 
65
67
 
@@ -6401,6 +6401,14 @@ class ReportRun(Base, PersistentClass):
6401
6401
  sess.flush()
6402
6402
  return report_run
6403
6403
 
6404
+ @staticmethod
6405
+ def w_insert(name, user_id, title, data):
6406
+ with Session() as wsess:
6407
+ user = User.get_by_id(wsess, user_id)
6408
+ report_run = ReportRun.insert(wsess, name, user, title, data)
6409
+ wsess.commit()
6410
+ return report_run.id
6411
+
6404
6412
  @staticmethod
6405
6413
  def w_update(report_run_id, state):
6406
6414
  with Session() as wsess:
@@ -24,6 +24,7 @@ from chellow.models import (
24
24
  Era,
25
25
  MeasurementRequirement,
26
26
  RSession,
27
+ ReportRun,
27
28
  Scenario,
28
29
  Site,
29
30
  SiteEra,
@@ -122,8 +123,10 @@ def _process_site(
122
123
  now,
123
124
  summary_titles,
124
125
  title_dict,
125
- era_rows,
126
+ org_rows,
126
127
  site_rows,
128
+ era_rows,
129
+ normal_reads,
127
130
  data_source_bill,
128
131
  ):
129
132
  scenario_hh = scenario_props.get("hh_data", {})
@@ -147,7 +150,6 @@ def _process_site(
147
150
 
148
151
  site_category = None
149
152
  site_sources = set()
150
- normal_reads = set()
151
153
  site_month_data = defaultdict(int)
152
154
  for i, (order, imp_mpan_core, exp_mpan_core, imp_ss, exp_ss) in enumerate(
153
155
  sorted(calcs, key=str)
@@ -155,8 +157,6 @@ def _process_site(
155
157
  if imp_mpan_core == "displaced":
156
158
  month_data = {}
157
159
  for sname in (
158
- "import-grid",
159
- "export-grid",
160
160
  "import-gen",
161
161
  "export-gen",
162
162
  "import-3rd-party",
@@ -169,7 +169,11 @@ def _process_site(
169
169
  for xname in ("kwh", "net-gbp"):
170
170
  month_data[f"{sname}-{xname}"] = 0
171
171
  month_data["billed-import-kwh"] = 0
172
+ month_data["import-grid-kwh"] = 0
173
+ month_data["export-grid-kwh"] = 0
172
174
  for suf in ("net-gbp", "vat-gbp", "gross-gbp"):
175
+ month_data[f"import-grid-{suf}"] = 0
176
+ month_data[f"export-grid-{suf}"] = 0
173
177
  month_data[f"billed-import-{suf}"] = 0
174
178
  month_data[f"billed-supplier-import-{suf}"] = None
175
179
  month_data[f"billed-dc-import-{suf}"] = None
@@ -240,8 +244,6 @@ def _process_site(
240
244
  site_sources.add(source_code)
241
245
  month_data = {}
242
246
  for name in (
243
- "import-grid",
244
- "export-grid",
245
247
  "import-gen",
246
248
  "export-gen",
247
249
  "import-3rd-party",
@@ -255,7 +257,9 @@ def _process_site(
255
257
  month_data[f"{name}-{sname}"] = 0
256
258
  for polarity in ("import", "export"):
257
259
  month_data[f"billed-{polarity}-kwh"] = 0
260
+ month_data[f"{polarity}-grid-kwh"] = 0
258
261
  for suf in ("net-gbp", "vat-gbp", "gross-gbp"):
262
+ month_data[f"{polarity}-grid-{suf}"] = 0
259
263
  month_data[f"billed-{polarity}-{suf}"] = 0
260
264
  month_data[f"billed-supplier-{polarity}-{suf}"] = 0
261
265
  month_data[f"billed-dc-{polarity}-{suf}"] = 0
@@ -267,28 +271,32 @@ def _process_site(
267
271
  kwh = sum(hh["msp-kwh"] for hh in imp_ss.hh_data)
268
272
  imp_supplier_bill = imp_ss.supplier_bill
269
273
 
270
- gbp = imp_supplier_bill.get("net-gbp", 0)
274
+ net_gbp = imp_supplier_bill.get("net-gbp", 0)
275
+ vat_gbp = imp_supplier_bill.get("vat-gbp", 0)
276
+ gross_gbp = imp_supplier_bill.get("gross-gbp", 0)
271
277
 
272
278
  if source_code in ("grid", "gen-grid"):
273
- month_data["import-grid-net-gbp"] += gbp
279
+ month_data["import-grid-net-gbp"] += net_gbp
280
+ month_data["import-grid-vat-gbp"] += vat_gbp
281
+ month_data["import-grid-gross-gbp"] += gross_gbp
274
282
  month_data["import-grid-kwh"] += kwh
275
- month_data["used-net-gbp"] += gbp
283
+ month_data["used-net-gbp"] += net_gbp
276
284
  month_data["used-kwh"] += kwh
277
285
  if source_code == "gen-grid":
278
286
  month_data["export-gen-kwh"] += kwh
279
287
  elif source_code == "3rd-party":
280
- month_data["import-3rd-party-net-gbp"] += gbp
288
+ month_data["import-3rd-party-net-gbp"] += net_gbp
281
289
  month_data["import-3rd-party-kwh"] += kwh
282
- month_data["used-3rd-party-net-gbp"] += gbp
290
+ month_data["used-3rd-party-net-gbp"] += net_gbp
283
291
  month_data["used-3rd-party-kwh"] += kwh
284
- month_data["used-net-gbp"] += gbp
292
+ month_data["used-net-gbp"] += net_gbp
285
293
  month_data["used-kwh"] += kwh
286
294
  elif source_code == "3rd-party-reverse":
287
- month_data["export-3rd-party-net-gbp"] += gbp
295
+ month_data["export-3rd-party-net-gbp"] += net_gbp
288
296
  month_data["export-3rd-party-kwh"] += kwh
289
- month_data["used-3rd-party-net-gbp"] -= gbp
297
+ month_data["used-3rd-party-net-gbp"] -= net_gbp
290
298
  month_data["used-3rd-party-kwh"] -= kwh
291
- month_data["used-net-gbp"] -= gbp
299
+ month_data["used-net-gbp"] -= net_gbp
292
300
  month_data["used-kwh"] -= kwh
293
301
  elif source_code == "gen":
294
302
  month_data["import-gen-kwh"] += kwh
@@ -299,27 +307,31 @@ def _process_site(
299
307
  kwh = sum(hh["msp-kwh"] for hh in exp_ss.hh_data)
300
308
  exp_supplier_bill = exp_ss.supplier_bill
301
309
 
302
- gbp = exp_supplier_bill.get("net-gbp", 0)
310
+ net_gbp = exp_supplier_bill.get("net-gbp", 0)
311
+ vat_gbp = exp_supplier_bill.get("vat-gbp", 0)
312
+ gross_gbp = exp_supplier_bill.get("gross-gbp", 0)
303
313
 
304
314
  if source_code in ("grid", "gen-grid"):
305
- month_data["export-grid-net-gbp"] += gbp
315
+ month_data["export-grid-net-gbp"] += net_gbp
316
+ month_data["export-grid-vat-gbp"] += vat_gbp
317
+ month_data["export-grid-gross-gbp"] += gross_gbp
306
318
  month_data["export-grid-kwh"] += kwh
307
319
  if source_code == "gen-grid":
308
320
  month_data["import-gen-kwh"] += kwh
309
321
 
310
322
  elif source_code == "3rd-party":
311
- month_data["export-3rd-party-net-gbp"] += gbp
323
+ month_data["export-3rd-party-net-gbp"] += net_gbp
312
324
  month_data["export-3rd-party-kwh"] += kwh
313
- month_data["used-3rd-party-net-gbp"] -= gbp
325
+ month_data["used-3rd-party-net-gbp"] -= net_gbp
314
326
  month_data["used-3rd-party-kwh"] -= kwh
315
- month_data["used-net-gbp"] -= gbp
327
+ month_data["used-net-gbp"] -= net_gbp
316
328
  month_data["used-kwh"] -= kwh
317
329
  elif source_code == "3rd-party-reverse":
318
- month_data["import-3rd-party-net-gbp"] += gbp
330
+ month_data["import-3rd-party-net-gbp"] += net_gbp
319
331
  month_data["import-3rd-party-kwh"] += kwh
320
- month_data["used-3rd-party-net-gbp"] += gbp
332
+ month_data["used-3rd-party-net-gbp"] += net_gbp
321
333
  month_data["used-3rd-party-kwh"] += kwh
322
- month_data["used-net-gbp"] += gbp
334
+ month_data["used-net-gbp"] += net_gbp
323
335
  month_data["used-kwh"] += kwh
324
336
  elif source_code == "gen":
325
337
  month_data["export-gen-kwh"] += kwh
@@ -493,8 +505,6 @@ def _process_site(
493
505
  if len(bills) > 0:
494
506
  month_data = {}
495
507
  for name in (
496
- "import-grid",
497
- "export-grid",
498
508
  "import-gen",
499
509
  "export-gen",
500
510
  "import-3rd-party",
@@ -507,7 +517,11 @@ def _process_site(
507
517
  for sname in ("kwh", "net-gbp"):
508
518
  month_data[f"{name}-{sname}"] = 0
509
519
  month_data["billed-import-kwh"] = 0
520
+ month_data["import-grid-kwh"] = 0
521
+ month_data["export-grid-kwh"] = 0
510
522
  for suf in ("net-gbp", "vat-gbp", "gross-gbp"):
523
+ month_data[f"import-grid-{suf}"] = 0
524
+ month_data[f"export-grid-{suf}"] = 0
511
525
  month_data[f"billed-import-{suf}"] = 0
512
526
  month_data[f"billed-supplier-import-{suf}"] = 0
513
527
  month_data[f"billed-dc-import-{suf}"] = 0
@@ -610,8 +624,6 @@ def _process_site(
610
624
  if len(bills) > 0:
611
625
  month_data = {}
612
626
  for name in (
613
- "import-grid",
614
- "export-grid",
615
627
  "import-gen",
616
628
  "export-gen",
617
629
  "import-3rd-party",
@@ -624,8 +636,12 @@ def _process_site(
624
636
  for sname in ("kwh", "net-gbp"):
625
637
  month_data[f"{name}-{sname}"] = 0
626
638
  month_data["billed-import-kwh"] = 0
639
+ month_data["import-grid-kwh"] = 0
640
+ month_data["export-grid-kwh"] = 0
627
641
  for suf in ("net-gbp", "vat-gbp", "gross-gbp"):
628
642
  month_data[f"billed-import-{suf}"] = 0
643
+ month_data[f"import-grid-{suf}"] = 0
644
+ month_data[f"export-grid-{suf}"] = 0
629
645
  month_data[f"billed-supplier-import-{suf}"] = 0
630
646
  month_data[f"billed-dc-import-{suf}"] = 0
631
647
  month_data[f"billed-mop-import-{suf}"] = 0
@@ -708,7 +724,7 @@ def _process_site(
708
724
  ] + [site_month_data[k] for k in summary_titles]
709
725
 
710
726
  site_rows.append([make_val(v) for v in site_row])
711
- return normal_reads
727
+ return site_month_data
712
728
 
713
729
 
714
730
  class Object:
@@ -734,6 +750,7 @@ def content(scenario_props, base_name, user_id, compression, now):
734
750
  ind_cont = report_context["contract_names"] = {}
735
751
 
736
752
  sess = rf = None
753
+ org_rows = []
737
754
  site_rows = []
738
755
  era_rows = []
739
756
  normal_read_rows = []
@@ -806,7 +823,8 @@ def content(scenario_props, base_name, user_id, compression, now):
806
823
 
807
824
  user = User.get_by_id(sess, user_id)
808
825
 
809
- rf = open_file("_".join(base_name) + ".ods", user, mode="wb")
826
+ fname = "_".join(base_name) + ".ods"
827
+ rf = open_file(fname, user, mode="wb")
810
828
 
811
829
  for rate_script in scenario_props.get("rates", []):
812
830
  contract_id = rate_script["contract_id"]
@@ -858,7 +876,21 @@ def content(scenario_props, base_name, user_id, compression, now):
858
876
  )
859
877
 
860
878
  by_hh = scenario_props.get("by_hh", False)
879
+ org_header_titles = [
880
+ "creation-date",
881
+ "month",
882
+ ]
861
883
 
884
+ site_header_titles = [
885
+ "creation-date",
886
+ "site-id",
887
+ "site-name",
888
+ "associated-site-ids",
889
+ "month",
890
+ "metering-type",
891
+ "sources",
892
+ "generator-types",
893
+ ]
862
894
  era_header_titles = [
863
895
  "creation-date",
864
896
  "imp-mpan-core",
@@ -888,16 +920,6 @@ def content(scenario_props, base_name, user_id, compression, now):
888
920
  "associated-site-ids",
889
921
  "month",
890
922
  ]
891
- site_header_titles = [
892
- "creation-date",
893
- "site-id",
894
- "site-name",
895
- "associated-site-ids",
896
- "month",
897
- "metering-type",
898
- "sources",
899
- "generator-types",
900
- ]
901
923
  summary_titles = [
902
924
  "import-grid-kwh",
903
925
  "export-grid-kwh",
@@ -909,7 +931,11 @@ def content(scenario_props, base_name, user_id, compression, now):
909
931
  "used-kwh",
910
932
  "used-3rd-party-kwh",
911
933
  "import-grid-net-gbp",
934
+ "import-grid-vat-gbp",
935
+ "import-grid-gross-gbp",
912
936
  "export-grid-net-gbp",
937
+ "export-grid-vat-gbp",
938
+ "export-grid-gross-gbp",
913
939
  "import-gen-net-gbp",
914
940
  "export-gen-net-gbp",
915
941
  "import-3rd-party-net-gbp",
@@ -1003,6 +1029,7 @@ def content(scenario_props, base_name, user_id, compression, now):
1003
1029
  + [None]
1004
1030
  + ["exp-supplier-" + t for t in title_dict["exp-supplier"]]
1005
1031
  )
1032
+ org_rows.append(org_header_titles + summary_titles)
1006
1033
  site_rows.append(site_header_titles + summary_titles)
1007
1034
  era_rows.append(era_titles)
1008
1035
 
@@ -1016,6 +1043,7 @@ def content(scenario_props, base_name, user_id, compression, now):
1016
1043
  data_source_bill.finish_date = month_finish
1017
1044
  else:
1018
1045
  data_source_bill = None
1046
+ org_month_data = defaultdict(int)
1019
1047
  for site in sites:
1020
1048
  if by_hh:
1021
1049
  sf = [
@@ -1027,7 +1055,7 @@ def content(scenario_props, base_name, user_id, compression, now):
1027
1055
 
1028
1056
  for start, finish in sf:
1029
1057
  try:
1030
- normal_reads = normal_reads | _process_site(
1058
+ site_month_data = _process_site(
1031
1059
  sess,
1032
1060
  report_context,
1033
1061
  forecast_from,
@@ -1039,10 +1067,16 @@ def content(scenario_props, base_name, user_id, compression, now):
1039
1067
  now,
1040
1068
  summary_titles,
1041
1069
  title_dict,
1042
- era_rows,
1070
+ org_rows,
1043
1071
  site_rows,
1072
+ era_rows,
1073
+ normal_reads,
1044
1074
  data_source_bill,
1045
1075
  )
1076
+ for k, v in site_month_data.items():
1077
+ if v is not None:
1078
+ org_month_data[k] += v
1079
+
1046
1080
  except BadRequest as e:
1047
1081
  raise BadRequest(f"Site Code {site.code}: {e.description}")
1048
1082
 
@@ -1053,9 +1087,29 @@ def content(scenario_props, base_name, user_id, compression, now):
1053
1087
  row = [mpan_core, r.date, r.msn, r.type] + list(r.reads)
1054
1088
  normal_read_rows.append(row)
1055
1089
 
1090
+ org_row = [now, month_start] + [
1091
+ org_month_data[k] for k in summary_titles
1092
+ ]
1093
+ org_rows.append([make_val(v) for v in org_row])
1094
+
1056
1095
  write_spreadsheet(
1057
1096
  rf, compression, site_rows, era_rows, normal_read_rows
1058
1097
  )
1098
+ if scenario_props.get("save_report_run", False):
1099
+ report_run_id = ReportRun.w_insert(
1100
+ "monthly_duration", user_id, fname, {"scenario": scenario_props}
1101
+ )
1102
+ for tab, rows in (
1103
+ ("org", org_rows),
1104
+ ("site", site_rows),
1105
+ ("era", era_rows),
1106
+ ):
1107
+ titles = rows[0]
1108
+ for row in rows[1:]:
1109
+ values = dict(zip(titles, row))
1110
+ ReportRun.w_insert_row(report_run_id, tab, titles, values, {})
1111
+ ReportRun.w_update(report_run_id, "finished")
1112
+
1059
1113
  except BadRequest as e:
1060
1114
  msg = e.description + traceback.format_exc()
1061
1115
  sys.stderr.write(msg + "\n")
@@ -0,0 +1,77 @@
1
+ import atexit
2
+ import collections
3
+ import threading
4
+ import traceback
5
+
6
+ from dateutil.relativedelta import relativedelta
7
+
8
+ from sqlalchemy import select
9
+
10
+ from chellow.models import ReportRun, Session
11
+ from chellow.utils import utc_datetime_now
12
+
13
+ rrun_deleter = None
14
+
15
+
16
+ def startup():
17
+ global rrun_deleter
18
+
19
+ rrun_deleter = ReportRunDeleter()
20
+ rrun_deleter.start()
21
+
22
+
23
+ class ReportRunDeleter(threading.Thread):
24
+ def __init__(self):
25
+ super(ReportRunDeleter, self).__init__(name="ReportRun Deleter")
26
+ self.messages = collections.deque(maxlen=1000)
27
+ self.stopped = threading.Event()
28
+ self.going = threading.Event()
29
+ self.global_alert = None
30
+
31
+ def stop(self):
32
+ self.stopped.set()
33
+ self.going.set()
34
+ self.join()
35
+
36
+ def go(self):
37
+ self.going.set()
38
+
39
+ def log(self, message):
40
+ self.messages.appendleft(
41
+ utc_datetime_now().strftime("%Y-%m-%d %H:%M:%S") + " - " + message
42
+ )
43
+
44
+ def run(self):
45
+ while not self.stopped.isSet():
46
+ try:
47
+ with Session() as sess:
48
+ now = utc_datetime_now()
49
+ cutoff_date = now - relativedelta(years=1)
50
+ for report_run in sess.scalars(
51
+ select(ReportRun).where(ReportRun.date_created < cutoff_date)
52
+ ):
53
+ report_run.delete(sess)
54
+ sess.commit()
55
+ self.log("Deleted report run")
56
+ except BaseException:
57
+ self.log("Outer problem " + traceback.format_exc())
58
+ self.global_alert = (
59
+ "There's a problem with a "
60
+ "<a href='/report_runs'>Report Runs</a>."
61
+ )
62
+ finally:
63
+ self.going.clear()
64
+ self.log("Finished deleting Report Runs.")
65
+
66
+ self.going.wait(24 * 60 * 60)
67
+ self.going.clear()
68
+
69
+
70
+ def get_importer():
71
+ return rrun_deleter
72
+
73
+
74
+ @atexit.register
75
+ def shutdown():
76
+ if rrun_deleter is not None:
77
+ rrun_deleter.stop()
@@ -137,6 +137,8 @@
137
137
  }
138
138
  }
139
139
  "is_bill_check": false, /* Use the bill check rates */
140
+
141
+ "save_report_run": false, /* Save the report as a Report Run */
140
142
  }</pre>
141
143
 
142
144
  <h3>HH Data</h3>
@@ -0,0 +1,73 @@
1
+ {% extends "base.html" %}
2
+
3
+ {% block title %}
4
+ &raquo; Report Runs &raquo; {{run.id}}
5
+ {% endblock %}
6
+
7
+ {% block nav %}
8
+ <a href="/report_runs">Report Runs</a> &raquo; {{run.id}}
9
+ {% endblock %}
10
+
11
+ {% block content %}
12
+ {% if request.method == "GET" and request.values.delete %}
13
+ <form method="post" action="/report_runs/{{run.id}}">
14
+ <fieldset>
15
+ <legend>Are you sure you want to delete this report run?</legend>
16
+ <input type="submit" name="delete" value="delete">
17
+ <a href="/report_runs/{{run.id}}">Cancel</a>
18
+ </fieldset>
19
+ </form>
20
+ {% else %}
21
+ <table>
22
+ <caption>Monthly Duration Report</caption>
23
+ <thead>
24
+ <tr>
25
+ <th>Date Created</th>
26
+ <th>Created By</th>
27
+ <th>Title</th>
28
+ <th>State</th>
29
+ <th>Delete</th>
30
+ <th>Download Spreadsheet</th>
31
+ </tr>
32
+ </thead>
33
+ <tbody>
34
+ <tr>
35
+ <td>{{run.date_created|hh_format}}</td>
36
+ <td>{{run.creator}}</td>
37
+ <td>{{run.title}}</td>
38
+ <td>{{run.state}}</td>
39
+ <td>
40
+ <form action="/report_runs/{{run.id}}">
41
+ <fieldset style="border: none;">
42
+ <input type="submit" name="delete" value="Delete">
43
+ </fieldset>
44
+ </form>
45
+ </td>
46
+ <td><a href="/report_runs/{{run.id}}/spreadsheet">Download</a></td>
47
+ </tr>
48
+ </tbody>
49
+ </table>
50
+
51
+ <table class="sticky">
52
+ <caption>
53
+ Organisation Level
54
+ </caption>
55
+ <thead>
56
+ <tr>
57
+ {% for title in org_rows[0].data.titles %}
58
+ <th>{{title}}</th>
59
+ {% endfor %}
60
+ </tr>
61
+ </thead>
62
+ <tbody>
63
+ {% for org_row in org_rows %}
64
+ <tr>
65
+ {% for title in org_row.data.titles %}
66
+ <td>{{org_row.data['values'][title]}}</td>
67
+ {% endfor %}
68
+ </tr>
69
+ {% endfor %}
70
+ </tbody>
71
+ </table>
72
+ {% endif %}
73
+ {% endblock %}
@@ -35,4 +35,35 @@
35
35
  {% endfor %}
36
36
  </tbody>
37
37
  </table>
38
+
39
+ <h2>Report Run Deleter</h2>
40
+
41
+ {% if importer %}
42
+
43
+ <table>
44
+ <tr>
45
+ <th>Is Going?</th>
46
+ <td>{{importer.going.is_set()}}</td>
47
+ </tr>
48
+ {% if importer.going.is_set() %}
49
+ <tr>
50
+ <th>Progress</th>
51
+ <td>{{importer.progress}}</td>
52
+ </tr>
53
+ {% endif %}
54
+ </table>
55
+
56
+
57
+ <h4 id="log">Log</h4>
58
+
59
+ <ul>
60
+ {% for message in importer.messages %}
61
+ <li>{{message}}</li>
62
+ {% endfor %}
63
+ </ul>
64
+
65
+
66
+ {% else %}
67
+ <p>Deleter not present.</p>
68
+ {% endif %}
38
69
  {% endblock %}
@@ -1287,8 +1287,9 @@ def download_delete(fname):
1287
1287
  @home.route("/report_runs")
1288
1288
  def report_runs_get():
1289
1289
  runs = g.sess.query(ReportRun).order_by(ReportRun.date_created.desc())
1290
+ importer = chellow.rrun.get_importer()
1290
1291
 
1291
- return render_template("report_runs.html", runs=runs)
1292
+ return render_template("report_runs.html", runs=runs, importer=importer)
1292
1293
 
1293
1294
 
1294
1295
  @home.route("/report_runs/<int:run_id>")
@@ -1375,6 +1376,21 @@ def report_run_get(run_id):
1375
1376
  run=run,
1376
1377
  rows=rows,
1377
1378
  )
1379
+ elif run.name == "monthly_duration":
1380
+ org_rows = (
1381
+ g.sess.execute(
1382
+ select(ReportRunRow)
1383
+ .filter(ReportRunRow.report_run == run, ReportRunRow.tab == "org")
1384
+ .order_by(ReportRunRow.data["values"]["month"])
1385
+ )
1386
+ .scalars()
1387
+ .all()
1388
+ )
1389
+ return render_template(
1390
+ "report_run_monthly_duration_org.html",
1391
+ run=run,
1392
+ org_rows=org_rows,
1393
+ )
1378
1394
 
1379
1395
  elif run.name == "ecoes_comparison":
1380
1396
  rows = (