chellow 1682689432.0.0__py3-none-any.whl → 1683187792.0.0__py3-none-any.whl
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/e/bill_parsers/haven_edi_tprs.py +6 -2
- chellow/e/tnuos.py +68 -0
- chellow/e/views.py +0 -50
- chellow/rate_server.py +8 -2
- chellow/reports/report_bills.py +86 -0
- chellow/reports/report_ecoes_comparison.py +1 -1
- chellow/templates/e/supplier_batch.html +1 -1
- chellow/templates/non_core_contract.html +4 -0
- chellow/templates/rate_server.html +2 -2
- chellow/views.py +13 -13
- {chellow-1682689432.0.0.dist-info → chellow-1683187792.0.0.dist-info}/METADATA +2 -2
- {chellow-1682689432.0.0.dist-info → chellow-1683187792.0.0.dist-info}/RECORD +13 -13
- chellow/reports/report_155.py +0 -11
- {chellow-1682689432.0.0.dist-info → chellow-1683187792.0.0.dist-info}/WHEEL +0 -0
|
@@ -29,7 +29,6 @@ def _process_BCD(elements, headers):
|
|
|
29
29
|
invn = elements["INVN"]
|
|
30
30
|
reference = invn[0]
|
|
31
31
|
headers["reference"] = reference
|
|
32
|
-
headers["account"] = "SA" + reference[:9]
|
|
33
32
|
|
|
34
33
|
btcd = elements["BTCD"]
|
|
35
34
|
headers["bill_type_code"] = btcd[0]
|
|
@@ -248,6 +247,11 @@ def _process_CCD4(elements, headers):
|
|
|
248
247
|
breakdown["standing-gbp"] += to_decimal(ctot) / Decimal("100")
|
|
249
248
|
|
|
250
249
|
|
|
250
|
+
def _process_CLO(elements, headers):
|
|
251
|
+
cloc = elements["CLOC"]
|
|
252
|
+
headers["account"] = cloc[1]
|
|
253
|
+
|
|
254
|
+
|
|
251
255
|
def _process_MTR(elements, headers):
|
|
252
256
|
if headers["message_type"] == "UTLBIL":
|
|
253
257
|
if headers["mpan_core"] is None:
|
|
@@ -311,7 +315,7 @@ CODE_FUNCS = {
|
|
|
311
315
|
"CCD4": _process_CCD4,
|
|
312
316
|
"CDA": _process_NOOP,
|
|
313
317
|
"CDT": _process_NOOP,
|
|
314
|
-
"CLO":
|
|
318
|
+
"CLO": _process_CLO,
|
|
315
319
|
"DNA": _process_NOOP,
|
|
316
320
|
"END": _process_NOOP,
|
|
317
321
|
"FIL": _process_NOOP,
|
chellow/e/tnuos.py
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
from datetime import datetime as Datetime, timedelta as Timedelta
|
|
1
2
|
from decimal import Decimal, InvalidOperation
|
|
3
|
+
from io import BytesIO
|
|
2
4
|
|
|
3
5
|
from dateutil.relativedelta import relativedelta
|
|
4
6
|
|
|
7
|
+
from pypdf import PdfReader
|
|
5
8
|
|
|
6
9
|
from sqlalchemy import null, or_, select
|
|
7
10
|
|
|
@@ -11,10 +14,12 @@ import chellow.e.computer
|
|
|
11
14
|
import chellow.e.duos
|
|
12
15
|
from chellow.models import Contract, RateScript
|
|
13
16
|
from chellow.national_grid import api_get
|
|
17
|
+
from chellow.rate_server import download
|
|
14
18
|
from chellow.utils import (
|
|
15
19
|
c_months_u,
|
|
16
20
|
ct_datetime,
|
|
17
21
|
hh_after,
|
|
22
|
+
hh_format,
|
|
18
23
|
hh_min,
|
|
19
24
|
to_ct,
|
|
20
25
|
to_utc,
|
|
@@ -514,3 +519,66 @@ def ng_import_triad(sess, log, set_progress, s):
|
|
|
514
519
|
|
|
515
520
|
log("Finished TNUoS TRIAD Tariffs")
|
|
516
521
|
sess.commit()
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
def _find_triad_dates(file_name, file_like):
|
|
525
|
+
dates = []
|
|
526
|
+
rate_script = {"a_file_name": file_name, "triad_dates": dates}
|
|
527
|
+
|
|
528
|
+
reader = PdfReader(file_like)
|
|
529
|
+
in_table = False
|
|
530
|
+
for page in reader.pages:
|
|
531
|
+
for line in page.extract_text().splitlines():
|
|
532
|
+
if in_table:
|
|
533
|
+
date_str, period_str, _ = line.split()
|
|
534
|
+
date = Datetime.strptime(date_str, "%d/%m/%Y")
|
|
535
|
+
delta = Timedelta(minutes=30) * (int(period_str) - 1)
|
|
536
|
+
dates.append(to_utc(to_ct(date + delta)))
|
|
537
|
+
if len(dates) == 3:
|
|
538
|
+
in_table = False
|
|
539
|
+
else:
|
|
540
|
+
if "Demand (MW)" in line:
|
|
541
|
+
in_table = True
|
|
542
|
+
|
|
543
|
+
return rate_script
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
def rate_server_import(sess, log, set_progress, s, paths):
|
|
547
|
+
log("Starting to check for new TNUoS triad date PDFs")
|
|
548
|
+
|
|
549
|
+
year_entries = {}
|
|
550
|
+
for path, url in paths:
|
|
551
|
+
if len(path) == 4:
|
|
552
|
+
year, utility, rate_type, file_name = path
|
|
553
|
+
if utility == "electricity" and rate_type == "tnuos":
|
|
554
|
+
try:
|
|
555
|
+
fl_entries = year_entries[year]
|
|
556
|
+
except KeyError:
|
|
557
|
+
fl_entries = year_entries[year] = {}
|
|
558
|
+
|
|
559
|
+
fl_entries[file_name] = url
|
|
560
|
+
|
|
561
|
+
for year, year_pdfs in sorted(year_entries.items()):
|
|
562
|
+
year_start = to_utc(ct_datetime(year, 4, 1))
|
|
563
|
+
contract = Contract.get_non_core_by_name(sess, "triad_dates")
|
|
564
|
+
if year_start < contract.start_rate_script.start_date:
|
|
565
|
+
continue
|
|
566
|
+
rs = sess.execute(
|
|
567
|
+
select(RateScript).where(
|
|
568
|
+
RateScript.contract == contract,
|
|
569
|
+
RateScript.start_date == year_start,
|
|
570
|
+
)
|
|
571
|
+
).scalar_one_or_none()
|
|
572
|
+
if rs is None:
|
|
573
|
+
rs = contract.insert_rate_script(sess, year_start, {})
|
|
574
|
+
|
|
575
|
+
if len(year_pdfs) > 0:
|
|
576
|
+
file_name, url = sorted(year_pdfs.items())[-1]
|
|
577
|
+
|
|
578
|
+
rs_script = rs.make_script()
|
|
579
|
+
if rs_script.get("a_file_name") != file_name:
|
|
580
|
+
rs.update(_find_triad_dates(file_name, BytesIO(download(s, url))))
|
|
581
|
+
log(f"Updated triad dates rate script for {hh_format(year_start)}")
|
|
582
|
+
|
|
583
|
+
log("Finished TNUoS triad dates PDFs")
|
|
584
|
+
sess.commit()
|
chellow/e/views.py
CHANGED
|
@@ -3963,56 +3963,6 @@ def supplier_batch_edit_post(batch_id):
|
|
|
3963
3963
|
)
|
|
3964
3964
|
|
|
3965
3965
|
|
|
3966
|
-
@e.route("/supplier_batches/<int:batch_id>/csv")
|
|
3967
|
-
def supplier_batch_csv_get(batch_id):
|
|
3968
|
-
batch = Batch.get_by_id(g.sess, batch_id)
|
|
3969
|
-
si = StringIO()
|
|
3970
|
-
cw = csv.writer(si)
|
|
3971
|
-
cw.writerow(
|
|
3972
|
-
[
|
|
3973
|
-
"Supplier Contract",
|
|
3974
|
-
"Batch Reference",
|
|
3975
|
-
"Bill Reference",
|
|
3976
|
-
"Account",
|
|
3977
|
-
"Issued",
|
|
3978
|
-
"From",
|
|
3979
|
-
"To",
|
|
3980
|
-
"kWh",
|
|
3981
|
-
"Net",
|
|
3982
|
-
"VAT",
|
|
3983
|
-
"Gross",
|
|
3984
|
-
"Type",
|
|
3985
|
-
]
|
|
3986
|
-
)
|
|
3987
|
-
for bill in (
|
|
3988
|
-
g.sess.query(Bill)
|
|
3989
|
-
.filter(Bill.batch == batch)
|
|
3990
|
-
.order_by(Bill.reference, Bill.start_date)
|
|
3991
|
-
.options(joinedload(Bill.bill_type))
|
|
3992
|
-
):
|
|
3993
|
-
cw.writerow(
|
|
3994
|
-
[
|
|
3995
|
-
batch.contract.name,
|
|
3996
|
-
batch.reference,
|
|
3997
|
-
bill.reference,
|
|
3998
|
-
bill.account,
|
|
3999
|
-
hh_format(bill.issue_date),
|
|
4000
|
-
hh_format(bill.start_date),
|
|
4001
|
-
hh_format(bill.finish_date),
|
|
4002
|
-
str(bill.kwh),
|
|
4003
|
-
str(bill.net),
|
|
4004
|
-
str(bill.vat),
|
|
4005
|
-
str(bill.gross),
|
|
4006
|
-
bill.bill_type.code,
|
|
4007
|
-
]
|
|
4008
|
-
)
|
|
4009
|
-
|
|
4010
|
-
output = make_response(si.getvalue())
|
|
4011
|
-
output.headers["Content-Disposition"] = 'attachment; filename="batch.csv"'
|
|
4012
|
-
output.headers["Content-type"] = "text/csv"
|
|
4013
|
-
return output
|
|
4014
|
-
|
|
4015
|
-
|
|
4016
3966
|
@e.route("/supplier_batches/<int:batch_id>", methods=["POST"])
|
|
4017
3967
|
def supplier_batch_post(batch_id):
|
|
4018
3968
|
try:
|
chellow/rate_server.py
CHANGED
|
@@ -72,8 +72,13 @@ def run_import(sess, log, set_progress):
|
|
|
72
72
|
paths_list = []
|
|
73
73
|
for sub_entry in tree_entry["tree"]:
|
|
74
74
|
path = sub_entry["path"].split("/")
|
|
75
|
-
if path[-1]
|
|
76
|
-
|
|
75
|
+
if path[-1] == "README.md":
|
|
76
|
+
continue
|
|
77
|
+
if len(path) == 1 and path[0] == "LICENSE":
|
|
78
|
+
continue
|
|
79
|
+
|
|
80
|
+
path[0] = int(path[0])
|
|
81
|
+
paths_list.append((tuple(path), sub_entry["url"]))
|
|
77
82
|
|
|
78
83
|
paths = tuple(paths_list)
|
|
79
84
|
|
|
@@ -82,6 +87,7 @@ def run_import(sess, log, set_progress):
|
|
|
82
87
|
"chellow.e.dno_rate_parser",
|
|
83
88
|
"chellow.e.laf_import",
|
|
84
89
|
"chellow.e.mdd_importer",
|
|
90
|
+
"chellow.e.tnuos",
|
|
85
91
|
"chellow.gas.dn_rate_parser",
|
|
86
92
|
):
|
|
87
93
|
mod = import_module(mod_name)
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import csv
|
|
2
|
+
import os
|
|
3
|
+
import threading
|
|
4
|
+
import traceback
|
|
5
|
+
|
|
6
|
+
from flask import g
|
|
7
|
+
|
|
8
|
+
from sqlalchemy import select
|
|
9
|
+
from sqlalchemy.orm import joinedload
|
|
10
|
+
|
|
11
|
+
import chellow.dloads
|
|
12
|
+
from chellow.models import Batch, Bill, Session, User
|
|
13
|
+
from chellow.utils import csv_make_val, req_int
|
|
14
|
+
from chellow.views import chellow_redirect
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def content(user_id, batch_id):
|
|
18
|
+
sess = f = writer = None
|
|
19
|
+
try:
|
|
20
|
+
sess = Session()
|
|
21
|
+
user = User.get_by_id(sess, user_id)
|
|
22
|
+
running_name, finished_name = chellow.dloads.make_names(
|
|
23
|
+
f"bills_batch_{batch_id}.csv", user
|
|
24
|
+
)
|
|
25
|
+
f = open(running_name, mode="w", newline="")
|
|
26
|
+
writer = csv.writer(f, lineterminator="\n")
|
|
27
|
+
batch = Batch.get_by_id(sess, batch_id)
|
|
28
|
+
titles = [
|
|
29
|
+
"supplier_contract",
|
|
30
|
+
"batch_reference",
|
|
31
|
+
"bill_reference",
|
|
32
|
+
"imp_mpan_core",
|
|
33
|
+
"account",
|
|
34
|
+
"issued",
|
|
35
|
+
"from",
|
|
36
|
+
"to",
|
|
37
|
+
"kwh",
|
|
38
|
+
"net",
|
|
39
|
+
"vAT",
|
|
40
|
+
"gross",
|
|
41
|
+
"type",
|
|
42
|
+
]
|
|
43
|
+
writer.writerow(titles)
|
|
44
|
+
|
|
45
|
+
for bill in sess.execute(
|
|
46
|
+
select(Bill)
|
|
47
|
+
.where(Bill.batch == batch)
|
|
48
|
+
.order_by(Bill.reference, Bill.start_date)
|
|
49
|
+
.options(joinedload(Bill.bill_type), joinedload(Bill.supply))
|
|
50
|
+
).scalars():
|
|
51
|
+
era = bill.supply.find_era_at(sess, bill.start_date)
|
|
52
|
+
vals = [
|
|
53
|
+
batch.contract.name,
|
|
54
|
+
batch.reference,
|
|
55
|
+
bill.reference,
|
|
56
|
+
None if era is None else era.imp_mpan_core,
|
|
57
|
+
bill.account,
|
|
58
|
+
bill.issue_date,
|
|
59
|
+
bill.start_date,
|
|
60
|
+
bill.finish_date,
|
|
61
|
+
bill.kwh,
|
|
62
|
+
bill.net,
|
|
63
|
+
bill.vat,
|
|
64
|
+
bill.gross,
|
|
65
|
+
bill.bill_type.code,
|
|
66
|
+
]
|
|
67
|
+
writer.writerow(csv_make_val(v) for v in vals)
|
|
68
|
+
|
|
69
|
+
except BaseException:
|
|
70
|
+
msg = traceback.format_exc()
|
|
71
|
+
print(msg)
|
|
72
|
+
if f is not None:
|
|
73
|
+
f.write(msg)
|
|
74
|
+
finally:
|
|
75
|
+
if sess is not None:
|
|
76
|
+
sess.close()
|
|
77
|
+
if f is not None:
|
|
78
|
+
f.close()
|
|
79
|
+
os.rename(running_name, finished_name)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def do_get(sess):
|
|
83
|
+
batch_id = req_int("batch_id")
|
|
84
|
+
args = g.user.id, batch_id
|
|
85
|
+
threading.Thread(target=content, args=args).start()
|
|
86
|
+
return chellow_redirect("/downloads", 303)
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
<td>{{ "£{:,}".format(sum_vat_gbp) }}</td>
|
|
79
79
|
<td>{{ "£{:,}".format(sum_gross_gbp) }}</td>
|
|
80
80
|
<td>{{ "{:,}".format(sum_kwh) }}</td>
|
|
81
|
-
<td><a href="/
|
|
81
|
+
<td><a href="/reports/bills?batch_id={{batch.id}}" >Download</a></td>
|
|
82
82
|
<td>
|
|
83
83
|
{% if batch_reports %}
|
|
84
84
|
<ul>
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
</td>
|
|
101
101
|
</tr>
|
|
102
102
|
<tr>
|
|
103
|
-
<th>
|
|
103
|
+
<th>TRIAD Dates PDFs</th>
|
|
104
104
|
<td>
|
|
105
105
|
<table>
|
|
106
106
|
<thead>
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
</tr>
|
|
111
111
|
</thead>
|
|
112
112
|
<tbody>
|
|
113
|
-
{% for rs in
|
|
113
|
+
{% for rs in triad_dates_rs %}
|
|
114
114
|
{% set script = rs.make_script() %}
|
|
115
115
|
<tr>
|
|
116
116
|
<td>{{rs.start_date|hh_format}}</td>
|
chellow/views.py
CHANGED
|
@@ -127,7 +127,7 @@ from chellow.utils import (
|
|
|
127
127
|
utc_datetime_now,
|
|
128
128
|
)
|
|
129
129
|
|
|
130
|
-
home = Blueprint("", __name__, template_folder="templates")
|
|
130
|
+
home = Blueprint("home", __name__, url_prefix="", template_folder="templates")
|
|
131
131
|
|
|
132
132
|
|
|
133
133
|
def chellow_redirect(path, code=None):
|
|
@@ -2176,17 +2176,6 @@ def rate_server_get():
|
|
|
2176
2176
|
.where(MarketRole.code == "R", RateScript.start_date >= fy_start)
|
|
2177
2177
|
.order_by(Contract.name, RateScript.start_date.desc())
|
|
2178
2178
|
).scalars()
|
|
2179
|
-
tnuos_rs = g.sess.execute(
|
|
2180
|
-
select(RateScript)
|
|
2181
|
-
.join(RateScript.contract)
|
|
2182
|
-
.join(MarketRole)
|
|
2183
|
-
.where(
|
|
2184
|
-
MarketRole.code == "Z",
|
|
2185
|
-
RateScript.start_date >= fy_start,
|
|
2186
|
-
Contract.name == "tnuos",
|
|
2187
|
-
)
|
|
2188
|
-
.order_by(RateScript.start_date.desc())
|
|
2189
|
-
).scalars()
|
|
2190
2179
|
nts_rs = g.sess.execute(
|
|
2191
2180
|
select(GRateScript)
|
|
2192
2181
|
.join(GRateScript.g_contract)
|
|
@@ -2218,6 +2207,17 @@ def rate_server_get():
|
|
|
2218
2207
|
)
|
|
2219
2208
|
.order_by(RateScript.start_date.desc())
|
|
2220
2209
|
).scalars()
|
|
2210
|
+
triad_dates_rs = g.sess.execute(
|
|
2211
|
+
select(RateScript)
|
|
2212
|
+
.join(RateScript.contract)
|
|
2213
|
+
.join(MarketRole)
|
|
2214
|
+
.where(
|
|
2215
|
+
MarketRole.code == "Z",
|
|
2216
|
+
RateScript.start_date >= fy_start,
|
|
2217
|
+
Contract.name == "triad_dates",
|
|
2218
|
+
)
|
|
2219
|
+
.order_by(RateScript.start_date.desc())
|
|
2220
|
+
).scalars()
|
|
2221
2221
|
|
|
2222
2222
|
return render_template(
|
|
2223
2223
|
"rate_server.html",
|
|
@@ -2225,10 +2225,10 @@ def rate_server_get():
|
|
|
2225
2225
|
config_state=config.make_state(),
|
|
2226
2226
|
config_properties=props.get("rate_server", {}),
|
|
2227
2227
|
dno_rs=dno_rs,
|
|
2228
|
-
tnuos_rs=tnuos_rs,
|
|
2229
2228
|
nts_rs=nts_rs,
|
|
2230
2229
|
dn_rs=dn_rs,
|
|
2231
2230
|
bsuos_rs=bsuos_rs,
|
|
2231
|
+
triad_dates_rs=triad_dates_rs,
|
|
2232
2232
|
)
|
|
2233
2233
|
|
|
2234
2234
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: chellow
|
|
3
|
-
Version:
|
|
3
|
+
Version: 1683187792.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)
|
|
@@ -8,7 +8,7 @@ Classifier: Operating System :: OS Independent
|
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Requires-Python: >=3.9
|
|
10
10
|
Requires-Dist: flask-restx==1.0.3
|
|
11
|
-
Requires-Dist: flask==2.
|
|
11
|
+
Requires-Dist: flask==2.3.2
|
|
12
12
|
Requires-Dist: odio==0.0.22
|
|
13
13
|
Requires-Dist: openpyxl==3.0.10
|
|
14
14
|
Requires-Dist: pep3143daemon==0.0.6
|
|
@@ -8,10 +8,10 @@ chellow/general_import.py,sha256=Xuiwl-yeM0MCmPstzQR2E6ASs8sYE8b1GNeDLStnizY,584
|
|
|
8
8
|
chellow/models.py,sha256=UhVekL4GM_4zs6ZGu83QFssyEMbwLHWerT1dWcby-ps,233497
|
|
9
9
|
chellow/national_grid.py,sha256=0lckRMF-udVa0VWzCOlcHx36Su0628fI4Fkvk2ttUWo,4409
|
|
10
10
|
chellow/proxy.py,sha256=Mzssi9nTf6s_G4RSn8k5oAHqzVYIxMsfbudj1amYucI,1387
|
|
11
|
-
chellow/rate_server.py,sha256=
|
|
11
|
+
chellow/rate_server.py,sha256=xVk15pdSovcD8K8BWcOmjwo_L3a8LYry7L2Gvw56OEQ,5696
|
|
12
12
|
chellow/testing.py,sha256=1TvNEPjX_VRPDifJWRFJw_8gg0RCsEpYVHkspQ1diJw,3913
|
|
13
13
|
chellow/utils.py,sha256=IHC4Pcd_9CRbmJXAOlDvTyAcUoaWeLSH37zgjqVYYl4,18981
|
|
14
|
-
chellow/views.py,sha256=
|
|
14
|
+
chellow/views.py,sha256=luCwKmgvEk2AFaFC1deBG1nTw6YGXjSJtlwAq2yLJh8,83492
|
|
15
15
|
chellow/e/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
16
|
chellow/e/aahedc.py,sha256=DUrYAlrn4jzf6y6C2wivxlFosdVIibG69BWy_KMekGM,706
|
|
17
17
|
chellow/e/bill_importer.py,sha256=BHrQkcvlOh27k0KexHA8nWJGcHGGpewbkkpncmxbAc4,7183
|
|
@@ -33,8 +33,8 @@ chellow/e/ro.py,sha256=A74nFxitFCZ-oLmYzPza54e328VKcqv8L2wVGilaUjA,696
|
|
|
33
33
|
chellow/e/scenario.py,sha256=IuyE494XaBLq3FW7NdJePD6J4cTzPogfACO6dThiY00,23239
|
|
34
34
|
chellow/e/system_price.py,sha256=IPBLSRPzGA3yca4tpR8PJemwPbgqVjn1WnljOMUyWnA,8145
|
|
35
35
|
chellow/e/tlms.py,sha256=gXBZTHXqGVcaTGHaYGVA5Ir5pzoBDqFC1Kl1mQ0IDqU,9549
|
|
36
|
-
chellow/e/tnuos.py,sha256=
|
|
37
|
-
chellow/e/views.py,sha256=
|
|
36
|
+
chellow/e/tnuos.py,sha256=gFvNgibycspsyD3I8xxBWPjvyWJfkAiDRMbLenCpEgQ,18947
|
|
37
|
+
chellow/e/views.py,sha256=21VRz7gS1liLxzG1ZOD5hkIbsDCTYhF8KU2wdCEKiHs,178868
|
|
38
38
|
chellow/e/bill_parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
39
|
chellow/e/bill_parsers/activity_mop_stark_xlsx.py,sha256=v1s4O8phVJVn9sOs9HKrKYcECAP0ApnUgqCaa2ARYiQ,4234
|
|
40
40
|
chellow/e/bill_parsers/annual_mop_stark_xlsx.py,sha256=4dAWjaxsDnnGBnRAjgFe7IZLxIcLMGiTuXh1uqNnnlQ,4382
|
|
@@ -45,7 +45,7 @@ chellow/e/bill_parsers/engie_xls.py,sha256=tk5EAZjv5cKuB1R7OVAcLUVvCZTWAs8IsoyGb
|
|
|
45
45
|
chellow/e/bill_parsers/gdf_csv.py,sha256=ZfK3Oc6oP28p_P9DIevLNB_zW2WLcEJ3Lvb1gL310YU,7382
|
|
46
46
|
chellow/e/bill_parsers/haven_csv.py,sha256=Ft81mqHTbCQl6dMLkLin777vAX2T999Q_4fkNwl-naM,13606
|
|
47
47
|
chellow/e/bill_parsers/haven_edi.py,sha256=eN40WL--JkX7TNIefgZohYv0BQ8vOm6AqkWlJSW5Mmk,16188
|
|
48
|
-
chellow/e/bill_parsers/haven_edi_tprs.py,sha256=
|
|
48
|
+
chellow/e/bill_parsers/haven_edi_tprs.py,sha256=e1zVw5sWyGPEO5Ua-vmyUvUO-STn2DSNOxp1s5F914I,10701
|
|
49
49
|
chellow/e/bill_parsers/mm.py,sha256=P4CdkskDrjmFMSDp0ehE_ichTBHGywbT_dckMxuAqQQ,1929
|
|
50
50
|
chellow/e/bill_parsers/nonsettlement_dc_stark_xlsx.py,sha256=MF74mh6gdBb0lqvPyPZIv_7vsqNu_zNXWpIzlNFtl1g,4576
|
|
51
51
|
chellow/e/bill_parsers/settlement_dc_stark_xlsx.py,sha256=4Dfq4N0ZOgD_x3ZJ9CnGzsLbwhS1-7aTJqFx00GCnU0,6007
|
|
@@ -63,7 +63,6 @@ chellow/gas/views.py,sha256=5xfNrKDi-lK7alkREu0P_3z7qgWz-fKW1zZ78NrBZh8,54937
|
|
|
63
63
|
chellow/reports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
64
64
|
chellow/reports/report_109.py,sha256=oeoxRX8r8_XjFRCfBb4qN2OAwA_hI6SSRk8V6hKXQhA,10182
|
|
65
65
|
chellow/reports/report_111.py,sha256=ySqF9gYHVVI-CXjfSz6Kfelh7ncmvcUS4WsFE4XvTLk,28029
|
|
66
|
-
chellow/reports/report_155.py,sha256=ZXYEx8wi2FtA5ysjhX2rbMG8CQFjZQV4CrUz6pBBs0o,305
|
|
67
66
|
chellow/reports/report_169.py,sha256=-zSgfrX6NjgMQGwbKaUPvcPqPHbDQ8_pL3EL33u40yA,8331
|
|
68
67
|
chellow/reports/report_177.py,sha256=8-hfejbuwAohwFSbZC_VBtUUazi3hkdgA0oHvqA1St0,11499
|
|
69
68
|
chellow/reports/report_181.py,sha256=oehWcNMTcCUoSRq3eEGMwVraPgB5wucll6WlVj53xHM,5027
|
|
@@ -86,10 +85,11 @@ chellow/reports/report_81.py,sha256=xULQ6NDG8yvF7qnUXDgqv4Rv-XikAzJQnBgwpqyFFTc,
|
|
|
86
85
|
chellow/reports/report_87.py,sha256=0LIGY4gImnHOt7Dno7j4g933yid9NMW8l7WrCl5vR74,5768
|
|
87
86
|
chellow/reports/report_asset_comparison.py,sha256=ictRSzmpH9Z0i67s46SyMhALEg4bYvjr4WNMRaNCQnk,6111
|
|
88
87
|
chellow/reports/report_batches.py,sha256=PTLsWYZI4yJjTqUeZe0ovSDpzTOEU3zG54fkmvutm6Y,4571
|
|
88
|
+
chellow/reports/report_bills.py,sha256=UeKZMK2T-4s9Lj5Ef6M2P3eD4oHmXCjf2LGStYF5saA,2429
|
|
89
89
|
chellow/reports/report_csv_llfcs.py,sha256=d3CWJB7bVinkn6ytu9AvPbB9TMHGg2E7LLjabu3QS3E,1852
|
|
90
90
|
chellow/reports/report_csv_site_hh_data.py,sha256=u8c4n4YFdljsCF0wh_SAnkbTIVVEDhPnccJyCpCVfm8,4067
|
|
91
91
|
chellow/reports/report_csv_site_snags.py,sha256=U_zg4ppg9DRetKAuaxOnirkcwtMhz2iCE3Fbq-o7AVM,2591
|
|
92
|
-
chellow/reports/report_ecoes_comparison.py,sha256=
|
|
92
|
+
chellow/reports/report_ecoes_comparison.py,sha256=_8HisTy77misa2beYrlaC51Mp5kI6WaabPQaVjpGkbk,21197
|
|
93
93
|
chellow/reports/report_g_monthly_duration.py,sha256=lS12t4vAZIj-pD22aWPoO-n8EQBCIzzY2Qnx9SawhaQ,12217
|
|
94
94
|
chellow/reports/report_g_supplies_snapshot.py,sha256=wmXsi8EduWyAw4QtpAFH5ZWkcYggKNWO3pEoG63D0LU,4571
|
|
95
95
|
chellow/reports/report_g_supply_virtual_bill.py,sha256=6oRFV2ffryePM-jcabiXO5vo4fLt_wQZ2ejvlwIPa0g,3617
|
|
@@ -117,14 +117,14 @@ chellow/templates/local_report.html,sha256=pV7_0QwyQ-D3OS9LXrly5pq3qprZnwTCoq6vC
|
|
|
117
117
|
chellow/templates/local_reports.html,sha256=4wbfVkY4wUfSSfWjxqIsvCpIsa9k7H_dGAjznrG5jNM,701
|
|
118
118
|
chellow/templates/national_grid.html,sha256=8W92tsjlqPSB0J--nyFIi-wzFae9CyDr6fODXLZp8ic,991
|
|
119
119
|
chellow/templates/non_core_auto_importer.html,sha256=s9SluRN1bHTHjd8GP6uFhk6LrZYG8dqBG3y94zUKe5Q,944
|
|
120
|
-
chellow/templates/non_core_contract.html,sha256=
|
|
120
|
+
chellow/templates/non_core_contract.html,sha256=BDld-pGs7OnBqc99i9H7WsPc5iBuyXY2AbIM3oUwxRE,1380
|
|
121
121
|
chellow/templates/non_core_contract_edit.html,sha256=_EWwJdrez2uI2mA58Jf5WIYs7UfBw1xWV-Bpgliyurw,3005
|
|
122
122
|
chellow/templates/non_core_contracts.html,sha256=vIrVdn4NUj58Uy17REs_fy2JBQzPkjcg63bg7q6kELg,661
|
|
123
123
|
chellow/templates/non_core_rate_script.html,sha256=CqGnuWdzhk_o_2xNFcF8rgk0p7SNh0B0c3k1JzOtn98,1283
|
|
124
124
|
chellow/templates/non_core_rate_script_add.html,sha256=Qx8_cYFRQZrXSyR3uf_8OxUAUz3PqyYc4V11lTU18sE,690
|
|
125
125
|
chellow/templates/non_core_rate_script_edit.html,sha256=14jFqalqmFg9_2LUlEy7Q4yUx4pVGTHc9fbYnpm-3Y8,1868
|
|
126
126
|
chellow/templates/object_summary.html,sha256=VGCAAYcWTzgNfL0mxEef2Fa8dP3FcBhzj0fmF82_S4I,244
|
|
127
|
-
chellow/templates/rate_server.html,sha256=
|
|
127
|
+
chellow/templates/rate_server.html,sha256=4f6V8PRW-bn2BQxX-BZqNQZf1w6GJPD-L4AxpSGQWZE,4460
|
|
128
128
|
chellow/templates/report_run.html,sha256=O_wjIu43S-mKVyZyku3dJJdvyck3rAgEdhw59TsCcK0,4040
|
|
129
129
|
chellow/templates/report_run_asset_comparison.html,sha256=VYCCUmIC7Mfe7uuaAHb6ihiK6zsqeTlQbzgtzLqR3zg,2305
|
|
130
130
|
chellow/templates/report_run_bill_check.html,sha256=yAVFBi0zdamnlRpO2VqKY3UAmAJchSjwSmrmaITLmEA,5055
|
|
@@ -275,7 +275,7 @@ chellow/templates/e/source.html,sha256=6cLjZWKS2w9Zy1C4hzi1lTKXAdKKFQ8wSxbwAjhP3
|
|
|
275
275
|
chellow/templates/e/sources.html,sha256=AW_ysj5ZzArTLz0-FWappMsUEU1AO9gw7D4XSHbINu4,453
|
|
276
276
|
chellow/templates/e/ssc.html,sha256=NiTbn9yLYYG_DV4j9S73rnIVmzTAzTbyaXomverHNnI,811
|
|
277
277
|
chellow/templates/e/sscs.html,sha256=Ul0rW5Wa3romdSCV3JL54u3iSxY1J-8RE8yMxANiQAU,918
|
|
278
|
-
chellow/templates/e/supplier_batch.html,sha256=
|
|
278
|
+
chellow/templates/e/supplier_batch.html,sha256=jKJR8dKYCy6rA47GI02Sv4c1cuKytvma9_IRU4BtT7U,5647
|
|
279
279
|
chellow/templates/e/supplier_batch_add.html,sha256=RabJ20yLpsF_npSLL5aeLlPDa2tL99fENaIzDYZJy1w,1240
|
|
280
280
|
chellow/templates/e/supplier_batch_edit.html,sha256=imgRWTg4W0Db8BwqYnN8ZYno5SBZxRTj2Mkhi113HQg,1420
|
|
281
281
|
chellow/templates/e/supplier_batch_file.html,sha256=fohdthY3ibO9a_2BJsYWyJhZL369F0gaUV7McFzWhMQ,1226
|
|
@@ -350,6 +350,6 @@ chellow/templates/g/supply_note_edit.html,sha256=6UQf_qbhFDys3cVsTp-c7ABWZpggW9R
|
|
|
350
350
|
chellow/templates/g/supply_notes.html,sha256=WR3YwGh_qqTklSJ7JqWX6BKBc9rk_jMff4RiWZiF2CM,936
|
|
351
351
|
chellow/templates/g/unit.html,sha256=KouNVU0-i84afANkLQ_heJ0uDfJ9H5A05PuLqb8iCN8,438
|
|
352
352
|
chellow/templates/g/units.html,sha256=p5Nd-lAIboKPEOO6N451hx1bcKxMg4BDODnZ-43MmJc,441
|
|
353
|
-
chellow-
|
|
354
|
-
chellow-
|
|
355
|
-
chellow-
|
|
353
|
+
chellow-1683187792.0.0.dist-info/METADATA,sha256=i5MmNce3-lf5Na81v5kkUbwEtH8V1cDKKUbX7vQr1Ig,12160
|
|
354
|
+
chellow-1683187792.0.0.dist-info/WHEEL,sha256=9MIigYJ7D5sOqAPqr0-o6tSMY_nQ7c6kvtvyeUB99YQ,87
|
|
355
|
+
chellow-1683187792.0.0.dist-info/RECORD,,
|
chellow/reports/report_155.py
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
from datetime import datetime as Datetime
|
|
2
|
-
|
|
3
|
-
from dateutil.relativedelta import relativedelta
|
|
4
|
-
|
|
5
|
-
from flask import render_template
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def do_get(sess):
|
|
9
|
-
init = Datetime.utcnow()
|
|
10
|
-
init = Datetime(init.year, init.month, 1) - relativedelta(months=1)
|
|
11
|
-
return render_template("report_155.html", init=init)
|
|
File without changes
|