chellow 1707995667.0.0__tar.gz → 1708358861.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 (463) hide show
  1. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/PKG-INFO +1 -1
  2. chellow-1708358861.0.0/VERSION +1 -0
  3. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_233.py +16 -10
  4. chellow-1708358861.0.0/chellow/reports/report_33.py +531 -0
  5. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_33.py +293 -36
  6. chellow-1707995667.0.0/VERSION +0 -1
  7. chellow-1707995667.0.0/chellow/reports/report_33.py +0 -511
  8. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/.ebextensions/chellow.config +0 -0
  9. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/.github/workflows/chellow.yml +0 -0
  10. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/.gitignore +0 -0
  11. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/README.md +0 -0
  12. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/application.py +0 -0
  13. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/bin/chellow_service_monitor.sh +0 -0
  14. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/bin/chellow_start.sh +0 -0
  15. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/__init__.py +0 -0
  16. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/api.py +0 -0
  17. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/bank_holidays.py +0 -0
  18. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/commands.py +0 -0
  19. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/dloads.py +0 -0
  20. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/__init__.py +0 -0
  21. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/aahedc.py +0 -0
  22. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_importer.py +0 -0
  23. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/__init__.py +0 -0
  24. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/activity_mop_stark_xlsx.py +0 -0
  25. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/annual_mop_stark_xlsx.py +0 -0
  26. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/bgb_edi.py +0 -0
  27. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/csv.py +0 -0
  28. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/engie_edi.py +0 -0
  29. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/engie_xls.py +0 -0
  30. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/engie_xlsx.py +0 -0
  31. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/gdf_csv.py +0 -0
  32. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/haven_csv.py +0 -0
  33. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/haven_edi.py +0 -0
  34. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/haven_edi_tprs.py +0 -0
  35. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/mm.py +0 -0
  36. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/nonsettlement_dc_stark_xlsx.py +0 -0
  37. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/settlement_dc_stark_xlsx.py +0 -0
  38. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/sse_edi.py +0 -0
  39. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bill_parsers/sww_xls.py +0 -0
  40. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bmarketidx.py +0 -0
  41. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/bsuos.py +0 -0
  42. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/ccl.py +0 -0
  43. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/cfd.py +0 -0
  44. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/computer.py +0 -0
  45. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/dno_rate_parser.py +0 -0
  46. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/duos.py +0 -0
  47. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/elexon.py +0 -0
  48. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/energy_management.py +0 -0
  49. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/hh_importer.py +0 -0
  50. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/hh_parser_bg_csv.py +0 -0
  51. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/hh_parser_df2.py +0 -0
  52. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/hh_parser_simple_csv.py +0 -0
  53. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/laf_import.py +0 -0
  54. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/lcc.py +0 -0
  55. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/mdd_importer.py +0 -0
  56. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/rcrc.py +0 -0
  57. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/ro.py +0 -0
  58. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/scenario.py +0 -0
  59. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/system_price.py +0 -0
  60. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/tlms.py +0 -0
  61. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/tnuos.py +0 -0
  62. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/triad.py +0 -0
  63. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/e/views.py +0 -0
  64. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/edi_lib.py +0 -0
  65. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/gas/bill_import.py +0 -0
  66. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/gas/bill_parser_csv.py +0 -0
  67. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/gas/bill_parser_engie_edi.py +0 -0
  68. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/gas/ccl.py +0 -0
  69. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/gas/cv.py +0 -0
  70. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/gas/dn_rate_parser.py +0 -0
  71. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/gas/engine.py +0 -0
  72. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/gas/transportation.py +0 -0
  73. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/gas/views.py +0 -0
  74. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/general_import.py +0 -0
  75. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/models.py +0 -0
  76. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/national_grid.py +0 -0
  77. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/proxy.py +0 -0
  78. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/rate_server.py +0 -0
  79. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/__init__.py +0 -0
  80. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_109.py +0 -0
  81. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_111.py +0 -0
  82. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_169.py +0 -0
  83. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_177.py +0 -0
  84. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_181.py +0 -0
  85. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_183.py +0 -0
  86. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_187.py +0 -0
  87. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_215.py +0 -0
  88. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_219.py +0 -0
  89. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_231.py +0 -0
  90. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_241.py +0 -0
  91. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_247.py +0 -0
  92. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_29.py +0 -0
  93. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_291.py +0 -0
  94. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_387.py +0 -0
  95. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_41.py +0 -0
  96. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_429.py +0 -0
  97. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_59.py +0 -0
  98. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_81.py +0 -0
  99. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_87.py +0 -0
  100. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_asset_comparison.py +0 -0
  101. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_batches.py +0 -0
  102. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_bills.py +0 -0
  103. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_csv_llfcs.py +0 -0
  104. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_csv_site_hh_data.py +0 -0
  105. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_csv_site_snags.py +0 -0
  106. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_ecoes_comparison.py +0 -0
  107. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_g_monthly_duration.py +0 -0
  108. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_g_supplies_snapshot.py +0 -0
  109. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_g_supply_virtual_bill.py +0 -0
  110. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_g_virtual_bills.py +0 -0
  111. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_g_virtual_bills_hh.py +0 -0
  112. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_sscs.py +0 -0
  113. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/reports/report_supply_contacts.py +0 -0
  114. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/static/css/chellow.css +0 -0
  115. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/static/images/favicon.svg +0 -0
  116. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/static/images/favicon_test.svg +0 -0
  117. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/static/images/logo.png +0 -0
  118. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/static/js/htmx.min.js +0 -0
  119. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/403.html +0 -0
  120. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/base.html +0 -0
  121. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/bill_type.html +0 -0
  122. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/bill_types.html +0 -0
  123. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/chain.html +0 -0
  124. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/csv_sites_monthly_duration.html +0 -0
  125. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/downloads.html +0 -0
  126. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/asset_comparison.html +0 -0
  127. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/channel.html +0 -0
  128. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/channel_add.html +0 -0
  129. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/channel_edit.html +0 -0
  130. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/channel_snag.html +0 -0
  131. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/channel_snag_edit.html +0 -0
  132. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/channel_snags.html +0 -0
  133. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/comm.html +0 -0
  134. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/comms.html +0 -0
  135. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/cop.html +0 -0
  136. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/cops.html +0 -0
  137. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/csv_bills.html +0 -0
  138. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/csv_register_reads.html +0 -0
  139. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/csv_sites_hh_data.html +0 -0
  140. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/csv_sites_triad.html +0 -0
  141. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/csv_supplies_hh_data.html +0 -0
  142. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/csv_supplies_snapshot.html +0 -0
  143. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/csv_supplies_triad.html +0 -0
  144. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_auto_importer.html +0 -0
  145. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_batch.html +0 -0
  146. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_batch_add.html +0 -0
  147. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_batch_edit.html +0 -0
  148. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_batch_file.html +0 -0
  149. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_batch_file_edit.html +0 -0
  150. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_batch_upload_file.html +0 -0
  151. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_batches.html +0 -0
  152. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_bill.html +0 -0
  153. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_bill_add.html +0 -0
  154. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_bill_edit.html +0 -0
  155. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_bill_import.html +0 -0
  156. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_bill_imports.html +0 -0
  157. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_contract.html +0 -0
  158. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_contract_edit.html +0 -0
  159. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_contract_hh_import.html +0 -0
  160. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_contract_hh_imports.html +0 -0
  161. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_contracts.html +0 -0
  162. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_contracts_add.html +0 -0
  163. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_rate_script.html +0 -0
  164. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_rate_script_add.html +0 -0
  165. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dc_rate_script_edit.html +0 -0
  166. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dno.html +0 -0
  167. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dno_rate_script.html +0 -0
  168. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dno_rate_script_add.html +0 -0
  169. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dno_rate_script_edit.html +0 -0
  170. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dnos.html +0 -0
  171. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dtc_meter_type.html +0 -0
  172. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/dtc_meter_types.html +0 -0
  173. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/duration_report.html +0 -0
  174. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/elexon.html +0 -0
  175. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/em_hh_data.html +0 -0
  176. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/em_months.html +0 -0
  177. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/em_site.html +0 -0
  178. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/em_totals.html +0 -0
  179. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/energisation_status.html +0 -0
  180. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/energisation_statuses.html +0 -0
  181. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/era_edit.html +0 -0
  182. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/era_edit_form.html +0 -0
  183. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/era_supplier_bill_add.html +0 -0
  184. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/generator_type.html +0 -0
  185. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/generator_types.html +0 -0
  186. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/gsp_group.html +0 -0
  187. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/gsp_groups.html +0 -0
  188. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/hh_datum_edit.html +0 -0
  189. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/lafs.html +0 -0
  190. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/lcc.html +0 -0
  191. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/llfc.html +0 -0
  192. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/llfc_edit.html +0 -0
  193. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/llfcs.html +0 -0
  194. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/market_role.html +0 -0
  195. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/market_roles.html +0 -0
  196. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/meter_payment_type.html +0 -0
  197. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/meter_payment_types.html +0 -0
  198. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/meter_type.html +0 -0
  199. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/meter_types.html +0 -0
  200. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_batch.html +0 -0
  201. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_batch_add.html +0 -0
  202. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_batch_edit.html +0 -0
  203. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_batch_file.html +0 -0
  204. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_batch_file_edit.html +0 -0
  205. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_batch_upload_file.html +0 -0
  206. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_batches.html +0 -0
  207. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_bill.html +0 -0
  208. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_bill_add.html +0 -0
  209. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_bill_edit.html +0 -0
  210. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_bill_import.html +0 -0
  211. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_bill_imports.html +0 -0
  212. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_contract.html +0 -0
  213. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_contract_add.html +0 -0
  214. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_contract_edit.html +0 -0
  215. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_contracts.html +0 -0
  216. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_rate_script.html +0 -0
  217. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_rate_script_add.html +0 -0
  218. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mop_rate_script_edit.html +0 -0
  219. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mtc.html +0 -0
  220. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mtc_llfc.html +0 -0
  221. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mtc_llfc_ssc.html +0 -0
  222. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mtc_llfc_ssc_pc.html +0 -0
  223. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mtc_llfc_ssc_pcs.html +0 -0
  224. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mtc_llfc_sscs.html +0 -0
  225. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mtc_llfcs.html +0 -0
  226. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mtc_participant.html +0 -0
  227. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mtc_participants.html +0 -0
  228. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mtc_ssc.html +0 -0
  229. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mtc_sscs.html +0 -0
  230. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/mtcs.html +0 -0
  231. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/ods_monthly_duration.html +0 -0
  232. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/participant.html +0 -0
  233. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/participants.html +0 -0
  234. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/parties.html +0 -0
  235. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/party.html +0 -0
  236. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/pc.html +0 -0
  237. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/pcs.html +0 -0
  238. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/read_add.html +0 -0
  239. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/read_edit.html +0 -0
  240. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/read_type.html +0 -0
  241. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/read_types.html +0 -0
  242. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/scenario.html +0 -0
  243. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/scenario_add.html +0 -0
  244. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/scenario_docs.html +0 -0
  245. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/scenario_edit.html +0 -0
  246. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/scenarios.html +0 -0
  247. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/site_add_e_supply.html +0 -0
  248. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/site_add_e_supply_form.html +0 -0
  249. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/site_hh_data.html +0 -0
  250. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/site_site_snags.html +0 -0
  251. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/site_snag.html +0 -0
  252. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/site_snag_edit.html +0 -0
  253. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/site_snags.html +0 -0
  254. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/site_snags_edit.html +0 -0
  255. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/source.html +0 -0
  256. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/sources.html +0 -0
  257. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/ssc.html +0 -0
  258. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/sscs.html +0 -0
  259. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_batch.html +0 -0
  260. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_batch_add.html +0 -0
  261. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_batch_edit.html +0 -0
  262. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_batch_file.html +0 -0
  263. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_batch_file_add.html +0 -0
  264. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_batch_file_edit.html +0 -0
  265. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_batch_upload_file.html +0 -0
  266. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_batches.html +0 -0
  267. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_bill.html +0 -0
  268. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_bill_add.html +0 -0
  269. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_bill_edit.html +0 -0
  270. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_bill_import.html +0 -0
  271. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_bill_imports.html +0 -0
  272. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_contract.html +0 -0
  273. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_contract_add.html +0 -0
  274. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_contract_edit.html +0 -0
  275. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_contracts.html +0 -0
  276. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_rate_script.html +0 -0
  277. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_rate_script_add.html +0 -0
  278. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supplier_rate_script_edit.html +0 -0
  279. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supply.html +0 -0
  280. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supply_edit.html +0 -0
  281. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supply_eras.html +0 -0
  282. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supply_hh_data.html +0 -0
  283. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supply_months.html +0 -0
  284. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supply_note_add.html +0 -0
  285. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supply_note_edit.html +0 -0
  286. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supply_notes.html +0 -0
  287. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supply_post.html +0 -0
  288. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/supply_virtual_bill.html +0 -0
  289. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/tpr.html +0 -0
  290. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/e/tprs.html +0 -0
  291. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/edi_viewer.html +0 -0
  292. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/batch.html +0 -0
  293. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/batch_add.html +0 -0
  294. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/batch_edit.html +0 -0
  295. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/batches.html +0 -0
  296. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/bill.html +0 -0
  297. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/bill_add.html +0 -0
  298. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/bill_edit.html +0 -0
  299. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/bill_import.html +0 -0
  300. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/bill_imports.html +0 -0
  301. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/dn.html +0 -0
  302. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/dns.html +0 -0
  303. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/era_edit.html +0 -0
  304. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/exit_zone.html +0 -0
  305. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/industry_auto_importer.html +0 -0
  306. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/industry_contract.html +0 -0
  307. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/industry_contract_add.html +0 -0
  308. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/industry_contract_edit.html +0 -0
  309. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/industry_contracts.html +0 -0
  310. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/industry_rate_script.html +0 -0
  311. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/industry_rate_script_add.html +0 -0
  312. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/industry_rate_script_edit.html +0 -0
  313. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/ldz.html +0 -0
  314. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/read_add.html +0 -0
  315. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/read_edit.html +0 -0
  316. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/read_type.html +0 -0
  317. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/read_types.html +0 -0
  318. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/reading_frequencies.html +0 -0
  319. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/reading_frequency.html +0 -0
  320. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/reports.html +0 -0
  321. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supplier_contract.html +0 -0
  322. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supplier_contract_add.html +0 -0
  323. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supplier_contract_edit.html +0 -0
  324. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supplier_contracts.html +0 -0
  325. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supplier_rate_script.html +0 -0
  326. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supplier_rate_script_add.html +0 -0
  327. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supplier_rate_script_edit.html +0 -0
  328. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supplies.html +0 -0
  329. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supply.html +0 -0
  330. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supply_edit.html +0 -0
  331. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supply_note_add.html +0 -0
  332. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supply_note_edit.html +0 -0
  333. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/supply_notes.html +0 -0
  334. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/unit.html +0 -0
  335. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/g/units.html +0 -0
  336. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/general_import.html +0 -0
  337. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/general_imports.html +0 -0
  338. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/home.html +0 -0
  339. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/input_date.html +0 -0
  340. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/local_report.html +0 -0
  341. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/local_reports.html +0 -0
  342. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/macros.html +0 -0
  343. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/national_grid.html +0 -0
  344. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/non_core_auto_importer.html +0 -0
  345. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/non_core_contract.html +0 -0
  346. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/non_core_contract_edit.html +0 -0
  347. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/non_core_contracts.html +0 -0
  348. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/non_core_rate_script.html +0 -0
  349. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/non_core_rate_script_add.html +0 -0
  350. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/non_core_rate_script_edit.html +0 -0
  351. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/object_summary.html +0 -0
  352. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/rate_server.html +0 -0
  353. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/report_run.html +0 -0
  354. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/report_run_asset_comparison.html +0 -0
  355. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/report_run_bill_check.html +0 -0
  356. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/report_run_ecoes_comparison.html +0 -0
  357. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/report_run_row.html +0 -0
  358. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/report_run_row_bill_check.html +0 -0
  359. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/report_run_supply_contacts.html +0 -0
  360. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/report_runs.html +0 -0
  361. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/site.html +0 -0
  362. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/site_add.html +0 -0
  363. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/site_edit.html +0 -0
  364. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/site_gen_graph.html +0 -0
  365. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/site_hh_data.html +0 -0
  366. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/site_months.html +0 -0
  367. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/site_used_graph.html +0 -0
  368. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/sites.html +0 -0
  369. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/supplies.html +0 -0
  370. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/system.html +0 -0
  371. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/tester.html +0 -0
  372. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/user.html +0 -0
  373. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/user_roles.html +0 -0
  374. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/templates/users.html +0 -0
  375. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/testing.py +0 -0
  376. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/utils.py +0 -0
  377. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/chellow/views.py +0 -0
  378. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/gpl.txt +0 -0
  379. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/pyproject.toml +0 -0
  380. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/requirements.txt +0 -0
  381. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/setup.cfg +0 -0
  382. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/systemd/chellow.service +0 -0
  383. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/systemd/chellow_upgrader.service +0 -0
  384. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/systemd/chellow_upgrader.timer +0 -0
  385. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/conftest.py +0 -0
  386. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_activity_mop_stark_xlsx.py +0 -0
  387. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_annual_mop_stark_xlsx.py +0 -0
  388. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_csv.py +0 -0
  389. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_engie_edi.py +0 -0
  390. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_engie_xls.py +0 -0
  391. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_engie_xlsx.py +0 -0
  392. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_haven_csv.py +0 -0
  393. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_haven_edi.py +0 -0
  394. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_haven_edi_tprs.py +0 -0
  395. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_nonsettlement_dc_stark_xlsx/bills.nonsettlement.dc.stark.xlsx +0 -0
  396. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_nonsettlement_dc_stark_xlsx/bills_old.nonsettlement.dc.stark.xlsx +0 -0
  397. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_nonsettlement_dc_stark_xlsx/test_bill_parser_nonsettlement_dc_stark_xlsx.py +0 -0
  398. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_settlement_dc_stark_xlsx/bills.settlement.dc.stark.xlsx +0 -0
  399. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_settlement_dc_stark_xlsx/test_bill_parser_settlement_dc_stark_xlsx.py +0 -0
  400. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_sse_edi.py +0 -0
  401. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/bill_parsers/test_bill_parser_sww_xls.py +0 -0
  402. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/system_price/prices.xls +0 -0
  403. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/system_price/test_system_price.py +0 -0
  404. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_aahedc.py +0 -0
  405. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_bill_importer.py +0 -0
  406. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_bsuos.py +0 -0
  407. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_ccl.py +0 -0
  408. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_cfd.py +0 -0
  409. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_computer.py +0 -0
  410. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_dno_rate_parser.py +0 -0
  411. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_duos.py +0 -0
  412. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_e_views.py +0 -0
  413. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_hh_importer.py +0 -0
  414. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_laf_importer.py +0 -0
  415. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_mdd_importer.py +0 -0
  416. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_rcrc_importer.py +0 -0
  417. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_ro.py +0 -0
  418. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_scenario.py +0 -0
  419. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_tlms.py +0 -0
  420. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_tnuos.py +0 -0
  421. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/e/test_triad.py +0 -0
  422. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/gas/bill_parsers/test_g_bill_parser_engie_edi.py +0 -0
  423. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/gas/test_dn_rate_parser.py +0 -0
  424. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/gas/test_engine.py +0 -0
  425. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/gas/test_g_cv.py +0 -0
  426. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/gas/test_gas_views.py +0 -0
  427. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/gas/test_transportation.py +0 -0
  428. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_g_monthly_duration.py +0 -0
  429. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_g_supplies_snapshot.py +0 -0
  430. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_g_supply_virtual_bill.py +0 -0
  431. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_g_virtual_bills_hh.py +0 -0
  432. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_109.py +0 -0
  433. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_111.py +0 -0
  434. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_169.py +0 -0
  435. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_181.py +0 -0
  436. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_183.py +0 -0
  437. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_187.py +0 -0
  438. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_219.py +0 -0
  439. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_231.py +0 -0
  440. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_247.py +0 -0
  441. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_29.py +0 -0
  442. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_291.py +0 -0
  443. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_387.py +0 -0
  444. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_41.py +0 -0
  445. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_429.py +0 -0
  446. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_59.py +0 -0
  447. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_81.py +0 -0
  448. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_87.py +0 -0
  449. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_asset_comparison.py +0 -0
  450. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_batches.py +0 -0
  451. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_bills.py +0 -0
  452. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_dno_vl_parser.py +0 -0
  453. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/reports/test_report_ecoes_comparison.py +0 -0
  454. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/test_chellow.py +0 -0
  455. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/test_dloads.py +0 -0
  456. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/test_edi_viewer.py +0 -0
  457. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/test_general_import.py +0 -0
  458. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/test_models.py +0 -0
  459. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/test_rate_server.py +0 -0
  460. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/test_testing.py +0 -0
  461. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/test_utils.py +0 -0
  462. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/test_views.py +0 -0
  463. {chellow-1707995667.0.0 → chellow-1708358861.0.0}/test/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: chellow
3
- Version: 1707995667.0.0
3
+ Version: 1708358861.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__ = "1708358861.0.0"
@@ -1,5 +1,4 @@
1
1
  import csv
2
- import os
3
2
  import sys
4
3
  import threading
5
4
  import traceback
@@ -10,20 +9,28 @@ from flask import g
10
9
 
11
10
  from sqlalchemy.sql.expression import true
12
11
 
13
- import chellow.dloads
14
- from chellow.models import Channel, Contract, Era, Session, Site, SiteEra, Snag, Supply
12
+ from chellow.dloads import open_file
13
+ from chellow.models import (
14
+ Channel,
15
+ Contract,
16
+ Era,
17
+ Session,
18
+ Site,
19
+ SiteEra,
20
+ Snag,
21
+ Supply,
22
+ User,
23
+ )
15
24
  from chellow.utils import csv_make_val, hh_before, req_int, utc_datetime_now
16
25
  from chellow.views import chellow_redirect
17
26
 
18
27
 
19
- def content(contract_id, days_hidden, user):
28
+ def content(contract_id, days_hidden, user_id):
20
29
  f = writer = None
21
30
  try:
22
31
  with Session() as sess:
23
- running_name, finished_name = chellow.dloads.make_names(
24
- "channel_snags.csv", user
25
- )
26
- f = open(running_name, mode="w", newline="")
32
+ user = User.get_by_id(sess, user_id)
33
+ f = open_file("channel_snags.csv", user, mode="w", newline="")
27
34
  writer = csv.writer(f, lineterminator="\n")
28
35
  titles = (
29
36
  "Hidden Days",
@@ -111,13 +118,12 @@ def content(contract_id, days_hidden, user):
111
118
  finally:
112
119
  if f is not None:
113
120
  f.close()
114
- os.rename(running_name, finished_name)
115
121
 
116
122
 
117
123
  def do_get(sess):
118
124
  contract_id = req_int("dc_contract_id")
119
125
  days_hidden = req_int("days_hidden")
120
126
 
121
- args = (contract_id, days_hidden, g.user)
127
+ args = contract_id, days_hidden, g.user.id
122
128
  threading.Thread(target=content, args=args).start()
123
129
  return chellow_redirect("/downloads", 303)
@@ -0,0 +1,531 @@
1
+ import csv
2
+ import sys
3
+ import threading
4
+ import traceback
5
+
6
+ from dateutil.relativedelta import relativedelta
7
+
8
+ from flask import g, request
9
+
10
+ from sqlalchemy import or_, text
11
+ from sqlalchemy.orm import joinedload
12
+ from sqlalchemy.sql.expression import func, null
13
+
14
+ from werkzeug.exceptions import BadRequest
15
+
16
+ import chellow.e.duos
17
+ import chellow.e.tnuos
18
+ from chellow.dloads import open_file
19
+ from chellow.e.computer import SupplySource
20
+ from chellow.models import (
21
+ Batch,
22
+ Bill,
23
+ Era,
24
+ GeneratorType,
25
+ MeasurementRequirement,
26
+ MtcParticipant,
27
+ ReadType,
28
+ RegisterRead,
29
+ Session,
30
+ SiteEra,
31
+ Supply,
32
+ User,
33
+ )
34
+ from chellow.utils import (
35
+ CHANNEL_TYPES,
36
+ HH,
37
+ csv_make_val,
38
+ hh_format,
39
+ hh_min,
40
+ parse_mpan_core,
41
+ req_date,
42
+ req_int,
43
+ req_str,
44
+ )
45
+ from chellow.views import chellow_redirect
46
+
47
+
48
+ def content(user_id, date, supply_id, mpan_cores):
49
+ try:
50
+ with Session() as sess:
51
+ user = User.get_by_id(sess, user_id)
52
+ f = open_file("supplies_snapshot.csv", user, mode="w", newline="")
53
+ _process(sess, f, date, supply_id, mpan_cores)
54
+ except BaseException:
55
+ msg = traceback.format_exc()
56
+ sys.stderr.write(msg)
57
+ f.write(msg)
58
+ finally:
59
+ if f is not None:
60
+ f.close()
61
+
62
+
63
+ def _process_era(caches, sess, era_id, date, year_start):
64
+ NORMAL_READ_TYPES = ("N", "C", "N3")
65
+
66
+ era, supply, generator_type = (
67
+ sess.query(Era, Supply, GeneratorType)
68
+ .join(Supply, Era.supply_id == Supply.id)
69
+ .outerjoin(GeneratorType, Supply.generator_type_id == GeneratorType.id)
70
+ .filter(Era.id == era_id)
71
+ .options(
72
+ joinedload(Era.channels),
73
+ joinedload(Era.cop),
74
+ joinedload(Era.comm),
75
+ joinedload(Era.dc_contract),
76
+ joinedload(Era.exp_llfc),
77
+ joinedload(Era.exp_supplier_contract),
78
+ joinedload(Era.imp_llfc),
79
+ joinedload(Era.imp_supplier_contract),
80
+ joinedload(Era.mop_contract),
81
+ joinedload(Era.mtc_participant).joinedload(MtcParticipant.mtc),
82
+ joinedload(Era.mtc_participant).joinedload(MtcParticipant.meter_type),
83
+ joinedload(Era.pc),
84
+ joinedload(Era.site_eras).joinedload(SiteEra.site),
85
+ joinedload(Era.ssc),
86
+ joinedload(Era.energisation_status),
87
+ joinedload(Era.supply).joinedload(Supply.source),
88
+ joinedload(Era.supply).joinedload(Supply.gsp_group),
89
+ joinedload(Era.supply).joinedload(Supply.dno),
90
+ )
91
+ .one()
92
+ )
93
+
94
+ site_codes = []
95
+ site_names = []
96
+ for site_era in era.site_eras:
97
+ if site_era.is_physical:
98
+ physical_site = site_era.site
99
+ else:
100
+ site = site_era.site
101
+ site_codes.append(site.code)
102
+ site_names.append(site.name)
103
+
104
+ sup_eras = (
105
+ sess.query(Era).filter(Era.supply == supply).order_by(Era.start_date).all()
106
+ )
107
+ supply_start_date = sup_eras[0].start_date
108
+ supply_finish_date = sup_eras[-1].finish_date
109
+
110
+ if era.imp_mpan_core is None:
111
+ voltage_level_code = era.exp_llfc.voltage_level.code
112
+ is_substation = era.exp_llfc.is_substation
113
+ else:
114
+ voltage_level_code = era.imp_llfc.voltage_level.code
115
+ is_substation = era.imp_llfc.is_substation
116
+
117
+ if generator_type is None:
118
+ generator_type_str = ""
119
+ else:
120
+ generator_type_str = generator_type.code
121
+
122
+ metering_type = era.meter_category
123
+
124
+ if metering_type in ("nhh", "amr"):
125
+ latest_prev_normal_read = (
126
+ sess.query(RegisterRead)
127
+ .join(Bill)
128
+ .join(RegisterRead.previous_type)
129
+ .filter(
130
+ ReadType.code.in_(NORMAL_READ_TYPES),
131
+ RegisterRead.previous_date <= date,
132
+ Bill.supply_id == supply.id,
133
+ )
134
+ .order_by(RegisterRead.previous_date.desc())
135
+ .options(joinedload(RegisterRead.previous_type))
136
+ .first()
137
+ )
138
+
139
+ latest_pres_normal_read = (
140
+ sess.query(RegisterRead)
141
+ .join(Bill)
142
+ .join(RegisterRead.present_type)
143
+ .filter(
144
+ ReadType.code.in_(NORMAL_READ_TYPES),
145
+ RegisterRead.present_date <= date,
146
+ Bill.supply == supply,
147
+ )
148
+ .order_by(RegisterRead.present_date.desc())
149
+ .options(joinedload(RegisterRead.present_type))
150
+ .first()
151
+ )
152
+
153
+ if latest_prev_normal_read is None and latest_pres_normal_read is None:
154
+ latest_normal_read_date = None
155
+ latest_normal_read_type = None
156
+ elif latest_pres_normal_read is not None and latest_prev_normal_read is None:
157
+ latest_normal_read_date = latest_pres_normal_read.present_date
158
+ latest_normal_read_type = latest_pres_normal_read.present_type.code
159
+ elif latest_pres_normal_read is None and latest_prev_normal_read is not None:
160
+ latest_normal_read_date = latest_prev_normal_read.previous_date
161
+ latest_normal_read_type = latest_prev_normal_read.previous_type.code
162
+ elif (
163
+ latest_pres_normal_read.present_date > latest_prev_normal_read.previous_date
164
+ ):
165
+ latest_normal_read_date = latest_pres_normal_read.present_date
166
+ latest_normal_read_type = latest_pres_normal_read.present_type.code
167
+ else:
168
+ latest_normal_read_date = latest_prev_normal_read.previous_date
169
+ latest_normal_read_type = latest_prev_normal_read.previous_type.code
170
+ if latest_normal_read_date is not None:
171
+ latest_normal_read_date = hh_format(latest_normal_read_date)
172
+
173
+ else:
174
+ latest_normal_read_date = metering_type
175
+ latest_normal_read_type = None
176
+
177
+ mop_contract = era.mop_contract
178
+ mop_contract_name = mop_contract.name
179
+ mop_account = era.mop_account
180
+ latest_mop_bill_date = (
181
+ sess.query(Bill.finish_date)
182
+ .join(Batch)
183
+ .filter(
184
+ Bill.start_date <= date,
185
+ Bill.supply == supply,
186
+ Batch.contract == mop_contract,
187
+ )
188
+ .order_by(Bill.finish_date.desc())
189
+ .first()
190
+ )
191
+
192
+ if latest_mop_bill_date is not None:
193
+ latest_mop_bill_date = hh_format(latest_mop_bill_date[0])
194
+
195
+ dc_contract = era.dc_contract
196
+ dc_contract_name = dc_contract.name
197
+ dc_account = era.dc_account
198
+ latest_dc_bill_date = (
199
+ sess.query(Bill.finish_date)
200
+ .join(Batch)
201
+ .filter(
202
+ Bill.start_date <= date,
203
+ Bill.supply == supply,
204
+ Batch.contract == dc_contract,
205
+ )
206
+ .order_by(Bill.finish_date.desc())
207
+ .first()
208
+ )
209
+
210
+ if latest_dc_bill_date is not None:
211
+ latest_dc_bill_date = hh_format(latest_dc_bill_date[0])
212
+
213
+ channel_values = []
214
+ for imp_related in [True, False]:
215
+ for channel_type in CHANNEL_TYPES:
216
+ if era.find_channel(sess, imp_related, channel_type) is None:
217
+ channel_values.append("false")
218
+ else:
219
+ channel_values.append("true")
220
+
221
+ imp_avg_months = None
222
+ exp_avg_months = None
223
+ for is_import in [True, False]:
224
+ if metering_type == "nhh":
225
+ continue
226
+
227
+ params = {
228
+ "supply_id": supply.id,
229
+ "year_start": year_start,
230
+ "year_finish": date,
231
+ "is_import": is_import,
232
+ }
233
+ month_mds = tuple(
234
+ md[0] * 2
235
+ for md in sess.execute(
236
+ text(
237
+ """
238
+
239
+ select max(hh_datum.value) as md
240
+ from hh_datum join channel on (hh_datum.channel_id = channel.id)
241
+ join era on (channel.era_id = era.id)
242
+ where era.supply_id = :supply_id and hh_datum.start_date >= :year_start
243
+ and hh_datum.start_date <= :year_finish
244
+ and channel.channel_type = 'ACTIVE'
245
+ and channel.imp_related = :is_import
246
+ group by extract(month from (hh_datum.start_date at time zone 'utc'))
247
+ order by md desc
248
+ limit 3
249
+
250
+ """
251
+ ),
252
+ params=params,
253
+ )
254
+ )
255
+
256
+ avg_months = sum(month_mds)
257
+ if len(month_mds) > 0:
258
+ avg_months /= len(month_mds)
259
+ if is_import:
260
+ imp_avg_months = avg_months
261
+ else:
262
+ exp_avg_months = avg_months
263
+
264
+ if (imp_avg_months is not None and imp_avg_months > 100) or (
265
+ exp_avg_months is not None and exp_avg_months > 100
266
+ ):
267
+ mandatory_hh = "yes"
268
+ else:
269
+ mandatory_hh = "no"
270
+
271
+ imp_latest_supplier_bill_date = None
272
+ exp_latest_supplier_bill_date = None
273
+ imp_tnuos_band = None
274
+ for is_import in (True, False):
275
+ for er in (
276
+ sess.query(Era)
277
+ .filter(Era.supply == era.supply, Era.start_date <= date)
278
+ .order_by(Era.start_date.desc())
279
+ ):
280
+ if is_import:
281
+ if er.imp_mpan_core is None:
282
+ break
283
+ else:
284
+ supplier_contract = er.imp_supplier_contract
285
+ if era.energisation_status.code == "E":
286
+ imp_ss = SupplySource(
287
+ sess, date, date, date + HH, era, True, caches
288
+ )
289
+ chellow.e.duos.duos_vb(imp_ss)
290
+ hh = imp_ss.hh_data[0]
291
+ if hh["start-date"] >= chellow.e.tnuos.BANDED_START:
292
+ imp_tnuos_band = chellow.e.tnuos.BAND_LOOKUP[
293
+ hh["duos-description"]
294
+ ]
295
+ else:
296
+ if er.exp_mpan_core is None:
297
+ break
298
+ else:
299
+ supplier_contract = er.exp_supplier_contract
300
+
301
+ latest_bill_date = (
302
+ sess.query(Bill.finish_date)
303
+ .join(Batch)
304
+ .filter(
305
+ Bill.finish_date >= er.start_date,
306
+ Bill.finish_date <= hh_min(er.finish_date, date),
307
+ Bill.supply == supply,
308
+ Batch.contract == supplier_contract,
309
+ )
310
+ .order_by(Bill.finish_date.desc())
311
+ .first()
312
+ )
313
+
314
+ if latest_bill_date is not None:
315
+ latest_bill_date = hh_format(latest_bill_date[0])
316
+
317
+ if is_import:
318
+ imp_latest_supplier_bill_date = latest_bill_date
319
+ else:
320
+ exp_latest_supplier_bill_date = latest_bill_date
321
+ break
322
+
323
+ meter_installation_date = (
324
+ sess.query(func.min(Era.start_date))
325
+ .filter(Era.supply == era.supply, Era.msn == era.msn)
326
+ .one()[0]
327
+ )
328
+
329
+ ssc = era.ssc
330
+ if ssc is None:
331
+ ssc_code = ssc_description = num_registers = None
332
+ else:
333
+ ssc_code, ssc_description = ssc.code, ssc.description
334
+ num_registers = (
335
+ sess.query(MeasurementRequirement)
336
+ .filter(MeasurementRequirement.ssc == ssc)
337
+ .count()
338
+ )
339
+
340
+ return (
341
+ [
342
+ date,
343
+ era.imp_mpan_core,
344
+ era.exp_mpan_core,
345
+ physical_site.code,
346
+ physical_site.name,
347
+ ", ".join(site_codes),
348
+ ", ".join(site_names),
349
+ supply.id,
350
+ supply.source.code,
351
+ generator_type_str,
352
+ supply.gsp_group.code,
353
+ supply.dno.dno_code,
354
+ voltage_level_code,
355
+ is_substation,
356
+ metering_type,
357
+ mandatory_hh,
358
+ era.pc.code,
359
+ era.mtc_participant.mtc.code,
360
+ era.cop.code,
361
+ era.comm.code,
362
+ ssc_code,
363
+ ssc_description,
364
+ era.energisation_status.code,
365
+ num_registers,
366
+ mop_contract_name,
367
+ mop_account,
368
+ dc_contract_name,
369
+ dc_account,
370
+ era.msn,
371
+ meter_installation_date,
372
+ latest_normal_read_date,
373
+ latest_normal_read_type,
374
+ latest_dc_bill_date,
375
+ latest_mop_bill_date,
376
+ supply_start_date,
377
+ supply_finish_date,
378
+ era.properties,
379
+ imp_tnuos_band,
380
+ ]
381
+ + channel_values
382
+ + [
383
+ era.imp_sc,
384
+ None if era.imp_llfc is None else era.imp_llfc.code,
385
+ None if era.imp_llfc is None else era.imp_llfc.description,
386
+ (
387
+ None
388
+ if era.imp_supplier_contract is None
389
+ else era.imp_supplier_contract.name
390
+ ),
391
+ era.imp_supplier_account,
392
+ imp_avg_months,
393
+ imp_latest_supplier_bill_date,
394
+ ]
395
+ + [
396
+ era.exp_sc,
397
+ None if era.exp_llfc is None else era.exp_llfc.code,
398
+ None if era.exp_llfc is None else era.exp_llfc.description,
399
+ (
400
+ None
401
+ if era.exp_supplier_contract is None
402
+ else era.exp_supplier_contract.name
403
+ ),
404
+ era.exp_supplier_account,
405
+ exp_avg_months,
406
+ exp_latest_supplier_bill_date,
407
+ ]
408
+ )
409
+
410
+
411
+ def _process(sess, f, date, supply_id, mpan_cores):
412
+ writer = csv.writer(f, lineterminator="\n")
413
+ titles = (
414
+ "Date",
415
+ "Import MPAN Core",
416
+ "Export MPAN Core",
417
+ "Physical Site Id",
418
+ "Physical Site Name",
419
+ "Other Site Ids",
420
+ "Other Site Names",
421
+ "Supply Id",
422
+ "Source",
423
+ "Generator Type",
424
+ "GSP Group",
425
+ "DNO Name",
426
+ "Voltage Level",
427
+ "Is Substations",
428
+ "Metering Type",
429
+ "Mandatory HH",
430
+ "PC",
431
+ "MTC",
432
+ "CoP",
433
+ "Comms Type",
434
+ "SSC Code",
435
+ "SSC Description",
436
+ "Energisation Status",
437
+ "Number Of Registers",
438
+ "MOP Contract",
439
+ "Mop Account",
440
+ "DC Contract",
441
+ "DC Account",
442
+ "Meter Serial Number",
443
+ "Meter Installation Date",
444
+ "Latest Normal Meter Read Date",
445
+ "Latest Normal Meter Read Type",
446
+ "Latest DC Bill Date",
447
+ "Latest MOP Bill Date",
448
+ "Supply Start Date",
449
+ "Supply Finish Date",
450
+ "Properties",
451
+ "tnuos_band",
452
+ "Import ACTIVE?",
453
+ "Import REACTIVE_IMPORT?",
454
+ "Import REACTIVE_EXPORT?",
455
+ "Export ACTIVE?",
456
+ "Export REACTIVE_IMPORT?",
457
+ "Export REACTIVE_EXPORT?",
458
+ "Import Agreed Supply Capacity (kVA)",
459
+ "Import LLFC Code",
460
+ "Import LLFC Description",
461
+ "Import Supplier Contract",
462
+ "Import Supplier Account",
463
+ "Import Mandatory kW",
464
+ "Latest Import Supplier Bill Date",
465
+ "Export Agreed Supply Capacity (kVA)",
466
+ "Export LLFC Code",
467
+ "Export LLFC Description",
468
+ "Export Supplier Contract",
469
+ "Export Supplier Account",
470
+ "Export Mandatory kW",
471
+ "Latest Export Supplier Bill Date",
472
+ )
473
+ writer.writerow(titles)
474
+
475
+ year_start = date + HH - relativedelta(years=1)
476
+ caches = {}
477
+
478
+ era_ids = (
479
+ sess.query(Era.id)
480
+ .filter(
481
+ Era.start_date <= date,
482
+ or_(Era.finish_date == null(), Era.finish_date >= date),
483
+ )
484
+ .order_by(Era.supply_id)
485
+ )
486
+
487
+ if supply_id is not None:
488
+ supply = Supply.get_by_id(sess, supply_id)
489
+
490
+ era_ids = era_ids.filter(Era.supply == supply)
491
+
492
+ if mpan_cores is not None:
493
+ era_ids = era_ids.filter(
494
+ or_(Era.imp_mpan_core.in_(mpan_cores), Era.exp_mpan_core.in_(mpan_cores))
495
+ )
496
+
497
+ for (era_id,) in era_ids:
498
+ try:
499
+ vals = _process_era(caches, sess, era_id, date, year_start)
500
+ except BaseException as e:
501
+ raise BadRequest(f"Problem with era {era_id}: {e}") from e
502
+ except BadRequest as e:
503
+ raise BadRequest(f"Problem with era {era_id}: {e.description}")
504
+ writer.writerow([csv_make_val(v) for v in vals])
505
+
506
+ # Avoid a long-running transaction
507
+ sess.rollback()
508
+
509
+
510
+ def do_get(session):
511
+ user = g.user
512
+ date = req_date("date")
513
+ if "supply_id" in request.values:
514
+ supply_id = req_int("supply_id")
515
+ else:
516
+ supply_id = None
517
+
518
+ if "mpan_cores" in request.values:
519
+ mpan_cores_str = req_str("mpan_cores")
520
+ mpan_cores = mpan_cores_str.splitlines()
521
+ if len(mpan_cores) == 0:
522
+ mpan_cores = None
523
+ else:
524
+ for i in range(len(mpan_cores)):
525
+ mpan_cores[i] = parse_mpan_core(mpan_cores[i])
526
+ else:
527
+ mpan_cores = None
528
+
529
+ args = user.id, date, supply_id, mpan_cores
530
+ threading.Thread(target=content, args=args).start()
531
+ return chellow_redirect("/downloads", 303)