chellow 1706691842.0.0__tar.gz → 1707137154.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 (462) hide show
  1. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/.github/workflows/chellow.yml +3 -3
  2. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/PKG-INFO +1 -1
  3. chellow-1707137154.0.0/VERSION +1 -0
  4. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/__init__.py +2 -1
  5. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/dloads.py +45 -10
  6. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_109.py +2 -7
  7. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_111.py +6 -9
  8. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_169.py +5 -10
  9. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_187.py +3 -9
  10. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_219.py +2 -7
  11. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_247.py +3 -10
  12. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_29.py +6 -6
  13. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_387.py +3 -6
  14. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_41.py +2 -5
  15. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_429.py +2 -7
  16. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_59.py +3 -10
  17. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_batches.py +2 -5
  18. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_bills.py +2 -7
  19. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_g_monthly_duration.py +3 -10
  20. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_g_supplies_snapshot.py +2 -8
  21. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_g_supply_virtual_bill.py +3 -6
  22. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_g_virtual_bills_hh.py +6 -5
  23. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/macros.html +6 -5
  24. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/views.py +1 -1
  25. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_g_monthly_duration.py +2 -6
  26. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_g_supplies_snapshot.py +2 -6
  27. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_g_supply_virtual_bill.py +1 -6
  28. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_g_virtual_bills_hh.py +1 -6
  29. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_109.py +1 -5
  30. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_111.py +1 -5
  31. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_169.py +4 -10
  32. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_187.py +2 -12
  33. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_219.py +1 -5
  34. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_247.py +14 -53
  35. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_29.py +1 -5
  36. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_387.py +1 -5
  37. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_41.py +1 -3
  38. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_429.py +1 -5
  39. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_59.py +2 -10
  40. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_batches.py +1 -6
  41. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_bills.py +1 -6
  42. chellow-1707137154.0.0/test/test_dloads.py +10 -0
  43. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/test_views.py +17 -0
  44. chellow-1706691842.0.0/VERSION +0 -1
  45. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/.ebextensions/chellow.config +0 -0
  46. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/.gitignore +0 -0
  47. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/README.md +0 -0
  48. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/application.py +0 -0
  49. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/bin/chellow_service_monitor.sh +0 -0
  50. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/bin/chellow_start.sh +0 -0
  51. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/api.py +0 -0
  52. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/bank_holidays.py +0 -0
  53. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/commands.py +0 -0
  54. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/__init__.py +0 -0
  55. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/aahedc.py +0 -0
  56. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_importer.py +0 -0
  57. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/__init__.py +0 -0
  58. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/activity_mop_stark_xlsx.py +0 -0
  59. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/annual_mop_stark_xlsx.py +0 -0
  60. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/bgb_edi.py +0 -0
  61. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/csv.py +0 -0
  62. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/engie_edi.py +0 -0
  63. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/engie_xls.py +0 -0
  64. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/engie_xlsx.py +0 -0
  65. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/gdf_csv.py +0 -0
  66. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/haven_csv.py +0 -0
  67. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/haven_edi.py +0 -0
  68. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/haven_edi_tprs.py +0 -0
  69. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/mm.py +0 -0
  70. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/nonsettlement_dc_stark_xlsx.py +0 -0
  71. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/settlement_dc_stark_xlsx.py +0 -0
  72. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/sse_edi.py +0 -0
  73. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bill_parsers/sww_xls.py +0 -0
  74. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bmarketidx.py +0 -0
  75. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/bsuos.py +0 -0
  76. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/ccl.py +0 -0
  77. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/cfd.py +0 -0
  78. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/computer.py +0 -0
  79. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/dno_rate_parser.py +0 -0
  80. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/duos.py +0 -0
  81. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/elexon.py +0 -0
  82. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/energy_management.py +0 -0
  83. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/hh_importer.py +0 -0
  84. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/hh_parser_bg_csv.py +0 -0
  85. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/hh_parser_df2.py +0 -0
  86. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/hh_parser_simple_csv.py +0 -0
  87. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/laf_import.py +0 -0
  88. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/lcc.py +0 -0
  89. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/mdd_importer.py +0 -0
  90. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/rcrc.py +0 -0
  91. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/ro.py +0 -0
  92. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/scenario.py +0 -0
  93. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/system_price.py +0 -0
  94. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/tlms.py +0 -0
  95. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/tnuos.py +0 -0
  96. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/triad.py +0 -0
  97. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/e/views.py +0 -0
  98. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/edi_lib.py +0 -0
  99. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/gas/bill_import.py +0 -0
  100. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/gas/bill_parser_csv.py +0 -0
  101. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/gas/bill_parser_engie_edi.py +0 -0
  102. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/gas/ccl.py +0 -0
  103. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/gas/cv.py +0 -0
  104. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/gas/dn_rate_parser.py +0 -0
  105. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/gas/engine.py +0 -0
  106. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/gas/transportation.py +0 -0
  107. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/gas/views.py +0 -0
  108. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/general_import.py +0 -0
  109. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/models.py +0 -0
  110. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/national_grid.py +0 -0
  111. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/proxy.py +0 -0
  112. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/rate_server.py +0 -0
  113. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/__init__.py +0 -0
  114. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_177.py +0 -0
  115. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_181.py +0 -0
  116. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_183.py +0 -0
  117. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_215.py +0 -0
  118. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_231.py +0 -0
  119. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_233.py +0 -0
  120. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_241.py +0 -0
  121. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_291.py +0 -0
  122. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_33.py +0 -0
  123. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_81.py +0 -0
  124. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_87.py +0 -0
  125. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_asset_comparison.py +0 -0
  126. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_csv_llfcs.py +0 -0
  127. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_csv_site_hh_data.py +0 -0
  128. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_csv_site_snags.py +0 -0
  129. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_ecoes_comparison.py +0 -0
  130. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_g_virtual_bills.py +0 -0
  131. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_sscs.py +0 -0
  132. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/reports/report_supply_contacts.py +0 -0
  133. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/static/css/chellow.css +0 -0
  134. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/static/images/favicon.svg +0 -0
  135. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/static/images/favicon_test.svg +0 -0
  136. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/static/images/logo.png +0 -0
  137. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/static/js/htmx.min.js +0 -0
  138. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/403.html +0 -0
  139. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/base.html +0 -0
  140. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/bill_type.html +0 -0
  141. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/bill_types.html +0 -0
  142. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/chain.html +0 -0
  143. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/csv_sites_monthly_duration.html +0 -0
  144. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/downloads.html +0 -0
  145. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/asset_comparison.html +0 -0
  146. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/channel.html +0 -0
  147. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/channel_add.html +0 -0
  148. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/channel_edit.html +0 -0
  149. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/channel_snag.html +0 -0
  150. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/channel_snag_edit.html +0 -0
  151. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/channel_snags.html +0 -0
  152. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/comm.html +0 -0
  153. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/comms.html +0 -0
  154. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/cop.html +0 -0
  155. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/cops.html +0 -0
  156. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/csv_bills.html +0 -0
  157. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/csv_register_reads.html +0 -0
  158. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/csv_sites_hh_data.html +0 -0
  159. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/csv_sites_triad.html +0 -0
  160. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/csv_supplies_hh_data.html +0 -0
  161. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/csv_supplies_snapshot.html +0 -0
  162. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/csv_supplies_triad.html +0 -0
  163. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_auto_importer.html +0 -0
  164. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_batch.html +0 -0
  165. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_batch_add.html +0 -0
  166. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_batch_edit.html +0 -0
  167. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_batch_file.html +0 -0
  168. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_batch_file_edit.html +0 -0
  169. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_batch_upload_file.html +0 -0
  170. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_batches.html +0 -0
  171. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_bill.html +0 -0
  172. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_bill_add.html +0 -0
  173. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_bill_edit.html +0 -0
  174. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_bill_import.html +0 -0
  175. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_bill_imports.html +0 -0
  176. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_contract.html +0 -0
  177. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_contract_edit.html +0 -0
  178. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_contract_hh_import.html +0 -0
  179. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_contract_hh_imports.html +0 -0
  180. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_contracts.html +0 -0
  181. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_contracts_add.html +0 -0
  182. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_rate_script.html +0 -0
  183. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_rate_script_add.html +0 -0
  184. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dc_rate_script_edit.html +0 -0
  185. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dno.html +0 -0
  186. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dno_rate_script.html +0 -0
  187. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dno_rate_script_add.html +0 -0
  188. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dno_rate_script_edit.html +0 -0
  189. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dnos.html +0 -0
  190. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dtc_meter_type.html +0 -0
  191. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/dtc_meter_types.html +0 -0
  192. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/duration_report.html +0 -0
  193. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/elexon.html +0 -0
  194. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/em_hh_data.html +0 -0
  195. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/em_months.html +0 -0
  196. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/em_site.html +0 -0
  197. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/em_totals.html +0 -0
  198. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/energisation_status.html +0 -0
  199. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/energisation_statuses.html +0 -0
  200. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/era_edit.html +0 -0
  201. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/era_edit_form.html +0 -0
  202. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/era_supplier_bill_add.html +0 -0
  203. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/generator_type.html +0 -0
  204. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/generator_types.html +0 -0
  205. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/gsp_group.html +0 -0
  206. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/gsp_groups.html +0 -0
  207. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/hh_datum_edit.html +0 -0
  208. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/lafs.html +0 -0
  209. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/lcc.html +0 -0
  210. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/llfc.html +0 -0
  211. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/llfc_edit.html +0 -0
  212. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/llfcs.html +0 -0
  213. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/market_role.html +0 -0
  214. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/market_roles.html +0 -0
  215. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/meter_payment_type.html +0 -0
  216. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/meter_payment_types.html +0 -0
  217. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/meter_type.html +0 -0
  218. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/meter_types.html +0 -0
  219. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_batch.html +0 -0
  220. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_batch_add.html +0 -0
  221. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_batch_edit.html +0 -0
  222. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_batch_file.html +0 -0
  223. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_batch_file_edit.html +0 -0
  224. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_batch_upload_file.html +0 -0
  225. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_batches.html +0 -0
  226. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_bill.html +0 -0
  227. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_bill_add.html +0 -0
  228. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_bill_edit.html +0 -0
  229. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_bill_import.html +0 -0
  230. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_bill_imports.html +0 -0
  231. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_contract.html +0 -0
  232. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_contract_add.html +0 -0
  233. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_contract_edit.html +0 -0
  234. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_contracts.html +0 -0
  235. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_rate_script.html +0 -0
  236. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_rate_script_add.html +0 -0
  237. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mop_rate_script_edit.html +0 -0
  238. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mtc.html +0 -0
  239. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mtc_llfc.html +0 -0
  240. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mtc_llfc_ssc.html +0 -0
  241. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mtc_llfc_ssc_pc.html +0 -0
  242. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mtc_llfc_ssc_pcs.html +0 -0
  243. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mtc_llfc_sscs.html +0 -0
  244. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mtc_llfcs.html +0 -0
  245. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mtc_participant.html +0 -0
  246. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mtc_participants.html +0 -0
  247. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mtc_ssc.html +0 -0
  248. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mtc_sscs.html +0 -0
  249. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/mtcs.html +0 -0
  250. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/ods_monthly_duration.html +0 -0
  251. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/participant.html +0 -0
  252. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/participants.html +0 -0
  253. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/parties.html +0 -0
  254. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/party.html +0 -0
  255. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/pc.html +0 -0
  256. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/pcs.html +0 -0
  257. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/read_add.html +0 -0
  258. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/read_edit.html +0 -0
  259. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/read_type.html +0 -0
  260. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/read_types.html +0 -0
  261. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/scenario.html +0 -0
  262. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/scenario_add.html +0 -0
  263. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/scenario_docs.html +0 -0
  264. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/scenario_edit.html +0 -0
  265. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/scenarios.html +0 -0
  266. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/site_add_e_supply.html +0 -0
  267. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/site_add_e_supply_form.html +0 -0
  268. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/site_hh_data.html +0 -0
  269. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/site_site_snags.html +0 -0
  270. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/site_snag.html +0 -0
  271. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/site_snag_edit.html +0 -0
  272. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/site_snags.html +0 -0
  273. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/site_snags_edit.html +0 -0
  274. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/source.html +0 -0
  275. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/sources.html +0 -0
  276. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/ssc.html +0 -0
  277. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/sscs.html +0 -0
  278. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_batch.html +0 -0
  279. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_batch_add.html +0 -0
  280. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_batch_edit.html +0 -0
  281. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_batch_file.html +0 -0
  282. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_batch_file_add.html +0 -0
  283. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_batch_file_edit.html +0 -0
  284. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_batch_upload_file.html +0 -0
  285. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_batches.html +0 -0
  286. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_bill.html +0 -0
  287. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_bill_add.html +0 -0
  288. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_bill_edit.html +0 -0
  289. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_bill_import.html +0 -0
  290. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_bill_imports.html +0 -0
  291. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_contract.html +0 -0
  292. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_contract_add.html +0 -0
  293. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_contract_edit.html +0 -0
  294. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_contracts.html +0 -0
  295. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_rate_script.html +0 -0
  296. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_rate_script_add.html +0 -0
  297. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supplier_rate_script_edit.html +0 -0
  298. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supply.html +0 -0
  299. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supply_edit.html +0 -0
  300. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supply_eras.html +0 -0
  301. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supply_hh_data.html +0 -0
  302. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supply_months.html +0 -0
  303. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supply_note_add.html +0 -0
  304. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supply_note_edit.html +0 -0
  305. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supply_notes.html +0 -0
  306. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supply_post.html +0 -0
  307. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/supply_virtual_bill.html +0 -0
  308. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/tpr.html +0 -0
  309. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/e/tprs.html +0 -0
  310. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/edi_viewer.html +0 -0
  311. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/batch.html +0 -0
  312. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/batch_add.html +0 -0
  313. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/batch_edit.html +0 -0
  314. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/batches.html +0 -0
  315. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/bill.html +0 -0
  316. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/bill_add.html +0 -0
  317. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/bill_edit.html +0 -0
  318. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/bill_import.html +0 -0
  319. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/bill_imports.html +0 -0
  320. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/dn.html +0 -0
  321. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/dns.html +0 -0
  322. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/era_edit.html +0 -0
  323. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/exit_zone.html +0 -0
  324. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/industry_auto_importer.html +0 -0
  325. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/industry_contract.html +0 -0
  326. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/industry_contract_add.html +0 -0
  327. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/industry_contract_edit.html +0 -0
  328. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/industry_contracts.html +0 -0
  329. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/industry_rate_script.html +0 -0
  330. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/industry_rate_script_add.html +0 -0
  331. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/industry_rate_script_edit.html +0 -0
  332. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/ldz.html +0 -0
  333. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/read_add.html +0 -0
  334. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/read_edit.html +0 -0
  335. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/read_type.html +0 -0
  336. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/read_types.html +0 -0
  337. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/reading_frequencies.html +0 -0
  338. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/reading_frequency.html +0 -0
  339. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/reports.html +0 -0
  340. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supplier_contract.html +0 -0
  341. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supplier_contract_add.html +0 -0
  342. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supplier_contract_edit.html +0 -0
  343. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supplier_contracts.html +0 -0
  344. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supplier_rate_script.html +0 -0
  345. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supplier_rate_script_add.html +0 -0
  346. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supplier_rate_script_edit.html +0 -0
  347. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supplies.html +0 -0
  348. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supply.html +0 -0
  349. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supply_edit.html +0 -0
  350. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supply_note_add.html +0 -0
  351. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supply_note_edit.html +0 -0
  352. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/supply_notes.html +0 -0
  353. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/unit.html +0 -0
  354. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/g/units.html +0 -0
  355. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/general_import.html +0 -0
  356. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/general_imports.html +0 -0
  357. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/home.html +0 -0
  358. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/input_date.html +0 -0
  359. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/local_report.html +0 -0
  360. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/local_reports.html +0 -0
  361. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/national_grid.html +0 -0
  362. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/non_core_auto_importer.html +0 -0
  363. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/non_core_contract.html +0 -0
  364. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/non_core_contract_edit.html +0 -0
  365. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/non_core_contracts.html +0 -0
  366. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/non_core_rate_script.html +0 -0
  367. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/non_core_rate_script_add.html +0 -0
  368. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/non_core_rate_script_edit.html +0 -0
  369. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/object_summary.html +0 -0
  370. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/rate_server.html +0 -0
  371. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/report_run.html +0 -0
  372. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/report_run_asset_comparison.html +0 -0
  373. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/report_run_bill_check.html +0 -0
  374. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/report_run_ecoes_comparison.html +0 -0
  375. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/report_run_row.html +0 -0
  376. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/report_run_row_bill_check.html +0 -0
  377. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/report_run_supply_contacts.html +0 -0
  378. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/report_runs.html +0 -0
  379. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/site.html +0 -0
  380. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/site_add.html +0 -0
  381. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/site_edit.html +0 -0
  382. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/site_gen_graph.html +0 -0
  383. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/site_hh_data.html +0 -0
  384. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/site_months.html +0 -0
  385. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/site_used_graph.html +0 -0
  386. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/sites.html +0 -0
  387. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/supplies.html +0 -0
  388. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/system.html +0 -0
  389. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/tester.html +0 -0
  390. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/user.html +0 -0
  391. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/user_roles.html +0 -0
  392. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/templates/users.html +0 -0
  393. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/testing.py +0 -0
  394. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/chellow/utils.py +0 -0
  395. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/gpl.txt +0 -0
  396. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/pyproject.toml +0 -0
  397. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/requirements.txt +0 -0
  398. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/setup.cfg +0 -0
  399. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/systemd/chellow.service +0 -0
  400. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/systemd/chellow_upgrader.service +0 -0
  401. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/systemd/chellow_upgrader.timer +0 -0
  402. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/conftest.py +0 -0
  403. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_activity_mop_stark_xlsx.py +0 -0
  404. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_annual_mop_stark_xlsx.py +0 -0
  405. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_bill_parser_csv.py +0 -0
  406. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_bill_parser_engie_edi.py +0 -0
  407. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_bill_parser_engie_xls.py +0 -0
  408. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_bill_parser_engie_xlsx.py +0 -0
  409. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_bill_parser_haven_csv.py +0 -0
  410. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_bill_parser_haven_edi.py +0 -0
  411. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_bill_parser_haven_edi_tprs.py +0 -0
  412. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_bill_parser_nonsettlement_dc_stark_xlsx/bills.nonsettlement.dc.stark.xlsx +0 -0
  413. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_bill_parser_nonsettlement_dc_stark_xlsx/bills_old.nonsettlement.dc.stark.xlsx +0 -0
  414. {chellow-1706691842.0.0 → chellow-1707137154.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-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_bill_parser_settlement_dc_stark_xlsx/bills.settlement.dc.stark.xlsx +0 -0
  416. {chellow-1706691842.0.0 → chellow-1707137154.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-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_bill_parser_sse_edi.py +0 -0
  418. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/bill_parsers/test_bill_parser_sww_xls.py +0 -0
  419. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/system_price/prices.xls +0 -0
  420. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/system_price/test_system_price.py +0 -0
  421. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_aahedc.py +0 -0
  422. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_bill_importer.py +0 -0
  423. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_bsuos.py +0 -0
  424. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_ccl.py +0 -0
  425. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_cfd.py +0 -0
  426. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_computer.py +0 -0
  427. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_dno_rate_parser.py +0 -0
  428. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_duos.py +0 -0
  429. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_e_views.py +0 -0
  430. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_hh_importer.py +0 -0
  431. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_laf_importer.py +0 -0
  432. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_mdd_importer.py +0 -0
  433. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_rcrc_importer.py +0 -0
  434. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_ro.py +0 -0
  435. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_scenario.py +0 -0
  436. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_tlms.py +0 -0
  437. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_tnuos.py +0 -0
  438. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/e/test_triad.py +0 -0
  439. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/gas/bill_parsers/test_g_bill_parser_engie_edi.py +0 -0
  440. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/gas/test_dn_rate_parser.py +0 -0
  441. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/gas/test_engine.py +0 -0
  442. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/gas/test_g_cv.py +0 -0
  443. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/gas/test_gas_views.py +0 -0
  444. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/gas/test_transportation.py +0 -0
  445. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_181.py +0 -0
  446. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_183.py +0 -0
  447. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_231.py +0 -0
  448. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_291.py +0 -0
  449. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_33.py +0 -0
  450. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_81.py +0 -0
  451. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_87.py +0 -0
  452. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_asset_comparison.py +0 -0
  453. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_dno_vl_parser.py +0 -0
  454. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/reports/test_report_ecoes_comparison.py +0 -0
  455. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/test_chellow.py +0 -0
  456. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/test_edi_viewer.py +0 -0
  457. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/test_general_import.py +0 -0
  458. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/test_models.py +0 -0
  459. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/test_rate_server.py +0 -0
  460. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/test_testing.py +0 -0
  461. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/test_utils.py +0 -0
  462. {chellow-1706691842.0.0 → chellow-1707137154.0.0}/test/utils.py +0 -0
@@ -24,7 +24,7 @@ jobs:
24
24
  --health-retries 5
25
25
 
26
26
  steps:
27
- - uses: actions/checkout@v3
27
+ - uses: actions/checkout@v4
28
28
  - name: Install dependencies
29
29
  run: |
30
30
  python -m pip install --upgrade pip
@@ -44,7 +44,7 @@ jobs:
44
44
  id-token: write
45
45
  if: github.ref == 'refs/heads/main'
46
46
  steps:
47
- - uses: actions/checkout@v3
47
+ - uses: actions/checkout@v4
48
48
  - name: Install dependencies
49
49
  run: |
50
50
  python -m pip install --upgrade pip
@@ -64,7 +64,7 @@ jobs:
64
64
  id-token: write
65
65
  if: github.ref == 'refs/heads/test'
66
66
  steps:
67
- - uses: actions/checkout@v3
67
+ - uses: actions/checkout@v4
68
68
  - name: Install dependencies
69
69
  run: |
70
70
  python -m pip install --upgrade pip
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: chellow
3
- Version: 1706691842.0.0
3
+ Version: 1707137154.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__ = "1707137154.0.0"
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  from datetime import datetime as Datetime
3
3
  from importlib.metadata import version
4
+ from pathlib import Path
4
5
 
5
6
  from flask import Flask, Response, g, make_response, render_template, request
6
7
 
@@ -78,7 +79,7 @@ def create_app(testing=False):
78
79
 
79
80
  if not testing:
80
81
  db_upgrade(app.root_path)
81
- chellow.dloads.startup(app.instance_path)
82
+ chellow.dloads.startup(Path(app.instance_path))
82
83
  chellow.e.hh_importer.startup()
83
84
 
84
85
  with Session() as sess:
@@ -6,6 +6,10 @@ import threading
6
6
  import time
7
7
  import traceback
8
8
 
9
+ from zipfile import ZIP_DEFLATED, ZipFile
10
+
11
+ from werkzeug.exceptions import BadRequest
12
+
9
13
  from chellow.utils import utc_datetime_now
10
14
 
11
15
 
@@ -23,23 +27,54 @@ def startup(instance_path):
23
27
  file_deleter = FileDeleter()
24
28
  file_deleter.start()
25
29
 
26
- download_path = os.path.join(instance_path, "downloads")
30
+ download_path = instance_path / "downloads"
31
+ download_path.mkdir(parents=True, exist_ok=True)
32
+
33
+ dirs = sorted(download_path.iterdir(), reverse=True)
34
+ if len(dirs) > 0:
35
+ download_id = int(dirs[0].name[:SERIAL_DIGITS]) + 1
36
+
37
+
38
+ class DloadFile:
39
+ def __init__(self, running_name, finished_name, mode, newline, is_zip):
40
+ self.running_name = running_name
41
+ self.finished_name = finished_name
42
+ if is_zip:
43
+ self.f = ZipFile(running_name, mode=mode, compression=ZIP_DEFLATED)
44
+ else:
45
+ self.f = self.running_name.open(mode=mode, newline=newline)
46
+
47
+ def _check_exists(self):
48
+ if not self.running_name.exists():
49
+ raise BadRequest("Output file has been deleted.")
50
+
51
+ def write(self, b):
52
+ self._check_exists()
53
+ self.f.write(b)
54
+
55
+ def seek(self, offset, whence=0):
56
+ self._check_exists()
57
+ return self.f.seek(offset, whence)
58
+
59
+ def close(self):
60
+ self.f.close()
61
+ self._check_exists()
62
+ self.running_name.rename(self.finished_name)
27
63
 
28
- if not os.path.exists(download_path):
29
- os.makedirs(download_path)
64
+ def __enter__(self):
65
+ pass
30
66
 
31
- files = sorted(os.listdir(download_path), reverse=True)
32
- if len(files) > 0:
33
- download_id = int(files[0][:SERIAL_DIGITS]) + 1
67
+ def __exit__(self):
68
+ self.close()
34
69
 
35
70
 
36
- def make_names(base, user):
71
+ def open_file(base, user, mode="r", newline=None, is_zip=False):
37
72
  global download_id
38
73
 
39
74
  base = base.replace("/", "").replace(" ", "")
40
75
  try:
41
76
  lock.acquire()
42
- if len(os.listdir(download_path)) == 0:
77
+ if len(list(download_path.iterdir())) == 0:
43
78
  download_id = 0
44
79
  serial = str(download_id).zfill(SERIAL_DIGITS)
45
80
  download_id += 1
@@ -56,8 +91,8 @@ def make_names(base, user):
56
91
  uname = un.replace("@", "").replace(".", "").replace("\\", "")
57
92
 
58
93
  names = tuple("_".join((serial, v, uname, base)) for v in ("RUNNING", "FINISHED"))
59
- print(names)
60
- return tuple(os.path.join(download_path, name) for name in names)
94
+ running_name, finished_name = tuple(download_path / name for name in names)
95
+ return DloadFile(running_name, finished_name, mode, is_zip)
61
96
 
62
97
 
63
98
  mem_id = 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,7 +9,7 @@ from flask import g
10
9
  from sqlalchemy import or_, text
11
10
  from sqlalchemy.sql.expression import null
12
11
 
13
- import chellow.dloads
12
+ from chellow.dloads import open_file
14
13
  from chellow.e.computer import SiteSource, contract_func, displaced_era, forecast_date
15
14
  from chellow.models import Contract, Era, Session, Site, SiteEra, Source, Supply
16
15
  from chellow.utils import c_months_u, hh_format, hh_range, req_int
@@ -34,10 +33,7 @@ def content(contract_id, end_year, end_month, months, user):
34
33
  f = None
35
34
  try:
36
35
  with Session() as sess:
37
- running_name, finished_name = chellow.dloads.make_names(
38
- "displaced.csv", user
39
- )
40
- f = open(running_name, mode="w", newline="")
36
+ f = open_file("displaced.csv", user, mode="w", newline="")
41
37
  writer = csv.writer(f, lineterminator="\n")
42
38
  titles = [
43
39
  "Site Code",
@@ -268,7 +264,6 @@ def content(contract_id, end_year, end_month, months, user):
268
264
  finally:
269
265
  if f is not None:
270
266
  f.close()
271
- os.rename(running_name, finished_name)
272
267
 
273
268
 
274
269
  def do_get(sess):
@@ -1,5 +1,4 @@
1
1
  import csv
2
- import os
3
2
  import sys
4
3
  import threading
5
4
  import traceback
@@ -20,8 +19,8 @@ from werkzeug.exceptions import BadRequest
20
19
 
21
20
  from zish import ZishLocationException, loads
22
21
 
23
- import chellow.dloads
24
- from chellow.e.computer import contract_func
22
+ from chellow.dloads import open_file
23
+ from chellow.e.computer import SupplySource, contract_func
25
24
  from chellow.models import (
26
25
  Batch,
27
26
  Bill,
@@ -109,10 +108,9 @@ def content(
109
108
  try:
110
109
  with Session() as sess:
111
110
  user = User.get_by_id(sess, user_id)
112
- running_name, finished_name = chellow.dloads.make_names(
113
- f"bill_check_{fname_additional}.csv", user
111
+ tmp_file = open_file(
112
+ f"bill_check_{fname_additional}.csv", user, mode="w", newline=""
114
113
  )
115
- tmp_file = open(running_name, mode="w", newline="")
116
114
  writer = csv.writer(tmp_file, lineterminator="\n")
117
115
 
118
116
  report_run = ReportRun.get_by_id(sess, report_run_id)
@@ -245,7 +243,6 @@ def content(
245
243
  finally:
246
244
  if tmp_file is not None:
247
245
  tmp_file.close()
248
- os.rename(running_name, finished_name)
249
246
 
250
247
 
251
248
  def do_get(sess):
@@ -558,7 +555,7 @@ def _process_supply(
558
555
  )
559
556
  data_source = data_sources[ds_key]
560
557
  except KeyError:
561
- data_source = data_sources[ds_key] = chellow.e.computer.SupplySource(
558
+ data_source = data_sources[ds_key] = SupplySource(
562
559
  sess,
563
560
  chunk_start,
564
561
  chunk_finish,
@@ -573,7 +570,7 @@ def _process_supply(
573
570
  if data_source.measurement_type == "hh":
574
571
  metered_kwh += sum(h["msp-kwh"] for h in data_source.hh_data)
575
572
  else:
576
- ds = chellow.e.computer.SupplySource(
573
+ ds = SupplySource(
577
574
  sess,
578
575
  chunk_start,
579
576
  chunk_finish,
@@ -1,8 +1,6 @@
1
1
  import csv
2
- import os
3
2
  import threading
4
3
  import traceback
5
- import zipfile
6
4
  from io import StringIO
7
5
 
8
6
  from flask import g, request
@@ -10,7 +8,7 @@ from flask import g, request
10
8
  from sqlalchemy import or_, select
11
9
  from sqlalchemy.sql.expression import null
12
10
 
13
- import chellow.dloads
11
+ from chellow.dloads import open_file
14
12
  from chellow.e.computer import SupplySource, forecast_date
15
13
  from chellow.models import Channel, Era, HhDatum, RSession, Supply, User
16
14
  from chellow.utils import (
@@ -105,13 +103,12 @@ def content(
105
103
  fdate = forecast_date()
106
104
  user = User.get_by_id(sess, user_id)
107
105
 
108
- running_name, finished_name = chellow.dloads.make_names(
109
- "_".join(base_name) + (".zip" if is_zipped else ".csv"), user
110
- )
111
106
  if is_zipped:
112
- zf = zipfile.ZipFile(running_name, "w", zipfile.ZIP_DEFLATED)
107
+ zf = open_file(
108
+ "_".join(base_name) + ".zip", user, mode="w", is_zip=True
109
+ )
113
110
  else:
114
- tf = open(running_name, mode="w", newline="")
111
+ tf = open_file("_".join(base_name) + ".csv", user, mode="w", newline="")
115
112
  tf.write(titles_csv)
116
113
 
117
114
  for supply in sess.execute(supplies).scalars():
@@ -226,8 +223,6 @@ def content(
226
223
  zf.close()
227
224
  else:
228
225
  tf.write(msg)
229
- finally:
230
- os.rename(running_name, finished_name)
231
226
 
232
227
 
233
228
  def do_get(sess):
@@ -1,7 +1,5 @@
1
- import os
2
1
  import threading
3
2
  import traceback
4
- import zipfile
5
3
  from datetime import datetime as Datetime
6
4
 
7
5
  from flask import g, request
@@ -10,7 +8,7 @@ from sqlalchemy import null, or_, select, text, true
10
8
 
11
9
  from werkzeug.exceptions import BadRequest
12
10
 
13
- import chellow.dloads
11
+ from chellow.dloads import open_file
14
12
  from chellow.models import Era, Session, Site, SiteEra, Supply, User
15
13
  from chellow.utils import (
16
14
  hh_format,
@@ -67,12 +65,10 @@ def content(start_date, finish_date, supply_id, mpan_cores, is_zipped, user_id):
67
65
  with Session() as sess:
68
66
  user = User.get_by_id(sess, user_id)
69
67
 
70
- running_name, finished_name = chellow.dloads.make_names(base_name, user)
71
-
72
68
  if is_zipped:
73
- zf = zipfile.ZipFile(running_name, "w")
69
+ zf = open_file(base_name, user, mode="w", is_zip=True)
74
70
  else:
75
- tmp_file = open(running_name, "w")
71
+ tmp_file = open_file(base_name, user, mode="w")
76
72
 
77
73
  caches = {}
78
74
  supplies = (
@@ -243,11 +239,9 @@ def content(start_date, finish_date, supply_id, mpan_cores, is_zipped, user_id):
243
239
  finally:
244
240
  if is_zipped:
245
241
  zf.close()
246
- os.rename(running_name, finished_name)
247
242
  else:
248
243
  if tmp_file is not None:
249
244
  tmp_file.close()
250
- os.rename(running_name, finished_name)
251
245
 
252
246
 
253
247
  def do_post(sess):
@@ -1,5 +1,4 @@
1
1
  import csv
2
- import os
3
2
  import threading
4
3
  import traceback
5
4
 
@@ -10,7 +9,7 @@ from sqlalchemy.orm import joinedload
10
9
 
11
10
  from werkzeug.exceptions import BadRequest
12
11
 
13
- import chellow.dloads
12
+ from chellow.dloads import open_file
14
13
  from chellow.models import (
15
14
  Batch,
16
15
  Bill,
@@ -31,10 +30,7 @@ def content(year, month, months, supply_id, user_id):
31
30
  with Session() as sess:
32
31
  user = User.get_by_id(sess, user_id)
33
32
 
34
- running_name, finished_name = chellow.dloads.make_names(
35
- "register_reads.csv", user
36
- )
37
- f = open(running_name, mode="w", newline="")
33
+ f = open_file("register_reads.csv", user, mode="w", newline="")
38
34
  w = csv.writer(f, lineterminator="\n")
39
35
  titles = (
40
36
  "Duration Start",
@@ -178,7 +174,6 @@ def content(year, month, months, supply_id, user_id):
178
174
  finally:
179
175
  if f is not None:
180
176
  f.close()
181
- os.rename(running_name, finished_name)
182
177
 
183
178
 
184
179
  def do_get(sess):
@@ -1,4 +1,3 @@
1
- import os
2
1
  import sys
3
2
  import threading
4
3
  import traceback
@@ -16,7 +15,7 @@ from sqlalchemy.sql.expression import null
16
15
 
17
16
  from werkzeug.exceptions import BadRequest
18
17
 
19
- import chellow.dloads
18
+ from chellow.dloads import open_file
20
19
  from chellow.e.computer import contract_func, forecast_date
21
20
  from chellow.e.scenario import make_calcs, make_site_deltas
22
21
  from chellow.models import (
@@ -747,11 +746,7 @@ def content(
747
746
  if is_bill_check:
748
747
  base_name.append("bill_check")
749
748
 
750
- running_name, finished_name = chellow.dloads.make_names(
751
- "_".join(base_name) + ".ods", user
752
- )
753
-
754
- rf = open(running_name, "wb")
749
+ rf = open_file("_".join(base_name) + ".ods", user, mode="wb")
755
750
 
756
751
  for rate_script in scenario_props.get("rates", []):
757
752
  contract_id = rate_script["contract_id"]
@@ -1024,8 +1019,7 @@ def content(
1024
1019
  site_rows.append(["Problem " + msg])
1025
1020
  if rf is None:
1026
1021
  msg = traceback.format_exc()
1027
- r_name, f_name = chellow.dloads.make_names("error.txt", None)
1028
- ef = open(r_name, "w")
1022
+ ef = open_file("error.txt", None, mode="w")
1029
1023
  ef.write(msg + "\n")
1030
1024
  ef.close()
1031
1025
  else:
@@ -1042,7 +1036,6 @@ def content(
1042
1036
  finally:
1043
1037
  if rf is not None:
1044
1038
  rf.close()
1045
- os.rename(running_name, finished_name)
1046
1039
 
1047
1040
 
1048
1041
  def do_post(sess):
@@ -1,12 +1,11 @@
1
1
  import csv
2
- import os
3
2
  import sys
4
3
  import threading
5
4
  import traceback
6
5
 
7
6
  from flask import g
8
7
 
9
- import chellow.dloads
8
+ from chellow.dloads import open_file
10
9
  from chellow.models import Session, Site, User
11
10
  from chellow.utils import c_months_u, csv_make_val, req_int, req_str, to_ct
12
11
  from chellow.views import chellow_redirect
@@ -22,10 +21,12 @@ def content(start_date, finish_date, site_id, typ, user_id):
22
21
  try:
23
22
  with Session() as sess:
24
23
  user = User.get_by_id(sess, user_id)
25
- running_name, finished_name = chellow.dloads.make_names(
26
- f'site_hh_data_{to_ct(start_date).strftime("%Y%m%d%H%M")}.csv', user
24
+ f = open_file(
25
+ f'site_hh_data_{to_ct(start_date).strftime("%Y%m%d%H%M")}.csv',
26
+ user,
27
+ mode="w",
28
+ newline="",
27
29
  )
28
- f = open(running_name, mode="w", newline="")
29
30
  writer = csv.writer(f, lineterminator="\n")
30
31
  titles = ["site_code", "type", "hh_start_clock_time", "total"]
31
32
  hr_titles = tuple(map(str, range(1, 51)))
@@ -61,7 +62,6 @@ def content(start_date, finish_date, site_id, typ, user_id):
61
62
  finally:
62
63
  if f is not None:
63
64
  f.close()
64
- os.rename(running_name, finished_name)
65
65
 
66
66
 
67
67
  def do_get(sess):
@@ -1,5 +1,4 @@
1
1
  import csv
2
- import os
3
2
  import sys
4
3
  import threading
5
4
  import traceback
@@ -9,7 +8,7 @@ from flask import g
9
8
  from sqlalchemy import or_, select
10
9
  from sqlalchemy.sql.expression import null, true
11
10
 
12
- import chellow.dloads
11
+ from chellow.dloads import open_file
13
12
  from chellow.e.computer import SupplySource, forecast_date
14
13
  from chellow.models import Era, Session, Site, SiteEra, Supply
15
14
  from chellow.utils import (
@@ -31,10 +30,9 @@ def content(supply_id, start_date, finish_date, user):
31
30
 
32
31
  f_date = forecast_date()
33
32
 
34
- running_name, finished_name = chellow.dloads.make_names(
35
- f"supply_virtual_bills_hh_{supply_id}.csv", user
33
+ f = open_file(
34
+ f"supply_virtual_bills_hh_{supply_id}.csv", user, mode="w", newline=""
36
35
  )
37
- f = open(running_name, mode="w", newline="")
38
36
  w = csv.writer(f, lineterminator="\n")
39
37
 
40
38
  mop_titles = []
@@ -155,7 +153,6 @@ def content(supply_id, start_date, finish_date, user):
155
153
  finally:
156
154
  if f is not None:
157
155
  f.close()
158
- os.rename(running_name, finished_name)
159
156
 
160
157
 
161
158
  def do_get(sess):
@@ -1,5 +1,4 @@
1
1
  import csv
2
- import os
3
2
  import sys
4
3
  import threading
5
4
  import traceback
@@ -11,7 +10,7 @@ from sqlalchemy import or_
11
10
  from sqlalchemy.sql.expression import null, true
12
11
 
13
12
  import chellow.e.tnuos
14
- from chellow.dloads import make_names
13
+ from chellow.dloads import open_file
15
14
  from chellow.e.computer import SupplySource, forecast_date
16
15
  from chellow.e.duos import duos_vb
17
16
  from chellow.models import Era, Pc, Session, Site, SiteEra, Source, Supply, User
@@ -54,8 +53,7 @@ def content(year, supply_id, user_id):
54
53
  try:
55
54
  with Session() as sess:
56
55
  user = User.get_by_id(sess, user_id)
57
- running_name, finished_name = make_names("supplies_triad.csv", user)
58
- f = open(running_name, mode="w", newline="")
56
+ f = open_file("supplies_triad.csv", user, mode="w", newline="")
59
57
  writer = csv.writer(f, lineterminator="\n")
60
58
 
61
59
  march_start = to_utc(ct_datetime(year, 3, 1))
@@ -207,7 +205,6 @@ def content(year, supply_id, user_id):
207
205
  finally:
208
206
  if f is not None:
209
207
  f.close()
210
- os.rename(running_name, finished_name)
211
208
 
212
209
 
213
210
  def do_get(sess):
@@ -1,5 +1,4 @@
1
1
  import csv
2
- import os
3
2
  import sys
4
3
  import threading
5
4
  import traceback
@@ -15,8 +14,8 @@ from sqlalchemy.orm import joinedload
15
14
 
16
15
  from werkzeug.exceptions import BadRequest
17
16
 
18
- import chellow.dloads
19
17
  import chellow.gas.engine
18
+ from chellow.dloads import open_file
20
19
  from chellow.models import GBatch, GBill, GContract, GEra, Session, Site, SiteGEra, User
21
20
  from chellow.utils import csv_make_val, hh_max, hh_min, req_date, req_int, to_utc
22
21
  from chellow.views import chellow_redirect
@@ -30,10 +29,7 @@ def content(g_batch_id, g_bill_id, g_contract_id, start_date, finish_date, user_
30
29
  with Session() as sess:
31
30
  user = User.get_by_id(sess, user_id)
32
31
 
33
- running_name, finished_name = chellow.dloads.make_names(
34
- "g_bill_check.csv", user
35
- )
36
- tmp_file = open(running_name, "w")
32
+ tmp_file = open_file("g_bill_check.csv", user, mode="w")
37
33
  csv_writer = csv.writer(tmp_file)
38
34
  g_bills = (
39
35
  select(GBill)
@@ -121,7 +117,6 @@ def content(g_batch_id, g_bill_id, g_contract_id, start_date, finish_date, user_
121
117
  tmp_file.write(f"Problem {msg}")
122
118
  finally:
123
119
  tmp_file.close()
124
- os.rename(running_name, finished_name)
125
120
 
126
121
 
127
122
  def _process_g_bill_ids(
@@ -1,4 +1,3 @@
1
- import os
2
1
  import sys
3
2
  import threading
4
3
  import traceback
@@ -15,7 +14,7 @@ from sqlalchemy.sql.expression import null
15
14
 
16
15
  from werkzeug.exceptions import BadRequest
17
16
 
18
- import chellow.dloads
17
+ from chellow.dloads import open_file
19
18
  from chellow.e.computer import contract_func, forecast_date
20
19
  from chellow.e.scenario import make_calcs, make_site_deltas
21
20
  from chellow.models import (
@@ -786,11 +785,7 @@ def content(
786
785
  )
787
786
 
788
787
  user = User.get_by_id(rsess, user_id)
789
- running_name, finished_name = chellow.dloads.make_names(
790
- "_".join(base_name) + ".ods", user
791
- )
792
-
793
- rf = open(running_name, "wb")
788
+ rf = open_file("_".join(base_name) + ".ods", user, mode="wb")
794
789
 
795
790
  for rate_script in scenario_props.get("rates", []):
796
791
  contract_id = rate_script["contract_id"]
@@ -1094,8 +1089,7 @@ def content(
1094
1089
  site_rows.append(["Problem " + msg])
1095
1090
  if rf is None:
1096
1091
  msg = traceback.format_exc()
1097
- r_name, f_name = chellow.dloads.make_names("error.txt", None)
1098
- ef = open(r_name, "w")
1092
+ ef = open_file("error.txt", None, mode="w")
1099
1093
  ef.write(msg + "\n")
1100
1094
  ef.close()
1101
1095
  else:
@@ -1113,7 +1107,6 @@ def content(
1113
1107
  finally:
1114
1108
  if rf is not None:
1115
1109
  rf.close()
1116
- os.rename(running_name, finished_name)
1117
1110
 
1118
1111
 
1119
1112
  def do_post(sess):
@@ -1,5 +1,4 @@
1
1
  import csv
2
- import os
3
2
  import threading
4
3
  import traceback
5
4
 
@@ -7,7 +6,7 @@ from flask import g
7
6
 
8
7
  from sqlalchemy.sql import func, select
9
8
 
10
- import chellow.dloads
9
+ from chellow.dloads import open_file
11
10
  from chellow.models import (
12
11
  Batch,
13
12
  Bill,
@@ -25,8 +24,7 @@ def content(user_id):
25
24
  try:
26
25
  with Session() as sess:
27
26
  user = User.get_by_id(sess, user_id)
28
- running_name, finished_name = chellow.dloads.make_names("batches.csv", user)
29
- f = open(running_name, mode="w", newline="")
27
+ f = open_file("batches.csv", user, mode="w", newline="")
30
28
  writer = csv.writer(f, lineterminator="\n")
31
29
 
32
30
  titles = (
@@ -140,7 +138,6 @@ def content(user_id):
140
138
  finally:
141
139
  if f is not None:
142
140
  f.close()
143
- os.rename(running_name, finished_name)
144
141
 
145
142
 
146
143
  def do_get(sess):
@@ -1,5 +1,4 @@
1
1
  import csv
2
- import os
3
2
  import threading
4
3
  import traceback
5
4
  from collections import defaultdict
@@ -9,7 +8,7 @@ from flask import g
9
8
  from sqlalchemy import select
10
9
  from sqlalchemy.orm import joinedload
11
10
 
12
- import chellow.dloads
11
+ from chellow.dloads import open_file
13
12
  from chellow.models import Batch, Bill, Session, User
14
13
  from chellow.utils import csv_make_val, req_int
15
14
  from chellow.views import chellow_redirect
@@ -94,10 +93,7 @@ def content(user_id, batch_id):
94
93
  try:
95
94
  with Session() as sess:
96
95
  user = User.get_by_id(sess, user_id)
97
- running_name, finished_name = chellow.dloads.make_names(
98
- f"bills_batch_{batch_id}.csv", user
99
- )
100
- f = open(running_name, mode="w", newline="")
96
+ f = open_file(f"bills_batch_{batch_id}.csv", user, mode="w", newline="")
101
97
  writer = csv.writer(f, lineterminator="\n")
102
98
  _content(sess, writer, batch_id)
103
99
 
@@ -109,7 +105,6 @@ def content(user_id, batch_id):
109
105
  finally:
110
106
  if f is not None:
111
107
  f.close()
112
- os.rename(running_name, finished_name)
113
108
 
114
109
 
115
110
  def do_get(sess):