Skip to content

Commit b1a86bd

Browse files
authored
Merge pull request #20 from brucewzj99/quick-transport-multiple-entry
Quick transport multiple entry
2 parents 0cb8df9 + bfba390 commit b1a86bd

File tree

9 files changed

+130
-131
lines changed

9 files changed

+130
-131
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ pip install -r requirements.txt
3333
* Go to Google Cloud Platform
3434
* Set up Google Sheet API, download service account key
3535
* Retrieve Google Sheet API email
36-
* Set up Firebase Realtime Database, download service account key
36+
* Set up Firebase Firestore Database, download service account key
3737
* Retrieve your firebase database url
3838
* Set up telegram bot via [BotFather](https://t.me/BotFather)
3939
* Insert all of them into .env as follows, you can use py dotenv or set it as env variable in your venv

bot/common.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class ConversationState(Enum):
2121
SUBPAYMENT,
2222
QUICK_ADD,
2323
QUICK_ADD_CATEGORY,
24+
QUICK_ADD_TRANSPORT,
2425
CONFIG_SETUP,
2526
CONFIG_CATEGORY,
2627
CONFIG_SUBCATEGORY,
@@ -31,4 +32,4 @@ class ConversationState(Enum):
3132
INCOME,
3233
WORK_PLACE,
3334
CPF,
34-
) = range(23)
35+
) = range(24)

bot/firebase.py

Lines changed: 0 additions & 37 deletions
This file was deleted.

bot/firebase_config.py

Lines changed: 0 additions & 11 deletions
This file was deleted.

bot/google_sheet.py

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,18 @@
2020
f"Dropdown!{chr(i)}12:{chr(i)}19" for i in range(ord("A"), ord("K"))
2121
]
2222
payment_main_range = "Dropdown!A12:J12"
23-
quick_others_range = "Tracker!I3:J13"
2423
income_range = "Dropdown!L2:L9"
2524
overall_range = "!M13:O25"
2625

26+
tracker_range = "Tracker!B3:E3"
27+
tracker_transport_1 = "G"
28+
tracker_transport_2 = "H"
29+
tracker_others_1 = "I"
30+
tracker_others_2 = "J"
31+
quick_add_range = "Tracker!G3:J3"
32+
quick_others_range = "Tracker!I3:J13"
33+
quick_transport_range = "Tracker!G3:H13"
34+
2735

2836
def get_main_dropdown_value(sheet_id, entry_type):
2937
range = []
@@ -33,15 +41,13 @@ def get_main_dropdown_value(sheet_id, entry_type):
3341
range = others_main_range
3442
else:
3543
range = payment_main_range
36-
# Make the request
3744
results = (
3845
sheets_api.spreadsheets()
3946
.values()
4047
.get(spreadsheetId=sheet_id, range=range)
4148
.execute()
4249
)
4350

44-
# Get the values from the result
4551
values = results.get("values", [])
4652

4753
if entry_type == EntryType.TRANSPORT:
@@ -60,15 +66,13 @@ def get_sub_dropdown_value(sheet_id, main_value, entry_type):
6066
range = others_sub_range
6167
else:
6268
range = payment_sub_range
63-
# Make the request
6469
results = (
6570
sheets_api.spreadsheets()
6671
.values()
6772
.batchGet(spreadsheetId=sheet_id, ranges=range)
6873
.execute()
6974
)
7075

71-
# Get the values from the result
7276
value_ranges = results.get("valueRanges", [])
7377

7478
dropdown = []
@@ -107,7 +111,6 @@ def get_new_row(sheet_id, month):
107111

108112

109113
def create_date(sheet_id, day, month, first_row):
110-
# Update date in column A
111114
body = {"values": [[day]]}
112115
range_name = f"{month}!A{first_row}"
113116
sheets_api.spreadsheets().values().update(
@@ -134,7 +137,6 @@ def create_entry(sheet_id, month, row_tracker, row_data):
134137
sheet_column_end = "G"
135138
data = [price] + remarks_list + [category, payment]
136139

137-
# Write the message to the Google Sheet
138140
body = {"values": [data]}
139141
range_name = (
140142
f"{month}!{sheet_column_start}{row_tracker}:{sheet_column_end}{row_tracker}"
@@ -151,7 +153,7 @@ def get_trackers(sheet_id):
151153
result = (
152154
sheets_api.spreadsheets()
153155
.values()
154-
.get(spreadsheetId=sheet_id, range=f"Tracker!B3:E3")
156+
.get(spreadsheetId=sheet_id, range=tracker_range)
155157
.execute()
156158
)
157159
values = result.get("values", [])
@@ -160,7 +162,7 @@ def get_trackers(sheet_id):
160162

161163
def update_rows(sheet_id, day, new_row, first_row):
162164
values = [[day] + [new_row] * 2 + [first_row]]
163-
range_name = "Tracker!B3:E3"
165+
range_name = tracker_range
164166
body = {"values": values}
165167
request = (
166168
sheets_api.spreadsheets()
@@ -176,7 +178,7 @@ def update_rows(sheet_id, day, new_row, first_row):
176178

177179

178180
def row_incremental(sheet_id, entry_type):
179-
range_name = "Tracker!B3:E3"
181+
range_name = tracker_range
180182
response = (
181183
sheets_api.spreadsheets()
182184
.values()
@@ -202,7 +204,7 @@ def row_incremental(sheet_id, entry_type):
202204

203205

204206
def get_quick_add_settings(sheet_id, entry_type):
205-
range_name = "Tracker!G3:J3"
207+
range_name = quick_add_range
206208
response = (
207209
sheets_api.spreadsheets()
208210
.values()
@@ -226,20 +228,24 @@ def get_quick_add_settings(sheet_id, entry_type):
226228

227229
def update_quick_add_settings(sheet_id, entry_type, payment, type):
228230
if entry_type == EntryType.TRANSPORT:
229-
range_name = "Tracker!G3:H3"
231+
range_1 = tracker_transport_1
232+
range_2 = tracker_transport_2
230233
else:
231-
last_row = (
232-
sheets_api.spreadsheets()
233-
.values()
234-
.get(
235-
spreadsheetId=sheet_id,
236-
range="Tracker!I:J",
237-
)
238-
.execute()
239-
.get("values", [])
234+
range_1 = tracker_others_1
235+
range_2 = tracker_others_2
236+
237+
last_row = (
238+
sheets_api.spreadsheets()
239+
.values()
240+
.get(
241+
spreadsheetId=sheet_id,
242+
range=f"Tracker!{range_1}:{range_2}",
240243
)
241-
last_row = len(last_row) + 1
242-
range_name = f"Tracker!I{last_row}:J{last_row}"
244+
.execute()
245+
.get("values", [])
246+
)
247+
last_row = len(last_row) + 1
248+
range_name = f"Tracker!{range_1}{last_row}:{range_2}{last_row}"
243249
new_row = [payment, type]
244250
body = {"values": [new_row]}
245251
sheets_api.spreadsheets().values().update(
@@ -250,8 +256,11 @@ def update_quick_add_settings(sheet_id, entry_type, payment, type):
250256
).execute()
251257

252258

253-
def get_quick_add_others(sheet_id):
254-
range_name = quick_others_range
259+
def get_quick_add_list(sheet_id, entry_type):
260+
if entry_type == EntryType.TRANSPORT:
261+
range_name = quick_transport_range
262+
else:
263+
range_name = quick_others_range
255264
response = (
256265
sheets_api.spreadsheets()
257266
.values()
@@ -260,11 +269,11 @@ def get_quick_add_others(sheet_id):
260269
)
261270

262271
values = response.get("values", [])
263-
others_list = []
272+
settings_list = []
264273
for other in values:
265274
merged_str = ", ".join(other)
266-
others_list.append(merged_str)
267-
return others_list
275+
settings_list.append(merged_str)
276+
return settings_list
268277

269278

270279
def get_day_transaction(sheet_id, month, date):
@@ -355,11 +364,12 @@ def update_income(sheet_id, month, row_data):
355364
).execute()
356365
return True
357366

367+
358368
def get_overall(sheet_id, month):
359369
result = (
360370
sheets_api.spreadsheets()
361371
.values()
362372
.get(spreadsheetId=sheet_id, range=f"{month}{overall_range}")
363373
.execute()
364374
)
365-
return result.get("values", [])
375+
return result.get("values", [])

0 commit comments

Comments
 (0)