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