chellow 1681460579.0.0__py3-none-any.whl → 1681482204.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/views.py CHANGED
@@ -12,6 +12,7 @@ from dateutil.relativedelta import relativedelta
12
12
 
13
13
  from flask import (
14
14
  Blueprint,
15
+ Response,
15
16
  flash,
16
17
  g,
17
18
  make_response,
@@ -1900,6 +1901,53 @@ def llfcs_get():
1900
1901
  return render_template("llfcs.html", llfcs=llfcs, dno=dno)
1901
1902
 
1902
1903
 
1904
+ def _csv_response(fname, titles, rows):
1905
+ with StringIO() as f:
1906
+ writer = csv.writer(f)
1907
+ writer.writerow(titles)
1908
+ for row in rows:
1909
+ writer.writerow([csv_make_val(v) for v in row])
1910
+
1911
+ return Response(
1912
+ f.getvalue(),
1913
+ mimetype="text/csv",
1914
+ headers={"Content-disposition": f'attachment; filename="{fname}"'},
1915
+ )
1916
+
1917
+
1918
+ @e.route("/llfcs/csv")
1919
+ def llfcs_csv_get():
1920
+ dno_id = req_int("dno_id")
1921
+ dno = Party.get_dno_by_id(g.sess, dno_id)
1922
+ rows = g.sess.execute(
1923
+ select(
1924
+ Party.dno_code,
1925
+ Llfc.code,
1926
+ Llfc.description,
1927
+ VoltageLevel.code,
1928
+ Llfc.is_substation,
1929
+ Llfc.is_import,
1930
+ Llfc.valid_from,
1931
+ Llfc.valid_to,
1932
+ )
1933
+ .join(Party)
1934
+ .join(VoltageLevel)
1935
+ .where(Llfc.dno == dno)
1936
+ .order_by(Llfc.code)
1937
+ ).all()
1938
+ titles = (
1939
+ "dno_code",
1940
+ "code",
1941
+ "description",
1942
+ "voltage_level",
1943
+ "is_substation",
1944
+ "is_import",
1945
+ "valid_from",
1946
+ "valid_to",
1947
+ )
1948
+ return _csv_response(f"llfcs_{dno.dno_code}.csv", titles, rows)
1949
+
1950
+
1903
1951
  @e.route("/llfcs/<int:llfc_id>")
1904
1952
  def llfc_get(llfc_id):
1905
1953
  llfc = Llfc.get_by_id(g.sess, llfc_id)
@@ -2771,6 +2819,49 @@ def mtc_participants_get():
2771
2819
  )
2772
2820
 
2773
2821
 
2822
+ @e.route("/mtc_participants/csv")
2823
+ def mtc_participants_csv_get():
2824
+ participant_id = req_int("participant_id")
2825
+ participant = Participant.get_by_id(g.sess, participant_id)
2826
+ titles = (
2827
+ "participant_code",
2828
+ "code",
2829
+ "is_common",
2830
+ "has_related_metering",
2831
+ "description",
2832
+ "has_comms",
2833
+ "is_hh",
2834
+ "meter_type",
2835
+ "meter_payment_type",
2836
+ "tpr_count",
2837
+ "valid_from",
2838
+ "valid_to",
2839
+ )
2840
+ rows = g.sess.execute(
2841
+ select(
2842
+ Participant.code,
2843
+ Mtc.code,
2844
+ Mtc.is_common,
2845
+ Mtc.has_related_metering,
2846
+ MtcParticipant.description,
2847
+ MtcParticipant.has_comms,
2848
+ MtcParticipant.is_hh,
2849
+ MeterType.code,
2850
+ MeterPaymentType.code,
2851
+ MtcParticipant.tpr_count,
2852
+ MtcParticipant.valid_from,
2853
+ MtcParticipant.valid_to,
2854
+ )
2855
+ .join(Participant)
2856
+ .join(Mtc)
2857
+ .join(MeterType)
2858
+ .join(MeterPaymentType)
2859
+ .where(MtcParticipant.participant == participant)
2860
+ .order_by(Mtc.code)
2861
+ ).all()
2862
+ return _csv_response(f"mtc_participants_{participant.code}.csv", titles, rows)
2863
+
2864
+
2774
2865
  @e.route("/mtc_participants/<int:mtc_participant_id>")
2775
2866
  def mtc_participant_get(mtc_participant_id):
2776
2867
  mtc_participant = MtcParticipant.get_by_id(g.sess, mtc_participant_id)
@@ -2801,6 +2892,36 @@ def mtc_sscs_get():
2801
2892
  return render_template("mtc_sscs.html", mtc_sscs=mtc_sscs, dno=dno)
2802
2893
 
2803
2894
 
2895
+ @e.route("/mtc_sscs/csv")
2896
+ def mtc_sscs_csv_get():
2897
+ participant_id = req_int("participant_id")
2898
+ participant = Participant.get_by_id(g.sess, participant_id)
2899
+ titles = (
2900
+ "participant_code",
2901
+ "mtc_code",
2902
+ "ssc_code",
2903
+ "valid_from",
2904
+ "valid_to",
2905
+ )
2906
+ rows = g.sess.execute(
2907
+ select(
2908
+ Participant.code,
2909
+ Mtc.code,
2910
+ Ssc.code,
2911
+ MtcSsc.valid_from,
2912
+ MtcSsc.valid_to,
2913
+ )
2914
+ .select_from(MtcSsc)
2915
+ .join(MtcParticipant)
2916
+ .join(MtcParticipant.participant)
2917
+ .join(Mtc)
2918
+ .join(Ssc)
2919
+ .where(MtcParticipant.participant == participant)
2920
+ .order_by(Mtc.code, Ssc.code)
2921
+ ).all()
2922
+ return _csv_response(f"mtc_sscs_{participant.code}.csv", titles, rows)
2923
+
2924
+
2804
2925
  @e.route("/mtc_sscs/<int:mtc_ssc_id>")
2805
2926
  def mtc_ssc_get(mtc_ssc_id):
2806
2927
  mtc_ssc = MtcSsc.get_by_id(g.sess, mtc_ssc_id)
@@ -2829,6 +2950,36 @@ def mtc_llfcs_get():
2829
2950
  return render_template("mtc_llfcs.html", mtc_llfcs=mtc_llfcs, dno=dno)
2830
2951
 
2831
2952
 
2953
+ @e.route("/mtc_llfcs/csv")
2954
+ def mtc_llfcs_csv_get():
2955
+ participant_id = req_int("participant_id")
2956
+ participant = Participant.get_by_id(g.sess, participant_id)
2957
+ titles = (
2958
+ "participant_code",
2959
+ "mtc_code",
2960
+ "llfc_code",
2961
+ "valid_from",
2962
+ "valid_to",
2963
+ )
2964
+ rows = g.sess.execute(
2965
+ select(
2966
+ Participant.code,
2967
+ Mtc.code,
2968
+ Llfc.code,
2969
+ MtcLlfc.valid_from,
2970
+ MtcLlfc.valid_to,
2971
+ )
2972
+ .select_from(MtcLlfc)
2973
+ .join(MtcParticipant)
2974
+ .join(Participant)
2975
+ .join(Mtc)
2976
+ .join(Llfc)
2977
+ .where(MtcParticipant.participant == participant)
2978
+ .order_by(Mtc.code, Llfc.code)
2979
+ ).all()
2980
+ return _csv_response(f"mtc_sscs_{participant.code}.csv", titles, rows)
2981
+
2982
+
2832
2983
  @e.route("/mtc_llfcs/<int:mtc_llfc_id>")
2833
2984
  def mtc_llfc_get(mtc_llfc_id):
2834
2985
  mtc_llfc = MtcLlfc.get_by_id(g.sess, mtc_llfc_id)
@@ -2878,6 +3029,46 @@ def mtc_llfc_ssc_pcs_get():
2878
3029
  return render_template("mtc_llfc_ssc_pcs.html", mtc_llfc_ssc_pcs=combos, dno=dno)
2879
3030
 
2880
3031
 
3032
+ @e.route("/mtc_llfc_ssc_pcs/csv")
3033
+ def mtc_llfc_ssc_pcs_csv_get():
3034
+ dno_id = req_int("dno_id")
3035
+ dno = Party.get_dno_by_id(g.sess, dno_id)
3036
+ titles = (
3037
+ "dno_code",
3038
+ "pc_code",
3039
+ "llfc_code",
3040
+ "ssc_code",
3041
+ "mtc_code",
3042
+ "valid_from",
3043
+ "valid_to",
3044
+ )
3045
+ rows = g.sess.execute(
3046
+ select(
3047
+ Party.dno_code,
3048
+ Pc.code,
3049
+ Llfc.code,
3050
+ Ssc.code,
3051
+ Mtc.code,
3052
+ MtcLlfcSscPc.valid_from,
3053
+ MtcLlfcSscPc.valid_to,
3054
+ )
3055
+ .select_from(MtcLlfcSscPc)
3056
+ .join(Pc)
3057
+ .join(MtcLlfcSsc)
3058
+ .join(Llfc)
3059
+ .join(Party)
3060
+ .join(MtcSsc)
3061
+ .join(Ssc)
3062
+ .join(MtcParticipant)
3063
+ .join(Mtc)
3064
+ .where(Llfc.dno == dno)
3065
+ .order_by(
3066
+ Pc.code, Llfc.code, Ssc.code, Mtc.code, MtcLlfcSscPc.valid_from.desc()
3067
+ )
3068
+ ).all()
3069
+ return _csv_response(f"mtc_llfc_ssc_pcs_{dno.dno_code}.csv", titles, rows)
3070
+
3071
+
2881
3072
  @e.route("/mtc_llfc_ssc_pcs/<int:combo_id>")
2882
3073
  def mtc_llfc_ssc_pc_get(combo_id):
2883
3074
  combo = MtcLlfcSscPc.get_by_id(g.sess, combo_id)
@@ -2915,6 +3106,40 @@ def mtc_llfc_sscs_get():
2915
3106
  return render_template("mtc_llfc_sscs.html", mtc_llfc_sscs=combos, dno=dno)
2916
3107
 
2917
3108
 
3109
+ @e.route("/mtc_llfc_sscs/csv")
3110
+ def mtc_llfc_sscs_csv_get():
3111
+ participant_id = req_int("participant_id")
3112
+ participant = Participant.get_by_id(g.sess, participant_id)
3113
+ titles = (
3114
+ "participant_code",
3115
+ "llfc_code",
3116
+ "ssc_code",
3117
+ "mtc_code",
3118
+ "valid_from",
3119
+ "valid_to",
3120
+ )
3121
+ rows = g.sess.execute(
3122
+ select(
3123
+ Participant.code,
3124
+ Llfc.code,
3125
+ Ssc.code,
3126
+ Mtc.code,
3127
+ MtcLlfcSsc.valid_from,
3128
+ MtcLlfcSsc.valid_to,
3129
+ )
3130
+ .select_from(MtcLlfcSsc)
3131
+ .join(MtcSsc)
3132
+ .join(MtcParticipant)
3133
+ .join(Participant)
3134
+ .join(Mtc)
3135
+ .join(Llfc)
3136
+ .join(Ssc)
3137
+ .where(MtcParticipant.participant == participant)
3138
+ .order_by(Llfc.code, Ssc.code, Mtc.code, MtcLlfcSsc.valid_from.desc())
3139
+ ).all()
3140
+ return _csv_response(f"mtc_llfc_sscs_{participant.code}.csv", titles, rows)
3141
+
3142
+
2918
3143
  @e.route("/mtc_llfc_sscs/<int:combo_id>")
2919
3144
  def mtc_llfc_ssc_get(combo_id):
2920
3145
  combo = MtcLlfcSsc.get_by_id(g.sess, combo_id)
@@ -26,6 +26,7 @@
26
26
  <form action="/e/eras/{{era.id}}/add_supplier_bill" method="post">
27
27
  <fieldset>
28
28
  <legend>Add Import Supplier Batch And Bill</legend>
29
+
29
30
  <fieldset>
30
31
  <legend>Batch</legend>
31
32
  <label>Reference</label>
@@ -33,25 +34,16 @@
33
34
  <label>Description</label>
34
35
  {{input_text('batch_description', placeholder=next_batch_description)}}
35
36
  </fieldset>
36
- <br>
37
+
37
38
  <fieldset>
38
39
  <legend>Bill</legend>
39
40
  <label>Reference</label> {{input_text('bill_reference', size_20)}}
40
41
 
41
- <label>Issue Date</label>
42
- <fieldset>
43
- {{input_date('issue')}}
44
- </fieldset>
42
+ <label>Issue Date</label> {{input_date('issue')}}
45
43
 
46
- <label>Start Date</label>
47
- <fieldset>
48
- {{input_date('start', start_date)}}
49
- </fieldset>
44
+ <label>Start Date</label> {{input_date('start', start_date)}}
50
45
 
51
- <label>Finish Date</label>
52
- <fieldset>
53
- {{input_date('finish')}}
54
- </fieldset>
46
+ <label>Finish Date</label> {{input_date('finish')}}
55
47
 
56
48
  <label>kWh</label> {{input_text('kwh', '0')}}
57
49
  <label>Net</label> {{input_text('net', '0.00')}}
@@ -62,11 +54,12 @@
62
54
  <select name="bill_type_id">
63
55
  {% for bill_type in bill_types %}
64
56
  <p>{{normal_bill_type_id}} {{bill_type.id}}</p>
65
- {{input_option('bill_type_id', bill_type.id, bill_type.code, normal_bill_type_id)}}
57
+ {{input_option(
58
+ 'bill_type_id', bill_type.id, bill_type.code, normal_bill_type_id)}}
66
59
  {% endfor %}
67
60
  </select>
68
61
  <label>Breakdown</label>
69
- {{input_text('breakdown', '{}')}}
62
+ {{input_textarea('breakdown', '{}', 10, 80, show_pos=True)}}
70
63
  </fieldset>
71
64
  <input type="submit" value="Add">
72
65
  </fieldset>
@@ -12,7 +12,10 @@
12
12
  {% block content %}
13
13
 
14
14
  <table class="sticky">
15
- <caption>Line Loss Factor Classes</caption>
15
+ <caption>
16
+ Line Loss Factor Classes
17
+ (<a href="/e/llfcs/csv?dno_id={{dno.id}}">Download CSV</a>)
18
+ </caption>
16
19
  <thead>
17
20
  <tr>
18
21
  <th>Code</th>
@@ -12,6 +12,10 @@
12
12
 
13
13
  {% block content %}
14
14
  <table class="sticky">
15
+ <caption>
16
+ Valid MTC, LLFC, SSC and PC Combinations
17
+ (<a href="/e/mtc_llfc_ssc_pcs/csv?dno_id={{dno.id}}">Download CSV</a>)
18
+ </caption>
15
19
  <thead>
16
20
  <tr>
17
21
  <th>View</th>
@@ -11,6 +11,11 @@
11
11
 
12
12
  {% block content %}
13
13
  <table class="sticky">
14
+ <caption>
15
+ Valid MTC LLFC SSC Combinations
16
+ (<a href="/e/mtc_llfc_sscs/csv?participant_id={{dno.participant.id}}"
17
+ >Download CSV</a>)
18
+ </caption>
14
19
  <thead>
15
20
  <tr>
16
21
  <th>View</th>
@@ -11,6 +11,11 @@
11
11
 
12
12
  {% block content %}
13
13
  <table class="sticky">
14
+ <caption>
15
+ Valid MTC LLFCs
16
+ (<a href="/e/mtc_llfcs/csv?participant_id={{dno.participant.id}}"
17
+ >Download CSV</a>)
18
+ </caption>
14
19
  <thead>
15
20
  <tr>
16
21
  <th>View</th>
@@ -11,7 +11,11 @@
11
11
 
12
12
  {% block content %}
13
13
  <table class="sticky">
14
- <caption>Meter Timeswitch Classes</caption>
14
+ <caption>
15
+ Meter Timeswitch Classes
16
+ (<a href="/e/mtc_participants/csv?participant_id={{dno.participant.id}}"
17
+ >Download CSV</a>)
18
+ </caption>
15
19
  <thead>
16
20
  <tr>
17
21
  <th>View</th>
@@ -11,6 +11,9 @@
11
11
 
12
12
  {% block content %}
13
13
  <table class="sticky">
14
+ <caption>
15
+ MTC SSCs
16
+ (<a href="/e/mtc_sscs/csv?participant_id={{dno.participant.id}}">Download CSV</a>)
14
17
  <thead>
15
18
  <tr>
16
19
  <th>View</th>
@@ -29,22 +29,16 @@
29
29
  <form action="/e/supplier_batches/{{batch.id}}/add_bill" method="post">
30
30
  <fieldset>
31
31
  <legend>Add A Bill</legend>
32
+
32
33
  <label>MPAN Core</label> {{input_text('mpan_core')}}
34
+
33
35
  <label>Reference</label> {{input_text('reference')}}
34
- <fieldset>
35
- <legend>Issue Date</legend>
36
- {{input_date('issue')}}
37
- </fieldset>
38
-
39
- <fieldset>
40
- <label>Start Date</label>
41
- {{input_date('start', start_date)}}
42
- </fieldset>
43
-
44
- <fieldset>
45
- <label>Finish Date</label>
46
- {{input_date('finish')}}
47
- </fieldset>
36
+
37
+ <label>Issue Date</label> {{input_date('issue')}}
38
+
39
+ <label>Start Date</label> {{input_date('start', start_date)}}
40
+
41
+ <label>Finish Date</label> {{input_date('finish')}}
48
42
 
49
43
  <label>kWh</label> {{input_text('kwh', '0')}}
50
44
 
@@ -61,10 +55,13 @@
61
55
  <select name="bill_type_id">
62
56
  {% for bill_type in bill_types %}
63
57
  <p>{{normal_bill_type_id}} {{bill_type.id}}</p>
64
- {{input_option('bill_type_id', bill_type.id, bill_type.code, normal_bill_type_id)}}
58
+ {{input_option(
59
+ 'bill_type_id', bill_type.id, bill_type.code, normal_bill_type_id)}}
65
60
  {% endfor %}
66
61
  </select>
67
- <label>Breakdown</label> {{input_text('breakdown', '{}')}}
62
+
63
+ <label>Breakdown</label>
64
+ {{input_textarea('breakdown', '{}', 10, 80, show_pos=True)}}
68
65
 
69
66
  <input type="submit" value="Add">
70
67
  </fieldset>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: chellow
3
- Version: 1681460579.0.0
3
+ Version: 1681482204.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)
@@ -33,7 +33,7 @@ chellow/e/scenario.py,sha256=IuyE494XaBLq3FW7NdJePD6J4cTzPogfACO6dThiY00,23239
33
33
  chellow/e/system_price.py,sha256=IPBLSRPzGA3yca4tpR8PJemwPbgqVjn1WnljOMUyWnA,8145
34
34
  chellow/e/tlms.py,sha256=gXBZTHXqGVcaTGHaYGVA5Ir5pzoBDqFC1Kl1mQ0IDqU,9549
35
35
  chellow/e/tnuos.py,sha256=rFGQRLjqvJcaDUZyZcR9ScbDe0M26wUbUXlmui8xqLE,13863
36
- chellow/e/views.py,sha256=AY1t0vx-TCM-8Eh_DlYnXzgQjeeYfbLdFtTk4BX2FIQ,174281
36
+ chellow/e/views.py,sha256=5pp-sbUHaiQ1N0RgY73XQbHlqrZP3y64HrZgPTmFxE4,180225
37
37
  chellow/e/bill_parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  chellow/e/bill_parsers/activity_mop_stark_xlsx.py,sha256=v1s4O8phVJVn9sOs9HKrKYcECAP0ApnUgqCaa2ARYiQ,4234
39
39
  chellow/e/bill_parsers/annual_mop_stark_xlsx.py,sha256=4dAWjaxsDnnGBnRAjgFe7IZLxIcLMGiTuXh1uqNnnlQ,4382
@@ -200,7 +200,7 @@ chellow/templates/e/em_totals.html,sha256=D_H12qF6b8heVeSGzcl4u7xRvtPLUtM1zWYrwE
200
200
  chellow/templates/e/energisation_status.html,sha256=hvD1qMpLYjmWWGIrv-5Ko3KbRL3a6MdQXcO3Fr4_cHA,478
201
201
  chellow/templates/e/energisation_statuses.html,sha256=qwRIH7jqKA1MgajsWOeZAH89iRpOfsNW_fAqXymUQ3E,587
202
202
  chellow/templates/e/era_edit.html,sha256=GXH7MQd6_53guCjX8j_Km7R-jyvkkYBk3Oi-cGxwblo,6396
203
- chellow/templates/e/era_supplier_bill_add.html,sha256=P-7hIxGSY5bcSMMcIv40vOFKlUuXF1l1SnxR9I5BSBM,2128
203
+ chellow/templates/e/era_supplier_bill_add.html,sha256=TgcIFuX-_sXXYFsn9yGT-QqMrZe6uLxWoJ-G0f-VELU,2050
204
204
  chellow/templates/e/generator_type.html,sha256=En0lQSU_mc-QLMG5Hx-gDINVoqyfa4X9RYwopzpm33g,439
205
205
  chellow/templates/e/generator_types.html,sha256=672cXDYewLAk32pzp6c8fi2P48FikxRrzTEtx_PlR7Y,535
206
206
  chellow/templates/e/gsp_group.html,sha256=yzLHZHQPHZAQtjLBszWEc-htw8-MEhSu3kLo-KmW5n8,405
@@ -209,7 +209,7 @@ chellow/templates/e/hh_datum_edit.html,sha256=TJPvQ7FHw1yjkBwpXul0ZBs8UQtZR98wJ3
209
209
  chellow/templates/e/lafs.html,sha256=7MQvmoGCY-JCSDDos7vJVRKWAvqqM0eqhA0-hvaO1_o,996
210
210
  chellow/templates/e/llfc.html,sha256=B0tw7PHvEEvxJWhAGe9dZji_J9apAz-TpNlkqvYFKfE,1168
211
211
  chellow/templates/e/llfc_edit.html,sha256=YwtEf8DwoX_t3RHNxPbZYFzikBL-Ly7UyjHs-YuJ3bk,1038
212
- chellow/templates/e/llfcs.html,sha256=kiLtiuPKUiK8A2B0RnSZMcfYHzGL05iD03Scbme9t8w,1158
212
+ chellow/templates/e/llfcs.html,sha256=OlY9x3XKs0OAoa4ZOZoRokYEjIZ_isfoBtn3DGL-u6o,1228
213
213
  chellow/templates/e/market_role.html,sha256=hQ62PwzByIKDfYRWMLsg8uuA2Yh6u_X9iaee5u31p80,1025
214
214
  chellow/templates/e/market_roles.html,sha256=5nzQuKz0QDoZe1Vf9kAc8THSpmFgYqTE8CYCUFYnVdg,464
215
215
  chellow/templates/e/meter_payment_type.html,sha256=r_9k2GmkfpPflZOXxoC7bi2st4tHVDp4daMmmpGIUfQ,659
@@ -239,13 +239,13 @@ chellow/templates/e/mtc.html,sha256=buHTHmV5Ldqgk72Bt7hVSSq75mg0mr0oJrhH_J6CLeU,
239
239
  chellow/templates/e/mtc_llfc.html,sha256=FiqWDNAwYDAxSmGufmpjNQtqRD0FOD34n_ZTN6Rz1tY,1004
240
240
  chellow/templates/e/mtc_llfc_ssc.html,sha256=G_Gqn4Avf2GDzvvW4OnFCJR_Oa2yrN18-AKZgtRKnnw,1400
241
241
  chellow/templates/e/mtc_llfc_ssc_pc.html,sha256=-QpyNMAqoQh3iub7Oz6BA1SOmiBEFmgexF4y7Z30oFA,1516
242
- chellow/templates/e/mtc_llfc_ssc_pcs.html,sha256=NtPlH-yM1XILWLsyF6YMDwg7dskfgPrvtcjyPCh9D8U,1519
243
- chellow/templates/e/mtc_llfc_sscs.html,sha256=Yyjrfb2Damfvuz-0koip3aJ_VH_UMuMsGSNgsSLmWmc,1611
244
- chellow/templates/e/mtc_llfcs.html,sha256=ekwnUMvpftcu77An30g692tn3Xam7xmxeOJU6GgIuZk,1315
242
+ chellow/templates/e/mtc_llfc_ssc_pcs.html,sha256=-NLolWBMHWhlYcTZdBfbU92v_nXFu8wa36APXMakzBg,1663
243
+ chellow/templates/e/mtc_llfc_sscs.html,sha256=lRq3D5LOs3h5-lntQfN7bTgZYBw4fOjQne1TDcL6SwE,1768
244
+ chellow/templates/e/mtc_llfcs.html,sha256=z_maAgtaeNERgaRUvjf5Kp6kChpyYnNRO6thq9uMmsM,1452
245
245
  chellow/templates/e/mtc_participant.html,sha256=URmZviX13A-PY8-zMZ-CecytAhbh1_GVFkKgo2vBncg,2232
246
- chellow/templates/e/mtc_participants.html,sha256=-SuIG3ZoMRN24zrp-sYm9enqr_TlmgLacz9D81Oeb0E,1515
246
+ chellow/templates/e/mtc_participants.html,sha256=QhJ7CCvio7HiCT3QWVeMN425EzJAob3M5VWIG7dywZI,1621
247
247
  chellow/templates/e/mtc_ssc.html,sha256=4-N2CFEHXTjWTEbo8De2QVlKFRraW6z7V6ISSWXjrGg,985
248
- chellow/templates/e/mtc_sscs.html,sha256=dU3sy-U27IxNGBHwTy4iMCjsxb7WrTK04qTvnUREZhk,1295
248
+ chellow/templates/e/mtc_sscs.html,sha256=aiC8h7xETnxB77tj4Jll0d0ECBxvsVhxYKRootAPbE4,1405
249
249
  chellow/templates/e/mtcs.html,sha256=1VC5VTNF6t7QNReDILHJh0vaVSx-ajKjjKe_KinRdgY,853
250
250
  chellow/templates/e/ods_monthly_duration.html,sha256=8B-eDtHOnW5KYrRLX1R9ylg1_lyuOe5n8aHicyqhJfY,1367
251
251
  chellow/templates/e/participant.html,sha256=1GnUAavaektvmznO2UyA4LfHI96wtYpNZ_RNgjV2ivg,1022
@@ -282,7 +282,7 @@ chellow/templates/e/supplier_batch_file_edit.html,sha256=g_1NKT3B79qKjbItZ4od7Vy
282
282
  chellow/templates/e/supplier_batch_upload_file.html,sha256=OgMwjos4I7NZgEmAKzeY9Ssu05gQ6MpeCmJONCgctwg,8533
283
283
  chellow/templates/e/supplier_batches.html,sha256=ij8LuHc2HzxovBn34aHCMra4pm3HimkkWZLeBYI4RpU,1164
284
284
  chellow/templates/e/supplier_bill.html,sha256=PvSqFvgiMrARfXtIPPcaLa64yzCKWsL0feYXq2H6ceI,3797
285
- chellow/templates/e/supplier_bill_add.html,sha256=1SOHGmFKABDs1DoiGk1C_1zX2sQYmIMgIEU8IK_D2oI,2184
285
+ chellow/templates/e/supplier_bill_add.html,sha256=BsD-Zh7d9auiqJ61VPHiQrP8u8rTcw09mEKuKH9dxaA,2100
286
286
  chellow/templates/e/supplier_bill_edit.html,sha256=oxZrMcMwrvluJSPxD4yfM9mWNeugoguAwT_ai9Ynl88,2732
287
287
  chellow/templates/e/supplier_bill_import.html,sha256=XSDURJKvXvI3ee15VqYoUpmF8Ng61Puybwexzk1AFF0,4291
288
288
  chellow/templates/e/supplier_bill_imports.html,sha256=9iTNGWKn9XjQTBP1Sepbo0QVNlgKh7EfizXapam7I6s,9356
@@ -348,6 +348,6 @@ chellow/templates/g/supply_note_edit.html,sha256=6UQf_qbhFDys3cVsTp-c7ABWZpggW9R
348
348
  chellow/templates/g/supply_notes.html,sha256=WR3YwGh_qqTklSJ7JqWX6BKBc9rk_jMff4RiWZiF2CM,936
349
349
  chellow/templates/g/unit.html,sha256=KouNVU0-i84afANkLQ_heJ0uDfJ9H5A05PuLqb8iCN8,438
350
350
  chellow/templates/g/units.html,sha256=p5Nd-lAIboKPEOO6N451hx1bcKxMg4BDODnZ-43MmJc,441
351
- chellow-1681460579.0.0.dist-info/METADATA,sha256=D3USGjOsphf7raqvXGgE3LP-vjeIV0Odoay4TN-2Ry0,12160
352
- chellow-1681460579.0.0.dist-info/WHEEL,sha256=EI2JsGydwUL5GP9t6kzZv7G3HDPi7FuZDDf9In6amRM,87
353
- chellow-1681460579.0.0.dist-info/RECORD,,
351
+ chellow-1681482204.0.0.dist-info/METADATA,sha256=uE-uqJb5xfHB4TbCOcf3L0PJTmc1_nOtWjzhRyHI0pY,12160
352
+ chellow-1681482204.0.0.dist-info/WHEEL,sha256=EI2JsGydwUL5GP9t6kzZv7G3HDPi7FuZDDf9In6amRM,87
353
+ chellow-1681482204.0.0.dist-info/RECORD,,