chellow 1754645767.0.0__py3-none-any.whl → 1754662596.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.

@@ -329,40 +329,44 @@ def _process(
329
329
 
330
330
  if current_chell:
331
331
  mpans.remove(mpan_spaces)
332
- era = sess.execute(
333
- select(Era)
334
- .filter(
335
- Era.finish_date == null(),
336
- or_(
337
- Era.imp_mpan_core == mpan_spaces,
338
- Era.exp_mpan_core == mpan_spaces,
339
- ),
340
- )
341
- .options(
342
- joinedload(Era.supply).joinedload(Supply.gsp_group),
343
- joinedload(Era.mop_contract)
344
- .joinedload(Contract.party)
345
- .joinedload(Party.participant),
346
- joinedload(Era.dc_contract)
347
- .joinedload(Contract.party)
348
- .joinedload(Party.participant),
349
- joinedload(Era.imp_supplier_contract)
350
- .joinedload(Contract.party)
351
- .joinedload(Party.participant),
352
- joinedload(Era.exp_supplier_contract)
353
- .joinedload(Contract.party)
354
- .joinedload(Party.participant),
355
- joinedload(Era.pc),
356
- joinedload(Era.imp_llfc),
357
- joinedload(Era.exp_llfc),
358
- joinedload(Era.mtc_participant).joinedload(
359
- MtcParticipant.meter_type
360
- ),
361
- joinedload(Era.ssc),
362
- joinedload(Era.energisation_status),
363
- joinedload(Era.channels),
332
+ era = (
333
+ sess.scalars(
334
+ select(Era)
335
+ .where(
336
+ Era.finish_date == null(),
337
+ or_(
338
+ Era.imp_mpan_core == mpan_spaces,
339
+ Era.exp_mpan_core == mpan_spaces,
340
+ ),
341
+ )
342
+ .options(
343
+ joinedload(Era.supply).joinedload(Supply.gsp_group),
344
+ joinedload(Era.mop_contract)
345
+ .joinedload(Contract.party)
346
+ .joinedload(Party.participant),
347
+ joinedload(Era.dc_contract)
348
+ .joinedload(Contract.party)
349
+ .joinedload(Party.participant),
350
+ joinedload(Era.imp_supplier_contract)
351
+ .joinedload(Contract.party)
352
+ .joinedload(Party.participant),
353
+ joinedload(Era.exp_supplier_contract)
354
+ .joinedload(Contract.party)
355
+ .joinedload(Party.participant),
356
+ joinedload(Era.pc),
357
+ joinedload(Era.imp_llfc),
358
+ joinedload(Era.exp_llfc),
359
+ joinedload(Era.mtc_participant).joinedload(
360
+ MtcParticipant.meter_type
361
+ ),
362
+ joinedload(Era.ssc),
363
+ joinedload(Era.energisation_status),
364
+ joinedload(Era.channels),
365
+ )
364
366
  )
365
- ).scalar()
367
+ .unique()
368
+ .one()
369
+ )
366
370
  chellow_supply_id = era.supply.id
367
371
  chellow_era_id = era.id
368
372
  chellow_es = era.energisation_status.code
@@ -489,6 +493,7 @@ def _process(
489
493
  diffs.append("meter_type")
490
494
 
491
495
  if len(problem) > 0 and not (not show_ignored and ignore):
496
+ address_lines = [ecoes[f"address-line-{i}"] for i in range(1, 10)]
492
497
  values = {
493
498
  "mpan_core": mpan_spaces,
494
499
  "mpan_core_no_spaces": ecoes["mpan-core"],
@@ -525,6 +530,9 @@ def _process(
525
530
  "chellow_meter_type": chellow_meter_type,
526
531
  "ignored": ignore,
527
532
  "problem": problem,
533
+ "address": ", ".join(
534
+ [a for a in address_lines if len(a) > 0 and a != "NULL"]
535
+ ),
528
536
  }
529
537
  writer.writerow(csv_make_val(values[t]) for t in titles)
530
538
  values["chellow_supplier_contract_id"] = chellow_supplier_contract_id
chellow/rrun.py CHANGED
@@ -5,7 +5,7 @@ import traceback
5
5
 
6
6
  from dateutil.relativedelta import relativedelta
7
7
 
8
- from sqlalchemy import select
8
+ from sqlalchemy import false, select
9
9
 
10
10
  from chellow.models import ReportRun, Session
11
11
  from chellow.utils import utc_datetime_now
@@ -48,7 +48,10 @@ class ReportRunDeleter(threading.Thread):
48
48
  now = utc_datetime_now()
49
49
  cutoff_date = now - relativedelta(years=1)
50
50
  for report_run in sess.scalars(
51
- select(ReportRun).where(ReportRun.date_created < cutoff_date)
51
+ select(ReportRun).where(
52
+ ReportRun.date_created < cutoff_date,
53
+ ReportRun.data["keep"].as_boolean() == false(),
54
+ )
52
55
  ):
53
56
  report_run.delete(sess)
54
57
  sess.commit()
@@ -0,0 +1,54 @@
1
+ {% extends "base.html" %}
2
+
3
+ {% block title %}
4
+ &raquo; Dashboard}
5
+ {% endblock %}
6
+
7
+ {% block nav %}
8
+ Dashboard
9
+ {% endblock %}
10
+
11
+ {% block content %}
12
+
13
+ <div>
14
+ <canvas id="ecoes_comparison"></canvas>
15
+ </div>
16
+
17
+ <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
18
+
19
+
20
+
21
+ <script>
22
+ const ecoes_comparison = document.getElementById('ecoes_comparison');
23
+ new Chart(ecoes_comparison, {
24
+ type: 'bar',
25
+ data: {
26
+ labels: [
27
+ {% for run in ecoes_runs %}
28
+ '{{run.date_created|hh_format}}',
29
+ {% endfor %}
30
+ ],
31
+ datasets: [
32
+ {
33
+ label: 'Number Of Discrepancies',
34
+ data: [
35
+ {% for run in ecoes_runs %}
36
+ {{run.rows|length}},
37
+ {% endfor %}
38
+ ],
39
+ borderWidth: 1
40
+ },
41
+ ]
42
+ },
43
+ options: {
44
+ plugins: {
45
+ title: {
46
+ display: true,
47
+ text: 'Ecoes Comparison'
48
+ }
49
+ }
50
+ },
51
+ });
52
+ </script>
53
+
54
+ {% endblock %}
@@ -226,6 +226,7 @@
226
226
  <li><a href="/reports/batches">Batches</a></li>
227
227
  <li><a href="/tester">Tester</a></li>
228
228
  <li><a href="/e/site_snags">Site Snags</a></li>
229
+ <li><a href="/dashboard">Dashboard</a></li>
229
230
  </ul>
230
231
  </div>
231
232
  </section>
@@ -9,136 +9,137 @@
9
9
  {% endblock %}
10
10
 
11
11
  {% block content %}
12
- {% if request.method == "GET" and request.values.delete %}
13
- <form method="post" action="/report_runs/{{run.id}}">
14
- <fieldset>
15
- <caption>Are you sure you want to delete this report run?</caption>
16
- <input type="submit" name="delete" value="delete">
17
- <a href="/report_runs/{{run.id}}">Cancel</a>
18
- </fieldset>
19
- </form>
20
- {% else %}
12
+ <table>
13
+ <caption>ECOES Comparison</caption>
14
+ <thead>
15
+ <tr>
16
+ <th>Date Created</th>
17
+ <th>Created By</th>
18
+ <th>State</th>
19
+ <th>Number Of Rows</th>
20
+ <th>Delete</th>
21
+ <th>Download Spreadsheet</th>
22
+ <th>Re-run Report</th>
23
+ <th>Configuration</th>
24
+ <th>Update Report Run</th>
25
+ </tr>
26
+ </thead>
27
+ <tbody>
28
+ <tr>
29
+ <td>{{run.date_created|hh_format}}</td>
30
+ <td>{{run.creator}}</td>
31
+ <td>{{run.state}}</td>
32
+ <td>{{rows|length}}</td>
33
+ <td>
34
+ <form action="/report_runs/{{run.id}}">
35
+ <fieldset>
36
+ <input type="submit" name="delete" value="Delete">
37
+ </fieldset>
38
+ </form>
39
+ </td>
40
+ <td><a href="/report_runs/{{run.id}}/spreadsheet">Download</a></td>
41
+ <td><a href="/reports/ecoes_comparison">Re-run</a></td>
42
+ <td>
43
+ The <a href="/configuration">configuration</a> is held under the
44
+ <code>ecoes</code> section and has keys <code>user_name</code>,
45
+ <code>password</code>, <code>prefix</code>,
46
+ <code>exclude_mpan_cores</code> and
47
+ <code>ignore_mpan_cores_msn</code>.
48
+ </td>
49
+ <td>
50
+ <form action="/report_runs/{{run.id}}" method="post">
51
+ <fieldset>
52
+ <label>Keep</label> {{input_checkbox('keep', run.data['keep'])}}
53
+ <input type="submit" name="update" value="Update">
54
+ </fieldset>
55
+ </form>
56
+ </td>
57
+ </tr>
58
+ </tbody>
59
+ </table>
60
+
61
+ {% for row in rows %}
62
+ {% set vals = row.data['values'] %}
21
63
  <table>
22
- <caption>ECOES Comparison</caption>
64
+ <caption>{{vals['mpan_core_no_spaces']}}</caption>
23
65
  <thead>
24
66
  <tr>
25
- <th>Date Created</th>
26
- <th>Created By</th>
27
- <th>State</th>
28
- <th>Number Of Rows</th>
29
- <th>Delete</th>
30
- <th>Download Spreadsheet</th>
31
- <th>Re-run Report</th>
32
- <th>Configuration</th>
67
+ <th rowspan="2">Mpan Core</th>
68
+ <th rowspan="2">Supplier Contract</th>
69
+ <th rowspan="2">Edit Era</th>
70
+ <th rowspan="2">Edit Supply</th>
71
+ {% for diff in vals['diffs'] %}
72
+ <th colspan="2">{{diff}}</th>
73
+ {% endfor %}
74
+ <th rowspan="2">Problem</th>
75
+ <th rowspan="2">Fix</th>
76
+ <th rowspan="2">ECOES Address</th>
77
+ </tr>
78
+ <tr>
79
+ {% for diff in vals['diffs'] %}
80
+ <th>Chellow</th>
81
+ <th>ECOES</th>
82
+ {% endfor %}
33
83
  </tr>
34
84
  </thead>
35
85
  <tbody>
36
86
  <tr>
37
- <td>{{run.date_created|hh_format}}</td>
38
- <td>{{run.creator}}</td>
39
- <td>{{run.state}}</td>
40
- <td>{{rows|length}}</td>
41
87
  <td>
42
- <form action="/report_runs/{{run.id}}">
43
- <fieldset>
44
- <input type="submit" name="delete" value="Delete">
45
- </fieldset>
46
- </form>
88
+ {% if vals['chellow_supply_id'] is none %}
89
+ {{vals['mpan_core']}}
90
+ {% else %}
91
+ <a href="/e/supplies/{{vals['chellow_supply_id']}}">{{vals['mpan_core']}}</a>
92
+ {% endif %}
93
+ </td>
94
+ <td>
95
+ {% if vals['chellow_supplier_contract_id'] is not none %}
96
+ <a href="/e/supplier_contracts/{{vals['chellow_supplier_contract_id']}}"
97
+ >{{vals['chellow_supplier_contract_name']}}</a>
98
+ {% endif %}
47
99
  </td>
48
- <td><a href="/report_runs/{{run.id}}/spreadsheet">Download</a></td>
49
- <td><a href="/reports/ecoes_comparison">Re-run</a></td>
50
100
  <td>
51
- The <a href="/configuration">configuration</a> is held under the
52
- <code>ecoes</code> section and has keys <code>user_name</code>,
53
- <code>password</code>, <code>prefix</code>,
54
- <code>exclude_mpan_cores</code> and
55
- <code>ignore_mpan_cores_msn</code>.
101
+ {% if vals['chellow_era_id'] is not none %}
102
+ [<a href="/e/eras/{{vals['chellow_era_id']}}/edit">edit</a>]</td>
103
+ {% endif %}
104
+ <td>
105
+ {% if vals['chellow_supply_id'] is not none %}
106
+ [<a href="/e/supplies/{{vals['chellow_supply_id']}}/edit">edit</a>]
107
+ {% endif %}
108
+ </td>
109
+ {% for diff in vals['diffs'] %}
110
+ <td>{{vals['chellow_' + diff]}}</td>
111
+ <td>{{vals['ecoes_' + diff]}}
112
+ {% if diff == 'msn' %}
113
+ - {{vals['ecoes_msn_install_date']}}
114
+ {% elif diff == 'supplier' %}
115
+ - {{vals['ecoes_supplier_registration_from']}}
116
+ {% elif diff == 'mtc' %}
117
+ - {{vals['ecoes_mtc_date']}}
118
+ {% elif diff == 'llfc' %}
119
+ - {{vals['ecoes_llfc_from']}}
120
+ {% elif diff == 'mop' %}
121
+ - {{vals['ecoes_mop_appoint_date']}}
122
+ {% elif diff == 'gsp_group' %}
123
+ - {{vals['ecoes_gsp_effective_from']}}
124
+ {% endif %}
125
+ </td>
126
+ {% endfor %}
127
+ <td>{{vals['problem']}}</td>
128
+ <td>
129
+ {% if 'msn' in vals['diffs'] %}
130
+ <form hx-post="/e/supplies/{{vals['chellow_supply_id']}}">
131
+ <fieldset>
132
+ <input type="hidden" name="msn" value="{{vals['ecoes_msn']}}">
133
+ <input type="hidden" name="start_date"
134
+ value="{{vals['ecoes_msn_install_date']}}">
135
+ <input type="submit" name="new_msn" value="Fix MSN">
136
+ </fieldset>
137
+ </form>
138
+ {% endif %}
56
139
  </td>
140
+ <td>{{vals['address']}}</td>
57
141
  </tr>
58
142
  </tbody>
59
143
  </table>
60
-
61
- {% for row in rows %}
62
- {% set vals = row.data['values'] %}
63
- <table>
64
- <caption>{{vals['mpan_core_no_spaces']}}</caption>
65
- <thead>
66
- <tr>
67
- <th rowspan="2">Mpan Core</th>
68
- <th rowspan="2">Supplier Contract</th>
69
- <th rowspan="2">Edit Era</th>
70
- <th rowspan="2">Edit Supply</th>
71
- {% for diff in vals['diffs'] %}
72
- <th colspan="2">{{diff}}</th>
73
- {% endfor %}
74
- <th rowspan="2">Problem</th>
75
- <th rowspan="2">Fix</th>
76
- </tr>
77
- <tr>
78
- {% for diff in vals['diffs'] %}
79
- <th>Chellow</th>
80
- <th>ECOES</th>
81
- {% endfor %}
82
- </tr>
83
- </thead>
84
- <tbody>
85
- <tr>
86
- <td>
87
- {% if vals['chellow_supply_id'] is none %}
88
- {{vals['mpan_core']}}
89
- {% else %}
90
- <a href="/e/supplies/{{vals['chellow_supply_id']}}">{{vals['mpan_core']}}</a>
91
- {% endif %}
92
- </td>
93
- <td>
94
- {% if vals['chellow_supplier_contract_id'] is not none %}
95
- <a href="/e/supplier_contracts/{{vals['chellow_supplier_contract_id']}}"
96
- >{{vals['chellow_supplier_contract_name']}}</a>
97
- {% endif %}
98
- </td>
99
- <td>
100
- {% if vals['chellow_era_id'] is not none %}
101
- [<a href="/e/eras/{{vals['chellow_era_id']}}/edit">edit</a>]</td>
102
- {% endif %}
103
- <td>
104
- {% if vals['chellow_supply_id'] is not none %}
105
- [<a href="/e/supplies/{{vals['chellow_supply_id']}}/edit">edit</a>]
106
- {% endif %}
107
- </td>
108
- {% for diff in vals['diffs'] %}
109
- <td>{{vals['chellow_' + diff]}}</td>
110
- <td>{{vals['ecoes_' + diff]}}
111
- {% if diff == 'msn' %}
112
- - {{vals['ecoes_msn_install_date']}}
113
- {% elif diff == 'supplier' %}
114
- - {{vals['ecoes_supplier_registration_from']}}
115
- {% elif diff == 'mtc' %}
116
- - {{vals['ecoes_mtc_date']}}
117
- {% elif diff == 'llfc' %}
118
- - {{vals['ecoes_llfc_from']}}
119
- {% elif diff == 'mop' %}
120
- - {{vals['ecoes_mop_appoint_date']}}
121
- {% elif diff == 'gsp_group' %}
122
- - {{vals['ecoes_gsp_effective_from']}}
123
- {% endif %}
124
- </td>
125
- {% endfor %}
126
- <td>{{vals['problem']}}</td>
127
- <td>
128
- {% if 'msn' in vals['diffs'] %}
129
- <form hx-post="/e/supplies/{{vals['chellow_supply_id']}}">
130
- <fieldset>
131
- <input type="hidden" name="msn" value="{{vals['ecoes_msn']}}">
132
- <input type="hidden" name="start_date"
133
- value="{{vals['ecoes_msn_install_date']}}">
134
- <input type="submit" name="new_msn" value="Fix MSN">
135
- </fieldset>
136
- </form>
137
- {% endif %}
138
- </td>
139
- </tr>
140
- </tbody>
141
- </table>
142
- {% endfor %}
143
- {% endif %}
144
+ {% endfor %}
144
145
  {% endblock %}
chellow/views.py CHANGED
@@ -157,6 +157,20 @@ def configuration():
157
157
  return redirect(f"/non_core_contracts/{config.id}")
158
158
 
159
159
 
160
+ @home.route("/dashboard", methods=["GET"])
161
+ def dashboard():
162
+ ecoes_runs = g.sess.scalars(
163
+ select(ReportRun)
164
+ .where(
165
+ ReportRun.name == "ecoes_comparison",
166
+ ReportRun.state == "finished",
167
+ ReportRun.data["keep"].as_boolean() == true(),
168
+ )
169
+ .order_by(ReportRun.date_created.desc())
170
+ ).all()
171
+ return render_template("dashboard.html", ecoes_runs=ecoes_runs)
172
+
173
+
160
174
  @home.route("/fake_batch_updater")
161
175
  def fake_batch_updater_get():
162
176
  importer = chellow.fake_batch_updater.importer
@@ -1586,6 +1600,19 @@ def report_run_delete(run_id):
1586
1600
  return hx_redirect("/report_runs", 303)
1587
1601
 
1588
1602
 
1603
+ @home.route("/report_runs/<int:run_id>", methods=["POST"])
1604
+ def report_run_post(run_id):
1605
+ run = g.sess.scalar(select(ReportRun).where(ReportRun.id == run_id))
1606
+ keep = req_bool("keep")
1607
+
1608
+ run_data = run.data
1609
+ run_data["keep"] = keep
1610
+ run.update_data(run_data)
1611
+ g.sess.commit()
1612
+ flash("Report Run Updated successfully")
1613
+ return redirect(f"/report_runs/{run_id}", 303)
1614
+
1615
+
1589
1616
  @home.route("/report_runs/<int:run_id>/spreadsheet")
1590
1617
  def report_run_spreadsheet_get(run_id):
1591
1618
  run = g.sess.query(ReportRun).filter(ReportRun.id == run_id).one()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chellow
3
- Version: 1754645767.0.0
3
+ Version: 1754662596.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)
@@ -10,10 +10,10 @@ chellow/models.py,sha256=n6vjsY6jgY98gOY5MGzKuHEEhOs73Pr3XO-auLeQ3es,244656
10
10
  chellow/national_grid.py,sha256=-c_vqNRtpNIQOcm0F1NDhS3_QUiOaLgEJYWzysSNc5Y,4369
11
11
  chellow/proxy.py,sha256=cVXIktPlX3tQ1BYcwxq0nJXKE6r3DtFTtfFHPq55HaM,1351
12
12
  chellow/rate_server.py,sha256=RwJo-AzBIdzxx7PAtboZEUH1nUjAeJckw0bk06-9oyM,5672
13
- chellow/rrun.py,sha256=1Kt2q_K9UoDG_nsZz-Q6XJiMNKroWqlqFdxn2M6Q8CA,2088
13
+ chellow/rrun.py,sha256=sWm_tuJ_6xH3T28TY1w63k1Q44N_S_p_pYF5YCeztqU,2226
14
14
  chellow/testing.py,sha256=Dj2c1NX8lVlygueOrh2eyYawLW6qKEHxNhXVVUaNRO0,3637
15
15
  chellow/utils.py,sha256=i3GQK9MIcweosZk2gi-nX_IFq2DxURAJDyNoLBg6YwM,19421
16
- chellow/views.py,sha256=eFQTFnvz59_BC-lXIU7N8G6cpLCvTIszim-YN3n_Co8,85418
16
+ chellow/views.py,sha256=CfwA9iETuTWsHkUcYYzrT2P8SIVwwmAWj-TOSrKRUyE,86236
17
17
  chellow/e/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  chellow/e/aahedc.py,sha256=d2usudp7KYWpU6Pk3fal5EQ47EbvkvKeaFGylnb3NWw,606
19
19
  chellow/e/bill_importer.py,sha256=7UcnqNlKbJc2GhW9gy8sDp9GuqambJVpZLvbafOZztA,7411
@@ -104,7 +104,7 @@ chellow/reports/report_bills.py,sha256=LP7XDxzO0Fp10c8xDE67e4tHTEc7nN74ESQBy762N
104
104
  chellow/reports/report_csv_llfcs.py,sha256=mMB06b6Jems5kcQU4H4Le_fyKgVr8THP8BCx3pkvg5E,1903
105
105
  chellow/reports/report_csv_site_hh_data.py,sha256=ik0OkGVo1bfTXLdcT3gPUHnxSkSdorzZheP3qgnOR5c,4331
106
106
  chellow/reports/report_csv_site_snags.py,sha256=AuAy6vjL0g7vwPPAZhBqxOyITL9_jnyFj012MnUcxxk,2627
107
- chellow/reports/report_ecoes_comparison.py,sha256=u0L2D1z8j63btdypIRd1NMMqFKgeMz_zK-SAjn7b5b4,21401
107
+ chellow/reports/report_ecoes_comparison.py,sha256=T2jeXQQfD_DyCwzVKyAOpyLKKtPP1uxx0erNFkptFX8,21817
108
108
  chellow/reports/report_g_monthly_duration.py,sha256=aEY3hSBaCxjOBgWZYWZH38TmZEO5MpOfpOQe2Lhfpmo,18288
109
109
  chellow/reports/report_g_supplies_snapshot.py,sha256=9xB6RDrnbgxuomMcP1b1yEP4kOnEJ34WgKpyxLTprOQ,3998
110
110
  chellow/reports/report_g_supply_virtual_bill.py,sha256=EaYrB8PHJIXrUuhiZ7dwUlbNBkuyJebQHrdc308_z1o,3653
@@ -124,12 +124,13 @@ chellow/templates/bill_type.html,sha256=dNNEaQ9ZVghLCAvxQ6IDalw0K0-BIjEQap6u1zu6
124
124
  chellow/templates/bill_types.html,sha256=YKy6cnzzch756dlTnl01ZU0K5NVuTZtBJQV32ZphHvc,471
125
125
  chellow/templates/chain.html,sha256=iOnSoDQOO_-1tfcxUHQKDAUnV4QbCYu5PPNmS4RkOg4,775
126
126
  chellow/templates/csv_sites_monthly_duration.html,sha256=59gErG6KwA57z-qh2EJsVGvTUazqm85CSXefSfqPWcQ,486
127
+ chellow/templates/dashboard.html,sha256=znAvUtvtOzugslXRfFJYGeCdxfMKytXyE26FYOxB6SE,889
127
128
  chellow/templates/downloads.html,sha256=R9QPcFz-PLJOX7rDlmquIk-Hp9Iq-thzWCTfOexSpXg,937
128
129
  chellow/templates/edi_viewer.html,sha256=szUthgHOdph6Of-7f_1LeC_zYlNJaMeS5ctn6xTAeiM,1437
129
130
  chellow/templates/fake_batch_updater.html,sha256=aRQbxtNUlIzxwgSUy2pr-Km5NbhZkse4WSBtlqFIJMg,1885
130
131
  chellow/templates/general_import.html,sha256=9ezzieDjaPBZ0nUJkMkzoDxWVzYtr4D-Dr2UCA5xV8U,1370
131
132
  chellow/templates/general_imports.html,sha256=-uQRJBtpwZHODcWM1JuECJ_H_AHsu8frtwEFQ6s_7Sk,13690
132
- chellow/templates/home.html,sha256=EZbvIvNw0RiuIlaUTOojYSZMTd3VMbTkulABgTB_lAc,5732
133
+ chellow/templates/home.html,sha256=7xiD6QLju3ugALzMlzTJosRyMUmQGWPK6jDF7oZbnAQ,5781
133
134
  chellow/templates/input_date.html,sha256=rpgB5n0LfN8Y5djN_ZiuSxqdskxzCoKrEqI7hyJkVQo,1248
134
135
  chellow/templates/local_report.html,sha256=pV7_0QwyQ-D3OS9LXrly5pq3qprZnwTCoq6vCnMTkS4,1332
135
136
  chellow/templates/local_reports.html,sha256=4wbfVkY4wUfSSfWjxqIsvCpIsa9k7H_dGAjznrG5jNM,701
@@ -147,7 +148,7 @@ chellow/templates/rate_server.html,sha256=SezuwdKhHRZ00-R_S6ttKiZ-nvRpwozV9QcIMf
147
148
  chellow/templates/report_run.html,sha256=O_wjIu43S-mKVyZyku3dJJdvyck3rAgEdhw59TsCcK0,4040
148
149
  chellow/templates/report_run_asset_comparison.html,sha256=VYCCUmIC7Mfe7uuaAHb6ihiK6zsqeTlQbzgtzLqR3zg,2305
149
150
  chellow/templates/report_run_bill_check.html,sha256=I4VLSTOGE7cjjZggG3EAI9EW-2b7e0oOTs-S7FlknS4,5110
150
- chellow/templates/report_run_ecoes_comparison.html,sha256=bglglt_Ck2U4y9EWlTufmBY8FYGUaDboNdaDS_MGnxI,4301
151
+ chellow/templates/report_run_ecoes_comparison.html,sha256=LlMlcui3zJ2ZZggFBvWAErHlf5aE5mV0OQoiqujXpQs,4184
151
152
  chellow/templates/report_run_g_bill_check.html,sha256=tOXl_mjR__foYKiOYflJbK-459actAtjzv8rfuL3TwM,4851
152
153
  chellow/templates/report_run_missing_e_bills.html,sha256=l5idQhfaNhMvvzIRv-iqCpeDnYl_wgs6-mZMBOmuyR8,2447
153
154
  chellow/templates/report_run_monthly_duration_org.html,sha256=gGNGJ4Q50q4BtIMi98rhO-7NqRHcsFUmbj2qzeOLejw,1713
@@ -385,6 +386,6 @@ chellow/templates/g/supply_note_edit.html,sha256=b8mB6_ucBwoljp03iy6AgVaZUhGw3-1
385
386
  chellow/templates/g/supply_notes.html,sha256=6epNmZ3NKdXZz27fvmRUGeffg_oc1kmwuBeyRzQe3Rg,854
386
387
  chellow/templates/g/unit.html,sha256=KouNVU0-i84afANkLQ_heJ0uDfJ9H5A05PuLqb8iCN8,438
387
388
  chellow/templates/g/units.html,sha256=p5Nd-lAIboKPEOO6N451hx1bcKxMg4BDODnZ-43MmJc,441
388
- chellow-1754645767.0.0.dist-info/METADATA,sha256=Szz9wOSLBik68q2TwUaf-Cv5cl7ast0hyQOqp33DgZ8,12519
389
- chellow-1754645767.0.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
390
- chellow-1754645767.0.0.dist-info/RECORD,,
389
+ chellow-1754662596.0.0.dist-info/METADATA,sha256=aX-vVmKqbNRf1rplpPv_hkiUpx6Bt0bFszWCFmaBh5k,12519
390
+ chellow-1754662596.0.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
391
+ chellow-1754662596.0.0.dist-info/RECORD,,