chellow 1716370405.0.0__py3-none-any.whl → 1716452334.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/models.py CHANGED
@@ -6400,8 +6400,23 @@ class ReportRun(Base, PersistentClass):
6400
6400
  def insert(sess, name, user, title, data):
6401
6401
  report_run = ReportRun(name, user, title, data)
6402
6402
  sess.add(report_run)
6403
+ sess.flush()
6403
6404
  return report_run
6404
6405
 
6406
+ @staticmethod
6407
+ def w_update(report_run_id, state):
6408
+ with Session() as wsess:
6409
+ report_run = ReportRun.get_by_id(wsess, report_run_id)
6410
+ report_run.update(state)
6411
+ wsess.commit()
6412
+
6413
+ @staticmethod
6414
+ def w_insert_row(report_run_id, tab, titles, values, properties):
6415
+ with Session() as wsess:
6416
+ report_run = ReportRun.get_by_id(wsess, report_run_id)
6417
+ report_run.insert_row(wsess, tab, titles, values, properties)
6418
+ wsess.commit()
6419
+
6405
6420
 
6406
6421
  def _jsonize(val):
6407
6422
  if isinstance(val, dict):
@@ -29,9 +29,9 @@ from chellow.models import (
29
29
  Llfc,
30
30
  MarketRole,
31
31
  MtcParticipant,
32
+ RSession,
32
33
  RegisterRead,
33
34
  ReportRun,
34
- Session,
35
35
  Site,
36
36
  SiteEra,
37
37
  Supply,
@@ -102,19 +102,17 @@ def content(
102
102
  report_run_id,
103
103
  ):
104
104
  caches = {}
105
- tmp_file = sess = supply_id = report_run = None
105
+ tmp_file = sess = supply_id = None
106
106
  forecast_date = to_utc(Datetime.max)
107
107
 
108
108
  try:
109
- with Session() as sess:
109
+ with RSession() as sess:
110
110
  user = User.get_by_id(sess, user_id)
111
111
  tmp_file = open_file(
112
112
  f"bill_check_{fname_additional}.csv", user, mode="w", newline=""
113
113
  )
114
114
  writer = csv.writer(tmp_file, lineterminator="\n")
115
115
 
116
- report_run = ReportRun.get_by_id(sess, report_run_id)
117
-
118
116
  bills = (
119
117
  sess.query(Bill)
120
118
  .order_by(Bill.supply_id, Bill.reference)
@@ -216,30 +214,26 @@ def content(
216
214
  virtual_bill_titles,
217
215
  writer,
218
216
  titles,
219
- report_run,
217
+ report_run_id,
220
218
  )
221
-
222
- report_run.update("finished")
223
- sess.commit()
219
+ ReportRun.w_update(report_run_id, "finished")
224
220
 
225
221
  except BadRequest as e:
226
- if report_run is not None:
227
- report_run.update("problem")
228
222
  if supply_id is None:
229
223
  prefix = "Problem: "
230
224
  else:
231
225
  prefix = f"Problem with supply {supply_id}:"
232
226
  tmp_file.write(prefix + e.description)
227
+ ReportRun.w_update(report_run_id, "problem")
233
228
  except BaseException:
234
- if report_run is not None:
235
- report_run.update("interrupted")
229
+ msg = traceback.format_exc()
230
+ sys.stderr.write(msg + "\n")
236
231
  if supply_id is None:
237
232
  prefix = "Problem: "
238
233
  else:
239
234
  prefix = f"Problem with supply {supply_id}:"
240
- msg = traceback.format_exc()
241
- sys.stderr.write(msg + "\n")
242
235
  tmp_file.write(prefix + msg)
236
+ ReportRun.w_update(report_run_id, "interrupted")
243
237
  finally:
244
238
  if tmp_file is not None:
245
239
  tmp_file.close()
@@ -318,7 +312,7 @@ def _process_supply(
318
312
  virtual_bill_titles,
319
313
  writer,
320
314
  titles,
321
- report_run,
315
+ report_run_id,
322
316
  ):
323
317
  gaps = {}
324
318
  data_sources = {}
@@ -761,8 +755,8 @@ def _process_supply(
761
755
  values["batch_id"] = bill.batch.id
762
756
  values["supply_id"] = supply.id
763
757
  values["site_id"] = None if site_code is None else site.id
764
- report_run.insert_row(
765
- sess, "", report_run_titles, values, {"is_checked": False}
758
+ ReportRun.w_insert_row(
759
+ report_run_id, "", report_run_titles, values, {"is_checked": False}
766
760
  )
767
761
 
768
762
  for bill in sess.query(Bill).filter(
@@ -783,7 +777,7 @@ def _process_supply(
783
777
  )
784
778
 
785
779
  # Avoid long-running transactions
786
- sess.commit()
780
+ sess.rollback()
787
781
 
788
782
  clumps = []
789
783
  for element, elgap in sorted(gaps.items()):
@@ -837,7 +831,7 @@ def _process_supply(
837
831
  vals["supply_id"] = supply.id
838
832
  vals["site_id"] = None if site_code is None else site.id
839
833
 
840
- report_run.insert_row(sess, "", titles, vals, {"is_checked": False})
834
+ ReportRun.w_insert_row(report_run_id, "", titles, vals, {"is_checked": False})
841
835
 
842
836
  # Avoid long-running transactions
843
- sess.commit()
837
+ sess.rollback()
@@ -10,7 +10,7 @@ from sqlalchemy.sql.expression import null, true
10
10
 
11
11
  from chellow.dloads import open_file
12
12
  from chellow.e.computer import SupplySource, forecast_date
13
- from chellow.models import Era, Session, Site, SiteEra, Supply
13
+ from chellow.models import Era, RSession, Site, SiteEra, Supply
14
14
  from chellow.utils import (
15
15
  csv_make_val,
16
16
  hh_format,
@@ -25,7 +25,7 @@ def content(supply_id, start_date, finish_date, user):
25
25
  caches = {}
26
26
  f = None
27
27
  try:
28
- with Session() as sess:
28
+ with RSession() as sess:
29
29
  supply = Supply.get_by_id(sess, supply_id)
30
30
 
31
31
  f_date = forecast_date()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: chellow
3
- Version: 1716370405.0.0
3
+ Version: 1716452334.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)
@@ -9,7 +9,7 @@ Classifier: Programming Language :: Python :: 3
9
9
  Requires-Python: >=3.9
10
10
  Requires-Dist: flask-restx==1.2.0
11
11
  Requires-Dist: flask==2.3.3
12
- Requires-Dist: odio==0.0.22
12
+ Requires-Dist: odio==0.0.23
13
13
  Requires-Dist: openpyxl==3.1.2
14
14
  Requires-Dist: paramiko==3.4.0
15
15
  Requires-Dist: pep3143daemon==0.0.6
@@ -21,7 +21,7 @@ Requires-Dist: pypdf==3.17.0
21
21
  Requires-Dist: python-dateutil==2.8.2
22
22
  Requires-Dist: pytz==2022.6
23
23
  Requires-Dist: requests==2.32.2
24
- Requires-Dist: sqlalchemy==2.0.28
24
+ Requires-Dist: sqlalchemy==2.0.30
25
25
  Requires-Dist: waitress==2.1.2
26
26
  Requires-Dist: xlrd==2.0.1
27
27
  Requires-Dist: zish==0.1.11
@@ -5,7 +5,7 @@ chellow/commands.py,sha256=ESBe9ZWj1c3vdZgqMZ9gFvYAB3hRag2R1PzOwuw9yFo,1302
5
5
  chellow/dloads.py,sha256=5SmP-0QPK6xCkd_wjIWh_8FAzN5OxNHCzyEQ1Xb-Y-M,5256
6
6
  chellow/edi_lib.py,sha256=alu20x9ZX06iPfnNI9dEJzuP6RIf4We3Y_M_bl7RrcY,51789
7
7
  chellow/general_import.py,sha256=l3EHq9zG9Vfl5Ee6XTVrC1nusXo4YGGB4VBmZ_JaJR8,65798
8
- chellow/models.py,sha256=2YSRKOt89mgawuz1CV02FsjLi5ue9Np38PGOIS-yoc4,242202
8
+ chellow/models.py,sha256=uS4GHh4RF6yD7aSsN4nOC3hdNakHUjW1nVzrhM_79mQ,242736
9
9
  chellow/national_grid.py,sha256=uxcv0qisHPyzw9AVIYPzsRqwt2XPAcZL-SBR12qcrS0,4364
10
10
  chellow/proxy.py,sha256=cVXIktPlX3tQ1BYcwxq0nJXKE6r3DtFTtfFHPq55HaM,1351
11
11
  chellow/rate_server.py,sha256=fg-Pf_9Hk3bXmC9riPQNGQxBvLvBa_WtNYdwDCjnCSg,5678
@@ -68,7 +68,7 @@ chellow/gas/transportation.py,sha256=Bkg8TWOs-v0ES-4qqwbleiOhqbE_t2KauUx9JYMZELM
68
68
  chellow/gas/views.py,sha256=ZIMqByN0uBpf3y9wkMi-VogC1-NaHs-oO7WRVDk9Kkw,57428
69
69
  chellow/reports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
70
  chellow/reports/report_109.py,sha256=S8fsOwh-jVWGL0RsgyYLdqn00BAvlkBbi4VfTSGI-Mc,11181
71
- chellow/reports/report_111.py,sha256=qU5MYPQzZ_cEvuERE8bxq93D-dN1yd4oML6FIqd0Jdk,28278
71
+ chellow/reports/report_111.py,sha256=AlYjvCDpGNe1qBuzW52EONWDsFaIVElug0Vpe9qm1PY,28169
72
72
  chellow/reports/report_169.py,sha256=tnTiHmhigcgZ7E8rUSfgzsVYUCW947xBZZq04-KqfK8,9287
73
73
  chellow/reports/report_181.py,sha256=mCL6vXfrj8r0kL-LilDS0SnSu5tJOzCq7eMJVx9zpEw,4999
74
74
  chellow/reports/report_183.py,sha256=DZX-hHJPl_Tbgkt31C_cuLZg_5L2b6iCPQ5foOZizR0,8817
@@ -81,7 +81,7 @@ chellow/reports/report_247.py,sha256=ozgCcee8XeqYbOpZCyU2STJKaz6h2x7TYQogagTaYLw
81
81
  chellow/reports/report_29.py,sha256=KDFjgrLBv4WbG9efCdu_geMR7gT_QV9N97Wfdt7aDc4,2736
82
82
  chellow/reports/report_291.py,sha256=rqBXy6s7hMeYWw-yNX6w_L5t2yz6rNEeos_4xO7wf90,7519
83
83
  chellow/reports/report_33.py,sha256=laVz-itDbJTdvC6LxLEeuY0eKpYx43Un4adiExPTEEE,16730
84
- chellow/reports/report_387.py,sha256=KcClrEOK5IRvePp0Jgbzs1Gwf-_CqYmEtFFlXrr_Z3E,5670
84
+ chellow/reports/report_387.py,sha256=kmBZopb0AOivcowO2nPjRj6LnV0_QjCDXLwqPL7IGVE,5672
85
85
  chellow/reports/report_41.py,sha256=QQeTshA1Og7N3wPaoZ8ynJzwsvZ1mgSFc7DDkVqIZoM,7447
86
86
  chellow/reports/report_429.py,sha256=0GCc0rQnOSG0fusw69yMMOCxnWApBd3P2sGWIg1py9M,12359
87
87
  chellow/reports/report_59.py,sha256=CCFPUspUFgoMt6sMFsdtLYW-inA9rN6D-6Kted6vskA,45458
@@ -364,6 +364,6 @@ chellow/templates/g/supply_note_edit.html,sha256=6UQf_qbhFDys3cVsTp-c7ABWZpggW9R
364
364
  chellow/templates/g/supply_notes.html,sha256=WR3YwGh_qqTklSJ7JqWX6BKBc9rk_jMff4RiWZiF2CM,936
365
365
  chellow/templates/g/unit.html,sha256=KouNVU0-i84afANkLQ_heJ0uDfJ9H5A05PuLqb8iCN8,438
366
366
  chellow/templates/g/units.html,sha256=p5Nd-lAIboKPEOO6N451hx1bcKxMg4BDODnZ-43MmJc,441
367
- chellow-1716370405.0.0.dist-info/METADATA,sha256=TuaScYTcnRt-YAdvw014lKjfOAS9GaelicnQ1FPdkjI,12205
368
- chellow-1716370405.0.0.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
369
- chellow-1716370405.0.0.dist-info/RECORD,,
367
+ chellow-1716452334.0.0.dist-info/METADATA,sha256=pjgx-WKJRzgK4cjpaGC2sDSgRDU2AQS0gxnApoP6NnI,12205
368
+ chellow-1716452334.0.0.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
369
+ chellow-1716452334.0.0.dist-info/RECORD,,