chellow 1733501869.0.0__tar.gz → 1736431515.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 (490) hide show
  1. chellow-1736431515.0.0/.github/workflows/chellow.yml +95 -0
  2. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/PKG-INFO +2 -2
  3. chellow-1736431515.0.0/VERSION +1 -0
  4. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/edf_export_xlsx.py +59 -50
  5. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/views.py +122 -0
  6. {chellow-1733501869.0.0/chellow/templates → chellow-1736431515.0.0/chellow/templates/e}/site_hh_data.html +3 -2
  7. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supply.html +0 -2
  8. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supply.html +2 -4
  9. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/site.html +1 -1
  10. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/views.py +0 -119
  11. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_edf_export_xlsx.py +62 -0
  12. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_e_views.py +17 -0
  13. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/test_views.py +0 -13
  14. chellow-1733501869.0.0/.github/workflows/chellow.yml +0 -79
  15. chellow-1733501869.0.0/VERSION +0 -1
  16. chellow-1733501869.0.0/chellow/templates/e/site_hh_data.html +0 -52
  17. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/.ebextensions/chellow.config +0 -0
  18. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/.gitignore +0 -0
  19. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/README.md +0 -0
  20. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/application.py +0 -0
  21. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/bin/chellow_service_monitor.sh +0 -0
  22. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/bin/chellow_start.sh +0 -0
  23. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/__init__.py +0 -0
  24. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/api.py +0 -0
  25. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/bank_holidays.py +0 -0
  26. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/commands.py +0 -0
  27. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/dloads.py +0 -0
  28. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/__init__.py +0 -0
  29. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/aahedc.py +0 -0
  30. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_importer.py +0 -0
  31. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/__init__.py +0 -0
  32. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/activity_mop_stark_xlsx.py +0 -0
  33. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/annual_mop_stark_xlsx.py +0 -0
  34. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/bgb_edi.py +0 -0
  35. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/csv.py +0 -0
  36. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/engie_edi.py +0 -0
  37. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/engie_export_xlsx.py +0 -0
  38. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/engie_xls.py +0 -0
  39. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/engie_xlsx.py +0 -0
  40. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/gdf_csv.py +0 -0
  41. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/haven_csv.py +0 -0
  42. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/haven_edi.py +0 -0
  43. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/haven_edi_tprs.py +0 -0
  44. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/mm.py +0 -0
  45. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/nonsettlement_dc_stark_xlsx.py +0 -0
  46. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/settlement_dc_stark_xlsx.py +0 -0
  47. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/sse_edi.py +0 -0
  48. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bill_parsers/sww_xls.py +0 -0
  49. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bmarketidx.py +0 -0
  50. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/bsuos.py +0 -0
  51. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/ccl.py +0 -0
  52. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/cfd.py +0 -0
  53. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/computer.py +0 -0
  54. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/dno_rate_parser.py +0 -0
  55. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/duos.py +0 -0
  56. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/elexon.py +0 -0
  57. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/energy_management.py +0 -0
  58. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/hh_importer.py +0 -0
  59. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/hh_parser_bg_csv.py +0 -0
  60. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/hh_parser_df2.py +0 -0
  61. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/hh_parser_edf_csv.py +0 -0
  62. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/hh_parser_schneider_csv.py +0 -0
  63. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/hh_parser_schneider_xlsx.py +0 -0
  64. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/hh_parser_simple_csv.py +0 -0
  65. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/hh_parser_vital_xlsx.py +0 -0
  66. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/laf_import.py +0 -0
  67. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/lcc.py +0 -0
  68. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/mdd_importer.py +0 -0
  69. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/rcrc.py +0 -0
  70. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/ro.py +0 -0
  71. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/scenario.py +0 -0
  72. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/system_price.py +0 -0
  73. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/tlms.py +0 -0
  74. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/tnuos.py +0 -0
  75. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/e/triad.py +0 -0
  76. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/edi_lib.py +0 -0
  77. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/gas/bill_import.py +0 -0
  78. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/gas/bill_parser_csv.py +0 -0
  79. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/gas/bill_parser_engie_edi.py +0 -0
  80. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/gas/bill_parser_total_edi.py +0 -0
  81. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/gas/ccl.py +0 -0
  82. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/gas/cv.py +0 -0
  83. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/gas/dn_rate_parser.py +0 -0
  84. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/gas/engine.py +0 -0
  85. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/gas/transportation.py +0 -0
  86. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/gas/views.py +0 -0
  87. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/general_import.py +0 -0
  88. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/models.py +0 -0
  89. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/national_grid.py +0 -0
  90. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/proxy.py +0 -0
  91. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/rate_server.py +0 -0
  92. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/__init__.py +0 -0
  93. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_109.py +0 -0
  94. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_111.py +0 -0
  95. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_169.py +0 -0
  96. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_181.py +0 -0
  97. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_183.py +0 -0
  98. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_187.py +0 -0
  99. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_219.py +0 -0
  100. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_231.py +0 -0
  101. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_233.py +0 -0
  102. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_241.py +0 -0
  103. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_247.py +0 -0
  104. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_29.py +0 -0
  105. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_291.py +0 -0
  106. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_33.py +0 -0
  107. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_387.py +0 -0
  108. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_41.py +0 -0
  109. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_429.py +0 -0
  110. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_59.py +0 -0
  111. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_81.py +0 -0
  112. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_87.py +0 -0
  113. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_asset_comparison.py +0 -0
  114. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_batches.py +0 -0
  115. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_bills.py +0 -0
  116. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_csv_llfcs.py +0 -0
  117. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_csv_site_hh_data.py +0 -0
  118. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_csv_site_snags.py +0 -0
  119. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_ecoes_comparison.py +0 -0
  120. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_g_monthly_duration.py +0 -0
  121. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_g_supplies_snapshot.py +0 -0
  122. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_g_supply_virtual_bill.py +0 -0
  123. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_g_virtual_bills.py +0 -0
  124. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_g_virtual_bills_hh.py +0 -0
  125. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_sscs.py +0 -0
  126. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/reports/report_supply_contacts.py +0 -0
  127. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/rrun.py +0 -0
  128. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/static/css/chellow.css +0 -0
  129. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/static/images/favicon.svg +0 -0
  130. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/static/images/favicon_test.svg +0 -0
  131. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/static/images/logo.png +0 -0
  132. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/static/js/htmx.min.js +0 -0
  133. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/403.html +0 -0
  134. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/base.html +0 -0
  135. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/bill_type.html +0 -0
  136. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/bill_types.html +0 -0
  137. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/chain.html +0 -0
  138. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/csv_sites_monthly_duration.html +0 -0
  139. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/downloads.html +0 -0
  140. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/asset_comparison.html +0 -0
  141. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/channel.html +0 -0
  142. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/channel_add.html +0 -0
  143. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/channel_edit.html +0 -0
  144. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/channel_snag.html +0 -0
  145. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/channel_snag_edit.html +0 -0
  146. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/channel_snags.html +0 -0
  147. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/comm.html +0 -0
  148. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/comms.html +0 -0
  149. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/cop.html +0 -0
  150. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/cops.html +0 -0
  151. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/csv_bills.html +0 -0
  152. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/csv_register_reads.html +0 -0
  153. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/csv_sites_hh_data.html +0 -0
  154. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/csv_sites_triad.html +0 -0
  155. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/csv_supplies_hh_data.html +0 -0
  156. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/csv_supplies_snapshot.html +0 -0
  157. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/csv_supplies_triad.html +0 -0
  158. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_auto_importer.html +0 -0
  159. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_batch.html +0 -0
  160. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_batch_add.html +0 -0
  161. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_batch_edit.html +0 -0
  162. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_batch_file.html +0 -0
  163. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_batch_file_edit.html +0 -0
  164. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_batch_upload_file.html +0 -0
  165. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_batches.html +0 -0
  166. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_bill.html +0 -0
  167. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_bill_add.html +0 -0
  168. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_bill_edit.html +0 -0
  169. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_bill_import.html +0 -0
  170. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_bill_imports.html +0 -0
  171. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_contract.html +0 -0
  172. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_contract_edit.html +0 -0
  173. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_contract_hh_import.html +0 -0
  174. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_contract_hh_imports.html +0 -0
  175. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_contract_properties.html +0 -0
  176. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_contract_properties_edit.html +0 -0
  177. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_contracts.html +0 -0
  178. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_contracts_add.html +0 -0
  179. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_rate_script.html +0 -0
  180. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_rate_script_add.html +0 -0
  181. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dc_rate_script_edit.html +0 -0
  182. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dno.html +0 -0
  183. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dno_rate_script.html +0 -0
  184. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dno_rate_script_add.html +0 -0
  185. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dno_rate_script_edit.html +0 -0
  186. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dnos.html +0 -0
  187. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dtc_meter_type.html +0 -0
  188. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/dtc_meter_types.html +0 -0
  189. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/duration_report.html +0 -0
  190. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/elexon.html +0 -0
  191. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/em_hh_data.html +0 -0
  192. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/em_months.html +0 -0
  193. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/em_site.html +0 -0
  194. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/em_totals.html +0 -0
  195. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/energisation_status.html +0 -0
  196. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/energisation_statuses.html +0 -0
  197. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/era_edit.html +0 -0
  198. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/era_edit_form.html +0 -0
  199. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/era_supplier_bill_add.html +0 -0
  200. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/generator_type.html +0 -0
  201. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/generator_types.html +0 -0
  202. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/gsp_group.html +0 -0
  203. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/gsp_groups.html +0 -0
  204. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/hh_datum_edit.html +0 -0
  205. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/lafs.html +0 -0
  206. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/lcc.html +0 -0
  207. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/llfc.html +0 -0
  208. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/llfc_edit.html +0 -0
  209. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/llfcs.html +0 -0
  210. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/market_role.html +0 -0
  211. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/market_roles.html +0 -0
  212. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/meter_payment_type.html +0 -0
  213. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/meter_payment_types.html +0 -0
  214. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/meter_type.html +0 -0
  215. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/meter_types.html +0 -0
  216. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_batch.html +0 -0
  217. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_batch_add.html +0 -0
  218. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_batch_edit.html +0 -0
  219. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_batch_file.html +0 -0
  220. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_batch_file_edit.html +0 -0
  221. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_batch_upload_file.html +0 -0
  222. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_batches.html +0 -0
  223. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_bill.html +0 -0
  224. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_bill_add.html +0 -0
  225. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_bill_edit.html +0 -0
  226. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_bill_import.html +0 -0
  227. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_bill_imports.html +0 -0
  228. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_contract.html +0 -0
  229. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_contract_add.html +0 -0
  230. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_contract_edit.html +0 -0
  231. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_contracts.html +0 -0
  232. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_rate_script.html +0 -0
  233. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_rate_script_add.html +0 -0
  234. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mop_rate_script_edit.html +0 -0
  235. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mtc.html +0 -0
  236. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mtc_llfc.html +0 -0
  237. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mtc_llfc_ssc.html +0 -0
  238. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mtc_llfc_ssc_pc.html +0 -0
  239. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mtc_llfc_ssc_pcs.html +0 -0
  240. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mtc_llfc_sscs.html +0 -0
  241. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mtc_llfcs.html +0 -0
  242. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mtc_participant.html +0 -0
  243. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mtc_participants.html +0 -0
  244. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mtc_ssc.html +0 -0
  245. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mtc_sscs.html +0 -0
  246. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/mtcs.html +0 -0
  247. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/ods_monthly_duration.html +0 -0
  248. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/participant.html +0 -0
  249. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/participants.html +0 -0
  250. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/parties.html +0 -0
  251. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/party.html +0 -0
  252. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/pc.html +0 -0
  253. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/pcs.html +0 -0
  254. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/read_add.html +0 -0
  255. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/read_edit.html +0 -0
  256. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/read_type.html +0 -0
  257. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/read_types.html +0 -0
  258. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/scenario.html +0 -0
  259. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/scenario_add.html +0 -0
  260. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/scenario_docs.html +0 -0
  261. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/scenario_edit.html +0 -0
  262. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/scenarios.html +0 -0
  263. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/site_add_e_supply.html +0 -0
  264. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/site_add_e_supply_form.html +0 -0
  265. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/site_site_snags.html +0 -0
  266. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/site_snag.html +0 -0
  267. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/site_snag_edit.html +0 -0
  268. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/site_snags.html +0 -0
  269. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/site_snags_edit.html +0 -0
  270. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/source.html +0 -0
  271. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/sources.html +0 -0
  272. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/ssc.html +0 -0
  273. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/sscs.html +0 -0
  274. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_batch.html +0 -0
  275. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_batch_add.html +0 -0
  276. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_batch_edit.html +0 -0
  277. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_batch_file.html +0 -0
  278. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_batch_file_add.html +0 -0
  279. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_batch_file_edit.html +0 -0
  280. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_batch_upload_file.html +0 -0
  281. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_batches.html +0 -0
  282. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_bill.html +0 -0
  283. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_bill_add.html +0 -0
  284. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_bill_edit.html +0 -0
  285. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_bill_import.html +0 -0
  286. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_bill_imports.html +0 -0
  287. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_contract.html +0 -0
  288. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_contract_add.html +0 -0
  289. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_contract_edit.html +0 -0
  290. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_contracts.html +0 -0
  291. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_rate_script.html +0 -0
  292. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_rate_script_add.html +0 -0
  293. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supplier_rate_script_edit.html +0 -0
  294. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supply_edit.html +0 -0
  295. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supply_eras.html +0 -0
  296. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supply_hh_data.html +0 -0
  297. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supply_months.html +0 -0
  298. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supply_note_add.html +0 -0
  299. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supply_note_edit.html +0 -0
  300. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supply_notes.html +0 -0
  301. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supply_post.html +0 -0
  302. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/supply_virtual_bill.html +0 -0
  303. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/tpr.html +0 -0
  304. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/e/tprs.html +0 -0
  305. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/edi_viewer.html +0 -0
  306. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/batch.html +0 -0
  307. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/batch_add.html +0 -0
  308. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/batch_edit.html +0 -0
  309. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/batches.html +0 -0
  310. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/bill.html +0 -0
  311. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/bill_add.html +0 -0
  312. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/bill_edit.html +0 -0
  313. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/bill_import.html +0 -0
  314. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/bill_imports.html +0 -0
  315. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/dn.html +0 -0
  316. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/dns.html +0 -0
  317. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/era_edit.html +0 -0
  318. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/exit_zone.html +0 -0
  319. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/industry_auto_importer.html +0 -0
  320. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/industry_contract.html +0 -0
  321. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/industry_contract_add.html +0 -0
  322. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/industry_contract_edit.html +0 -0
  323. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/industry_contracts.html +0 -0
  324. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/industry_rate_script.html +0 -0
  325. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/industry_rate_script_add.html +0 -0
  326. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/industry_rate_script_edit.html +0 -0
  327. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/ldz.html +0 -0
  328. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/read_add.html +0 -0
  329. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/read_edit.html +0 -0
  330. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/read_type.html +0 -0
  331. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/read_types.html +0 -0
  332. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/reading_frequencies.html +0 -0
  333. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/reading_frequency.html +0 -0
  334. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/reports.html +0 -0
  335. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supplier_contract.html +0 -0
  336. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supplier_contract_add.html +0 -0
  337. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supplier_contract_edit.html +0 -0
  338. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supplier_contracts.html +0 -0
  339. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supplier_rate_script.html +0 -0
  340. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supplier_rate_script_add.html +0 -0
  341. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supplier_rate_script_edit.html +0 -0
  342. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supplies.html +0 -0
  343. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supply_edit.html +0 -0
  344. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supply_note_add.html +0 -0
  345. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supply_note_edit.html +0 -0
  346. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/supply_notes.html +0 -0
  347. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/unit.html +0 -0
  348. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/g/units.html +0 -0
  349. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/general_import.html +0 -0
  350. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/general_imports.html +0 -0
  351. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/home.html +0 -0
  352. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/input_date.html +0 -0
  353. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/local_report.html +0 -0
  354. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/local_reports.html +0 -0
  355. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/macros.html +0 -0
  356. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/national_grid.html +0 -0
  357. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/non_core_auto_importer.html +0 -0
  358. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/non_core_contract.html +0 -0
  359. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/non_core_contract_edit.html +0 -0
  360. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/non_core_contracts.html +0 -0
  361. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/non_core_rate_script.html +0 -0
  362. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/non_core_rate_script_add.html +0 -0
  363. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/non_core_rate_script_edit.html +0 -0
  364. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/object_summary.html +0 -0
  365. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/rate_server.html +0 -0
  366. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/report_run.html +0 -0
  367. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/report_run_asset_comparison.html +0 -0
  368. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/report_run_bill_check.html +0 -0
  369. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/report_run_ecoes_comparison.html +0 -0
  370. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/report_run_monthly_duration_org.html +0 -0
  371. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/report_run_row.html +0 -0
  372. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/report_run_row_bill_check.html +0 -0
  373. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/report_run_supply_contacts.html +0 -0
  374. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/report_runs.html +0 -0
  375. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/scenario.html +0 -0
  376. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/scenario_add.html +0 -0
  377. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/scenario_docs.html +0 -0
  378. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/scenario_edit.html +0 -0
  379. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/scenarios.html +0 -0
  380. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/site_add.html +0 -0
  381. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/site_edit.html +0 -0
  382. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/site_gen_graph.html +0 -0
  383. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/site_months.html +0 -0
  384. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/site_used_graph.html +0 -0
  385. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/sites.html +0 -0
  386. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/supplies.html +0 -0
  387. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/system.html +0 -0
  388. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/tester.html +0 -0
  389. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/user.html +0 -0
  390. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/user_roles.html +0 -0
  391. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/templates/users.html +0 -0
  392. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/testing.py +0 -0
  393. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/chellow/utils.py +0 -0
  394. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/gpl.txt +0 -0
  395. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/pyproject.toml +0 -0
  396. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/requirements.txt +0 -0
  397. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/setup.cfg +0 -0
  398. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/systemd/chellow.service +0 -0
  399. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/systemd/chellow_upgrader.service +0 -0
  400. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/systemd/chellow_upgrader.timer +0 -0
  401. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/conftest.py +0 -0
  402. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_activity_mop_stark_xlsx.py +0 -0
  403. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_annual_mop_stark_xlsx.py +0 -0
  404. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_csv.py +0 -0
  405. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_engie_edi.py +0 -0
  406. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_engie_xls.py +0 -0
  407. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_engie_xlsx.py +0 -0
  408. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_haven_csv.py +0 -0
  409. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_haven_edi.py +0 -0
  410. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_haven_edi_tprs.py +0 -0
  411. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_mm.py +0 -0
  412. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_nonsettlement_dc_stark_xlsx/bills.nonsettlement.dc.stark.xlsx +0 -0
  413. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_nonsettlement_dc_stark_xlsx/bills_old.nonsettlement.dc.stark.xlsx +0 -0
  414. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_nonsettlement_dc_stark_xlsx/test_bill_parser_nonsettlement_dc_stark_xlsx.py +0 -0
  415. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_settlement_dc_stark_xlsx/bills.settlement.dc.stark.xlsx +0 -0
  416. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_settlement_dc_stark_xlsx/test_bill_parser_settlement_dc_stark_xlsx.py +0 -0
  417. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_sse_edi.py +0 -0
  418. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/bill_parsers/test_bill_parser_sww_xls.py +0 -0
  419. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/system_price/prices.xls +0 -0
  420. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/system_price/test_system_price.py +0 -0
  421. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_aahedc.py +0 -0
  422. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_bill_importer.py +0 -0
  423. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_bsuos.py +0 -0
  424. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_ccl.py +0 -0
  425. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_cfd.py +0 -0
  426. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_computer.py +0 -0
  427. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_dno_rate_parser.py +0 -0
  428. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_duos.py +0 -0
  429. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_hh_importer.py +0 -0
  430. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_hh_parser_df2.py +0 -0
  431. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_hh_parser_vital_xlsx.py +0 -0
  432. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_laf_importer.py +0 -0
  433. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_mdd_importer.py +0 -0
  434. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_rcrc_importer.py +0 -0
  435. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_ro.py +0 -0
  436. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_scenario.py +0 -0
  437. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_tlms.py +0 -0
  438. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_tnuos.py +0 -0
  439. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/e/test_triad.py +0 -0
  440. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/gas/bill_parsers/test_g_bill_parser_engie_edi.py +0 -0
  441. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/gas/bill_parsers/test_g_bill_parser_total_edi.py +0 -0
  442. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/gas/test_dn_rate_parser.py +0 -0
  443. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/gas/test_engine.py +0 -0
  444. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/gas/test_g_cv.py +0 -0
  445. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/gas/test_gas_views.py +0 -0
  446. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/gas/test_transportation.py +0 -0
  447. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_g_monthly_duration.py +0 -0
  448. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_g_supplies_snapshot.py +0 -0
  449. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_g_supply_virtual_bill.py +0 -0
  450. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_g_virtual_bills.py +0 -0
  451. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_g_virtual_bills_hh.py +0 -0
  452. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_109.py +0 -0
  453. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_111.py +0 -0
  454. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_169.py +0 -0
  455. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_181.py +0 -0
  456. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_183.py +0 -0
  457. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_187.py +0 -0
  458. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_219.py +0 -0
  459. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_231.py +0 -0
  460. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_233.py +0 -0
  461. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_241.py +0 -0
  462. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_247.py +0 -0
  463. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_29.py +0 -0
  464. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_291.py +0 -0
  465. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_33.py +0 -0
  466. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_387.py +0 -0
  467. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_41.py +0 -0
  468. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_429.py +0 -0
  469. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_59.py +0 -0
  470. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_81.py +0 -0
  471. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_87.py +0 -0
  472. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_asset_comparison.py +0 -0
  473. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_batches.py +0 -0
  474. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_bills.py +0 -0
  475. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_csv_llfcs.py +0 -0
  476. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_csv_site_hh_data.py +0 -0
  477. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_csv_site_snags.py +0 -0
  478. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_dno_vl_parser.py +0 -0
  479. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_ecoes_comparison.py +0 -0
  480. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_sscs.py +0 -0
  481. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/reports/test_report_supply_contacts.py +0 -0
  482. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/test_chellow.py +0 -0
  483. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/test_dloads.py +0 -0
  484. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/test_edi_viewer.py +0 -0
  485. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/test_general_import.py +0 -0
  486. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/test_models.py +0 -0
  487. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/test_rate_server.py +0 -0
  488. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/test_testing.py +0 -0
  489. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/test_utils.py +0 -0
  490. {chellow-1733501869.0.0 → chellow-1736431515.0.0}/test/utils.py +0 -0
@@ -0,0 +1,95 @@
1
+ name: Chellow
2
+
3
+ on:
4
+ push:
5
+ branches: [main, test]
6
+ pull_request:
7
+ branches: [main, test]
8
+
9
+ jobs:
10
+ # Label of the container job
11
+ test:
12
+ runs-on: ubuntu-latest
13
+ container: python:3.9
14
+
15
+ services:
16
+ postgres:
17
+ image: postgres:12
18
+ env:
19
+ POSTGRES_PASSWORD: postgres
20
+ options: >-
21
+ --health-cmd pg_isready
22
+ --health-interval 10s
23
+ --health-timeout 5s
24
+ --health-retries 5
25
+
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+ - name: Install dependencies
29
+ run: |
30
+ python -m pip install --upgrade pip
31
+ pip install tox
32
+ - name: Run Tox
33
+ run: |
34
+ tox
35
+ env:
36
+ PGHOST: postgres
37
+ PGPORT: 5432
38
+
39
+ build:
40
+ runs-on: ubuntu-latest
41
+ container: python:3.9
42
+ needs: test
43
+ steps:
44
+ - uses: actions/checkout@v4
45
+ - name: Install dependencies
46
+ run: |
47
+ python -m pip install --upgrade pip
48
+ pip install build
49
+ - name: Build a binary wheel and a source tarball
50
+ run: |
51
+ echo "__version__ = \"$(date +%s).0.0\"" > VERSION
52
+ python -m build
53
+ - name: Store the distribution packages
54
+ uses: actions/upload-artifact@v4
55
+ with:
56
+ name: python-package-distributions
57
+ path: dist/
58
+
59
+ deploy_main:
60
+ runs-on: ubuntu-latest
61
+ needs: build
62
+ permissions:
63
+ id-token: write
64
+ if: github.ref == 'refs/heads/main'
65
+ environment:
66
+ name: pypi
67
+ url: https://pypi.org/p/chellow
68
+ steps:
69
+ - name: Download all the dists
70
+ uses: actions/download-artifact@v4
71
+ with:
72
+ name: python-package-distributions
73
+ path: dist/
74
+ - name: Publish distribution to PyPI
75
+ uses: pypa/gh-action-pypi-publish@release/v1
76
+
77
+ deploy_test:
78
+ runs-on: ubuntu-latest
79
+ needs: build
80
+ permissions:
81
+ id-token: write
82
+ if: github.ref == 'refs/heads/test'
83
+ environment:
84
+ name: testpypi
85
+ url: https://test.pypi.org/p/chellow
86
+ steps:
87
+ - name: Download all the dists
88
+ uses: actions/download-artifact@v4
89
+ with:
90
+ name: python-package-distributions
91
+ path: dist/
92
+ - name: Publish distribution to PyPI
93
+ uses: pypa/gh-action-pypi-publish@release/v1
94
+ with:
95
+ repository-url: https://test.pypi.org/legacy/
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: chellow
3
- Version: 1733501869.0.0
3
+ Version: 1736431515.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__ = "1736431515.0.0"
@@ -7,7 +7,7 @@ from openpyxl import load_workbook
7
7
 
8
8
  from werkzeug.exceptions import BadRequest
9
9
 
10
- from chellow.utils import HH, ct_datetime, parse_mpan_core, to_ct, to_utc
10
+ from chellow.utils import c_months_u, ct_datetime, parse_mpan_core, to_ct, to_utc
11
11
 
12
12
 
13
13
  def get_cell(sheet, col, row):
@@ -86,6 +86,63 @@ ELEM_LOOKUP = {
86
86
  }
87
87
 
88
88
 
89
+ def _parse_gduos_sheet(sheet, mpan_core, issue_date):
90
+ bills = []
91
+ for row in range(2, len(sheet["A"]) + 1):
92
+ val = get_cell(sheet, "A", row).value
93
+ if val is None or val == "":
94
+ break
95
+
96
+ start_date_str = get_str(sheet, "B", row)
97
+ start_date_ct = to_ct(Datetime.strptime(start_date_str, "%Y-%m"))
98
+ start_date, finish_date = next(
99
+ c_months_u(
100
+ start_year=start_date_ct.year, start_month=start_date_ct.month, months=1
101
+ )
102
+ )
103
+
104
+ element_desc = get_str(sheet, "D", row).strip()
105
+ units = get_dec(sheet, "E", row)
106
+ rate = get_dec(sheet, "F", row)
107
+ net = round(get_dec(sheet, "G", row), 2)
108
+
109
+ titles = ELEM_LOOKUP[element_desc]
110
+ if titles is None:
111
+ continue
112
+
113
+ breakdown = {
114
+ titles["gbp"]: net,
115
+ titles["units"]: units,
116
+ titles["rate"]: [rate],
117
+ }
118
+ bill = {
119
+ "bill_type_code": "N",
120
+ "kwh": Decimal(0),
121
+ "vat": Decimal("0.00"),
122
+ "net": net,
123
+ "gross": net,
124
+ "reads": [],
125
+ "breakdown": breakdown,
126
+ "account": mpan_core,
127
+ "issue_date": issue_date,
128
+ "start_date": start_date,
129
+ "finish_date": finish_date,
130
+ "mpan_core": mpan_core,
131
+ "reference": "_".join(
132
+ (
133
+ to_ct(start_date).strftime("%Y%m%d"),
134
+ to_ct(finish_date).strftime("%Y%m%d"),
135
+ to_ct(issue_date).strftime("%Y%m%d"),
136
+ mpan_core,
137
+ titles["name"],
138
+ )
139
+ ),
140
+ }
141
+
142
+ bills.append(bill)
143
+ return bills
144
+
145
+
89
146
  def _make_raw_bills(book):
90
147
  bills = []
91
148
  sheet = book.worksheets[0]
@@ -135,56 +192,8 @@ def _make_raw_bills(book):
135
192
  }
136
193
  )
137
194
  sheet = book.worksheets[3]
138
- for row in range(2, len(sheet["A"]) + 1):
139
- val = get_cell(sheet, "A", row).value
140
- if val is None or val == "":
141
- break
195
+ bills.extend(_parse_gduos_sheet(sheet, mpan_core, issue_date))
142
196
 
143
- start_date_str = get_str(sheet, "B", row)
144
- start_date_ct = to_ct(Datetime.strptime(start_date_str, "%Y-%m"))
145
- start_date = to_utc(start_date_ct)
146
- finish_date = to_utc(start_date_ct + relativedelta(months=1) - HH)
147
-
148
- element_desc = get_str(sheet, "D", row).strip()
149
- units = get_dec(sheet, "E", row)
150
- rate = get_dec(sheet, "F", row)
151
- net = round(get_dec(sheet, "G", row), 2)
152
-
153
- titles = ELEM_LOOKUP[element_desc]
154
- if titles is None:
155
- continue
156
-
157
- breakdown = {
158
- titles["gbp"]: net,
159
- titles["units"]: units,
160
- titles["rate"]: [rate],
161
- }
162
-
163
- bills.append(
164
- {
165
- "bill_type_code": "N",
166
- "kwh": Decimal(0),
167
- "vat": Decimal("0.00"),
168
- "net": net,
169
- "gross": net,
170
- "reads": [],
171
- "breakdown": breakdown,
172
- "account": mpan_core,
173
- "issue_date": issue_date,
174
- "start_date": start_date,
175
- "finish_date": finish_date,
176
- "mpan_core": mpan_core,
177
- "reference": "_".join(
178
- (
179
- to_ct(start_date).strftime("%Y%m%d"),
180
- to_ct(finish_date).strftime("%Y%m%d"),
181
- to_ct(issue_date).strftime("%Y%m%d"),
182
- mpan_core,
183
- titles["name"],
184
- )
185
- ),
186
- }
187
- )
188
197
  return bills
189
198
 
190
199
 
@@ -3,6 +3,7 @@ import os
3
3
  import threading
4
4
  from collections import defaultdict
5
5
  from datetime import datetime as Datetime
6
+ from decimal import Decimal
6
7
  from io import BytesIO, StringIO
7
8
  from itertools import chain, islice
8
9
  from random import random
@@ -4729,6 +4730,127 @@ def site_add_e_supply_post(site_id):
4729
4730
  )
4730
4731
 
4731
4732
 
4733
+ @e.route("/sites/<int:site_id>/hh_data")
4734
+ def site_hh_data_get(site_id):
4735
+ caches = {}
4736
+ site = Site.get_by_id(g.sess, site_id)
4737
+
4738
+ start_year = req_int("start_year")
4739
+ start_month = req_int("start_month")
4740
+ start_date, finish_date = next(
4741
+ c_months_u(start_year=start_year, start_month=start_month, months=1)
4742
+ )
4743
+
4744
+ supplies = (
4745
+ g.sess.query(Supply)
4746
+ .join(Era)
4747
+ .join(SiteEra)
4748
+ .join(Source)
4749
+ .filter(
4750
+ SiteEra.site == site,
4751
+ SiteEra.is_physical == true(),
4752
+ Era.start_date <= finish_date,
4753
+ or_(Era.finish_date == null(), Era.finish_date >= start_date),
4754
+ Source.code != "sub",
4755
+ )
4756
+ .order_by(Supply.id)
4757
+ .distinct()
4758
+ .options(joinedload(Supply.source), joinedload(Supply.generator_type))
4759
+ .all()
4760
+ )
4761
+
4762
+ data = iter(
4763
+ g.sess.query(HhDatum)
4764
+ .join(Channel)
4765
+ .join(Era)
4766
+ .filter(
4767
+ Channel.channel_type == "ACTIVE",
4768
+ Era.supply_id.in_([s.id for s in supplies]),
4769
+ HhDatum.start_date >= start_date,
4770
+ HhDatum.start_date <= finish_date,
4771
+ )
4772
+ .order_by(HhDatum.start_date, Era.supply_id)
4773
+ .options(
4774
+ joinedload(HhDatum.channel)
4775
+ .joinedload(Channel.era)
4776
+ .joinedload(Era.supply)
4777
+ .joinedload(Supply.source)
4778
+ )
4779
+ )
4780
+ datum = next(data, None)
4781
+
4782
+ hh_data = []
4783
+ for hh_date in hh_range(caches, start_date, finish_date):
4784
+ sups = []
4785
+ hh_dict = {
4786
+ "start_date": hh_date,
4787
+ "supplies": sups,
4788
+ "export_kwh": Decimal(0),
4789
+ "import_kwh": Decimal(0),
4790
+ "parasitic_kwh": Decimal(0),
4791
+ "generated_kwh": Decimal(0),
4792
+ "third_party_import_kwh": Decimal(0),
4793
+ "third_party_export_kwh": Decimal(0),
4794
+ }
4795
+ hh_data.append(hh_dict)
4796
+ for supply in supplies:
4797
+ sup_hh = {}
4798
+ sups.append(sup_hh)
4799
+ while (
4800
+ datum is not None
4801
+ and datum.start_date == hh_date
4802
+ and datum.channel.era.supply_id == supply.id
4803
+ ):
4804
+ channel = datum.channel
4805
+ imp_related = channel.imp_related
4806
+ source_code = channel.era.supply.source.code
4807
+
4808
+ prefix = "import_" if imp_related else "export_"
4809
+ sup_hh[f"{prefix}kwh"] = datum.value
4810
+ sup_hh[f"{prefix}status"] = datum.status
4811
+
4812
+ if not imp_related and source_code in ("grid", "gen-grid"):
4813
+ hh_dict["export_kwh"] += datum.value
4814
+ if imp_related and source_code in ("grid", "gen-grid"):
4815
+ hh_dict["import_kwh"] += datum.value
4816
+ if (imp_related and source_code == "gen") or (
4817
+ not imp_related and source_code == "gen-grid"
4818
+ ):
4819
+ hh_dict["generated_kwh"] += datum.value
4820
+ if (not imp_related and source_code == "gen") or (
4821
+ imp_related and source_code == "gen-grid"
4822
+ ):
4823
+ hh_dict["parasitic_kwh"] += datum.value
4824
+ if (imp_related and source_code == "3rd-party") or (
4825
+ not imp_related and source_code == "3rd-party-reverse"
4826
+ ):
4827
+ hh_dict["third_party_import_kwh"] += datum.value
4828
+ if (not imp_related and source_code == "3rd-party") or (
4829
+ imp_related and source_code == "3rd-party-reverse"
4830
+ ):
4831
+ hh_dict["third_party_export_kwh"] += datum.value
4832
+ datum = next(data, None)
4833
+
4834
+ hh_dict["displaced_kwh"] = (
4835
+ hh_dict["generated_kwh"] - hh_dict["export_kwh"] - hh_dict["parasitic_kwh"]
4836
+ )
4837
+ hh_dict["used_kwh"] = sum(
4838
+ (
4839
+ hh_dict["import_kwh"],
4840
+ hh_dict["displaced_kwh"],
4841
+ hh_dict["third_party_import_kwh"] - hh_dict["third_party_export_kwh"],
4842
+ )
4843
+ )
4844
+
4845
+ return render_template(
4846
+ "site_hh_data.html",
4847
+ site=site,
4848
+ supplies=supplies,
4849
+ hh_data=hh_data,
4850
+ start_date=start_date,
4851
+ )
4852
+
4853
+
4732
4854
  @e.route("/sources")
4733
4855
  def sources_get():
4734
4856
  sources = g.sess.query(Source).order_by(Source.code)
@@ -22,12 +22,13 @@
22
22
  {% endblock %}
23
23
 
24
24
  {% block content %}
25
- <form>
25
+ <form action="/e/sites/{{site.id}}/hh_data">
26
26
  <fieldset>
27
- <label>Month</label> {{input_date(resolution='month')}}
27
+ <label>Month</label> {{input_date(prefix='start', initial=start_date, resolution='month')}}
28
28
  <input type="submit" value="Show">
29
29
  </fieldset>
30
30
  </form>
31
+
31
32
  <table class="sticky">
32
33
  <caption>HH Data</caption>
33
34
  <thead>
@@ -218,8 +218,6 @@
218
218
  {{ input_number('months', initial='1', size='2', maxlength='2', required=True) }}
219
219
  <label>Final Month</label>
220
220
  {{ input_date('finish', last_month_finish, 'month') }}
221
- <label>Include bill check tabs?</label>
222
- {{input_checkbox('is_bill_check')}}
223
221
  <input type="submit" value="Download">
224
222
  </fieldset>
225
223
  </form>
@@ -366,10 +366,8 @@
366
366
  <fieldset>
367
367
  <input type="hidden" name="g_supply_id" value="{{g_supply.id}}">
368
368
  <legend>Monthly Duration</legend>
369
- <br>
370
- For <input name="months" maxlength="2" size="2" value="1">
371
- month(s) finishing at the end of
372
- {{ input_date('finish', last_month_finish, 'month') }}
369
+ <label>Months Long</label> <input name="months" maxlength="2" size="2" value="1">
370
+ <label>Last Month</label> {{ input_date('finish', last_month_finish, 'month') }}
373
371
  <input type="submit" value="Download">
374
372
  </fieldset>
375
373
  </form>
@@ -161,7 +161,7 @@
161
161
  Table of site level monthly kWh, MD kWh etc.</a>
162
162
  </li>
163
163
  <li>
164
- <a href="/sites/{{site.id}}/hh_data?year={{month_finish.year}}&amp;month={{month_finish.month}}">Table of hh data</a>
164
+ <a href="/e/sites/{{site.id}}/hh_data?start_year={{month_finish.year}}&amp;start_month={{month_finish.month}}">Table of hh data</a>
165
165
  </li>
166
166
  <li>
167
167
  <a href="/e/sites/{{site.id}}/site_snags">Site Snags</a>
@@ -10,7 +10,6 @@ import traceback
10
10
  import types
11
11
  from collections import OrderedDict
12
12
  from datetime import datetime as Datetime
13
- from decimal import Decimal
14
13
  from functools import wraps
15
14
  from importlib import import_module
16
15
  from io import DEFAULT_BUFFER_SIZE, StringIO
@@ -50,7 +49,6 @@ from sqlalchemy import (
50
49
  true,
51
50
  )
52
51
  from sqlalchemy.exc import IntegrityError
53
- from sqlalchemy.orm import joinedload
54
52
  from sqlalchemy.orm.attributes import flag_modified
55
53
 
56
54
  from werkzeug.exceptions import BadRequest, Forbidden
@@ -1155,123 +1153,6 @@ def report_post(report_id):
1155
1153
  return report_module.do_post(g.sess)
1156
1154
 
1157
1155
 
1158
- @home.route("/sites/<int:site_id>/hh_data")
1159
- def site_hh_data_get(site_id):
1160
- caches = {}
1161
- site = Site.get_by_id(g.sess, site_id)
1162
-
1163
- year = req_int("year")
1164
- month = req_int("month")
1165
- start_date, finish_date = next(
1166
- c_months_u(start_year=year, start_month=month, months=1)
1167
- )
1168
-
1169
- supplies = (
1170
- g.sess.query(Supply)
1171
- .join(Era)
1172
- .join(SiteEra)
1173
- .join(Source)
1174
- .filter(
1175
- SiteEra.site == site,
1176
- SiteEra.is_physical == true(),
1177
- Era.start_date <= finish_date,
1178
- or_(Era.finish_date == null(), Era.finish_date >= start_date),
1179
- Source.code != "sub",
1180
- )
1181
- .order_by(Supply.id)
1182
- .distinct()
1183
- .options(joinedload(Supply.source), joinedload(Supply.generator_type))
1184
- .all()
1185
- )
1186
-
1187
- data = iter(
1188
- g.sess.query(HhDatum)
1189
- .join(Channel)
1190
- .join(Era)
1191
- .filter(
1192
- Channel.channel_type == "ACTIVE",
1193
- Era.supply_id.in_([s.id for s in supplies]),
1194
- HhDatum.start_date >= start_date,
1195
- HhDatum.start_date <= finish_date,
1196
- )
1197
- .order_by(HhDatum.start_date, Era.supply_id)
1198
- .options(
1199
- joinedload(HhDatum.channel)
1200
- .joinedload(Channel.era)
1201
- .joinedload(Era.supply)
1202
- .joinedload(Supply.source)
1203
- )
1204
- )
1205
- datum = next(data, None)
1206
-
1207
- hh_data = []
1208
- for hh_date in hh_range(caches, start_date, finish_date):
1209
- sups = []
1210
- hh_dict = {
1211
- "start_date": hh_date,
1212
- "supplies": sups,
1213
- "export_kwh": Decimal(0),
1214
- "import_kwh": Decimal(0),
1215
- "parasitic_kwh": Decimal(0),
1216
- "generated_kwh": Decimal(0),
1217
- "third_party_import_kwh": Decimal(0),
1218
- "third_party_export_kwh": Decimal(0),
1219
- }
1220
- hh_data.append(hh_dict)
1221
- for supply in supplies:
1222
- sup_hh = {}
1223
- sups.append(sup_hh)
1224
- while (
1225
- datum is not None
1226
- and datum.start_date == hh_date
1227
- and datum.channel.era.supply_id == supply.id
1228
- ):
1229
- channel = datum.channel
1230
- imp_related = channel.imp_related
1231
- source_code = channel.era.supply.source.code
1232
-
1233
- prefix = "import_" if imp_related else "export_"
1234
- sup_hh[f"{prefix}kwh"] = datum.value
1235
- sup_hh[f"{prefix}status"] = datum.status
1236
-
1237
- if not imp_related and source_code in ("grid", "gen-grid"):
1238
- hh_dict["export_kwh"] += datum.value
1239
- if imp_related and source_code in ("grid", "gen-grid"):
1240
- hh_dict["import_kwh"] += datum.value
1241
- if (imp_related and source_code == "gen") or (
1242
- not imp_related and source_code == "gen-grid"
1243
- ):
1244
- hh_dict["generated_kwh"] += datum.value
1245
- if (not imp_related and source_code == "gen") or (
1246
- imp_related and source_code == "gen-grid"
1247
- ):
1248
- hh_dict["parasitic_kwh"] += datum.value
1249
- if (imp_related and source_code == "3rd-party") or (
1250
- not imp_related and source_code == "3rd-party-reverse"
1251
- ):
1252
- hh_dict["third_party_import_kwh"] += datum.value
1253
- if (not imp_related and source_code == "3rd-party") or (
1254
- imp_related and source_code == "3rd-party-reverse"
1255
- ):
1256
- hh_dict["third_party_export_kwh"] += datum.value
1257
- datum = next(data, None)
1258
-
1259
- hh_dict["displaced_kwh"] = (
1260
- hh_dict["generated_kwh"] - hh_dict["export_kwh"] - hh_dict["parasitic_kwh"]
1261
- )
1262
- hh_dict["used_kwh"] = sum(
1263
- (
1264
- hh_dict["import_kwh"],
1265
- hh_dict["displaced_kwh"],
1266
- hh_dict["third_party_import_kwh"] - hh_dict["third_party_export_kwh"],
1267
- )
1268
- )
1269
-
1270
- return render_template(
1271
- "site_hh_data.html", site=site, supplies=supplies, hh_data=hh_data
1272
- )
1273
-
1274
-
1275
1156
  @home.route("/sites/<int:site_id>")
1276
1157
  def site_get(site_id):
1277
1158
  configuration_contract = Contract.get_non_core_by_name(g.sess, "configuration")
@@ -66,3 +66,65 @@ def test_make_raw_bills():
66
66
  },
67
67
  ]
68
68
  assert bills == expected_bills
69
+
70
+
71
+ def test_make_raw_bills_october():
72
+ wb = Workbook()
73
+ statement_sheet = wb.worksheets[0]
74
+ wb.create_sheet() # HH Data
75
+ wb.create_sheet() # Calculations
76
+ gduos_sheet = wb.create_sheet() # GDUoS
77
+
78
+ statement_sheet["D22"] = "01-Oct-2024"
79
+ statement_sheet["F22"] = "31-Oct-2024"
80
+ statement_sheet["H24"] = ct_datetime(2024, 8, 4)
81
+ statement_sheet["D25"] = 1000000000003
82
+ statement_sheet["D33"] = Decimal("302")
83
+ statement_sheet["H33"] = Decimal("23.09")
84
+
85
+ gduos_sheet["A2"] = 1000000000003
86
+ gduos_sheet["B2"] = "2024-10"
87
+ gduos_sheet["D2"] = "Capacity"
88
+ gduos_sheet["E2"] = Decimal("41")
89
+ gduos_sheet["F2"] = Decimal("4.97")
90
+ gduos_sheet["G2"] = Decimal("83.12")
91
+
92
+ bills = _make_raw_bills(wb)
93
+ expected_bills = [
94
+ {
95
+ "account": "10 0000 0000 003",
96
+ "bill_type_code": "N",
97
+ "breakdown": {"ssp-gbp": Decimal("23.09"), "ssp-kwh": Decimal("302")},
98
+ "finish_date": to_utc(ct_datetime(2024, 10, 31, 23, 30)),
99
+ "gross": Decimal("23.09"),
100
+ "issue_date": to_utc(ct_datetime(2024, 8, 4)),
101
+ "kwh": Decimal("302"),
102
+ "mpan_core": "10 0000 0000 003",
103
+ "net": Decimal("23.09"),
104
+ "reads": [],
105
+ "reference": "20241001_20241031_20240804_10 0000 0000 003_ssp",
106
+ "start_date": to_utc(ct_datetime(2024, 10, 1)),
107
+ "vat": Decimal("0.00"),
108
+ },
109
+ {
110
+ "account": "10 0000 0000 003",
111
+ "bill_type_code": "N",
112
+ "breakdown": {
113
+ "duos-availability-gbp": Decimal("83.12"),
114
+ "duos-availability-kva": Decimal("41"),
115
+ "duos-availability-rate": [Decimal("4.97")],
116
+ },
117
+ "finish_date": to_utc(ct_datetime(2024, 10, 31, 23, 30)),
118
+ "gross": Decimal("83.12"),
119
+ "issue_date": to_utc(ct_datetime(2024, 8, 4)),
120
+ "kwh": Decimal("0"),
121
+ "mpan_core": "10 0000 0000 003",
122
+ "net": Decimal("83.12"),
123
+ "reads": [],
124
+ "reference": "20241001_20241031_20240804_10 0000 0000 "
125
+ "003_duos-availability",
126
+ "start_date": to_utc(ct_datetime(2024, 10, 1)),
127
+ "vat": Decimal("0.00"),
128
+ },
129
+ ]
130
+ assert bills == expected_bills
@@ -3059,6 +3059,23 @@ def test_site_add_e_supply_post_fail(client, sess):
3059
3059
  match(response, 400)
3060
3060
 
3061
3061
 
3062
+ def test_site_hh_data(sess, client):
3063
+ site = Site.insert(sess, "CI017", "Water Works")
3064
+ sess.commit()
3065
+
3066
+ query_string = {
3067
+ "start_year": "2022",
3068
+ "start_month": "3",
3069
+ }
3070
+ response = client.get(f"/e/sites/{site.id}/hh_data", query_string=query_string)
3071
+
3072
+ patterns = [
3073
+ r'<input type="hidden" name="start_year" value="2022">',
3074
+ r'<input type="hidden" name="start_month" value="3">',
3075
+ ]
3076
+ match(response, 200, *patterns)
3077
+
3078
+
3062
3079
  def test_supplier_batches_get(sess, client):
3063
3080
  vf = to_utc(ct_datetime(1996, 1, 1))
3064
3081
  participant = Participant.insert(sess, "hhak", "AK Industries")
@@ -462,19 +462,6 @@ def test_site_get_dumb(client, sess):
462
462
  match(response, 200, *patterns)
463
463
 
464
464
 
465
- def test_site_hh_data(sess, client):
466
- site = Site.insert(sess, "CI017", "Water Works")
467
- sess.commit()
468
-
469
- query_string = {
470
- "year": "2022",
471
- "month": "3",
472
- }
473
- response = client.get(f"/sites/{site.id}/hh_data", query_string=query_string)
474
-
475
- match(response, 200)
476
-
477
-
478
465
  def test_supplies_get_e(sess, client):
479
466
  valid_from = to_utc(ct_datetime(1996, 1, 1))
480
467
  site = Site.insert(sess, "CI017", "Water Works")