Skip to content

Commit 2b49a60

Browse files
committed
init not tested, just give structure
1 parent 9d5f84e commit 2b49a60

File tree

5 files changed

+145
-0
lines changed

5 files changed

+145
-0
lines changed

bot/google_sheet_service/__init__.py

Whitespace-only changes.

bot/google_sheet_service/auth.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import os
2+
import json
3+
from google.oauth2 import service_account
4+
5+
6+
def get_credentials():
7+
SCOPES = ["https://www.googleapis.com/auth/spreadsheets"]
8+
google_json = os.getenv("GOOGLE_JSON")
9+
google_service = json.loads(google_json)
10+
creds = service_account.Credentials.from_service_account_info(
11+
google_service, scopes=SCOPES
12+
)
13+
return creds

bot/google_sheet_service/config.py

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# Sheet names
2+
DD_SHEET = "Dropdown" # DD for Dropdown
3+
TR_SHEET = "Tracker" # TR for Tracker
4+
5+
# Tracker columns
6+
TR_QUICKADD_TP_PAY = "G" # Transport Payment Column
7+
TR_QUICKADD_TP_TYPE = "H" # Transport Type Column
8+
TR_QUICKADD_OT_PAY = "I" # Others Payment Column
9+
TR_QUICKADD_OT_TYPE = "J" # Others Type Column
10+
11+
TR_QUICKADD_ROW_START = 3 # Quick Add Row
12+
TR_QUICKADD_ROW_END = 13 # Quick Add End Row
13+
14+
TR_START_COL = "B" # Start Column
15+
TR_END_COL = "E" # End Column
16+
TR_ROW = 3
17+
18+
# Dropdown rows
19+
DD_MAIN_CAT_ROW = 2
20+
DD_SUBCAT_START = 3
21+
DD_SUBCAT_END = 9
22+
23+
DD_MAIN_PAY_ROW = 12
24+
DD_SUBPAY_START = 13
25+
DD_SUBPAY_END = 19
26+
27+
DD_TRANSPORT_COL = "A"
28+
DD_OTHERS_COL_START = "B"
29+
DD_OTHERS_COL_END = "J"
30+
31+
DD_INCOME_COL = "L"
32+
33+
DD_PAYMENT_COL_START = "A"
34+
DD_PAYMENT_COL_END = "J"
35+
36+
# Column indexes
37+
START_COL_IDX = 0
38+
END_COL_IDX = 11
39+
40+
# Months
41+
OVERALL_RANGE = "!M13:O25"
42+
43+
44+
# Helper functions
45+
def create_range(sheet, start_col, start_row, end_col=None, end_row=None):
46+
"""
47+
Create a standard range string.
48+
Sample output: "Dropdown!A2:A9"
49+
"""
50+
end_part = f":{end_col}{end_row}" if end_col and end_row else ""
51+
return f"{sheet}!{start_col}{start_row}{end_part}"
52+
53+
54+
def create_complex_range(sheet, start_col_ord, end_col_ord, row_start, row_end):
55+
"""
56+
Create a range string for complex cases.
57+
Sample output: ["Dropdown!B2:B9", "Dropdown!C2:C9", ...]
58+
"""
59+
return [
60+
f"{sheet}!{chr(i)}{row_start}:{chr(i)}{row_end}"
61+
for i in range(start_col_ord, end_col_ord)
62+
]
63+
64+
65+
# Transport ranges
66+
TRANSPORT_RANGE = create_range(
67+
DD_SHEET, DD_TRANSPORT_COL, DD_SUBCAT_START, DD_TRANSPORT_COL, DD_SUBCAT_END
68+
)
69+
70+
# Others ranges
71+
OTHERS_MAIN_RANGE = create_range(
72+
DD_SHEET, DD_OTHERS_COL_START, DD_MAIN_CAT_ROW, DD_OTHERS_COL_END, DD_MAIN_CAT_ROW
73+
)
74+
OTHERS_SUB_RANGE = create_complex_range(
75+
DD_SHEET,
76+
ord(DD_OTHERS_COL_START),
77+
ord(DD_OTHERS_COL_END),
78+
DD_MAIN_CAT_ROW,
79+
DD_SUBCAT_END,
80+
)
81+
82+
# Payment ranges
83+
PAYMENT_MAIN_RANGE = create_range(
84+
DD_SHEET, DD_PAYMENT_COL_START, DD_MAIN_PAY_ROW, DD_PAYMENT_COL_END, DD_MAIN_PAY_ROW
85+
)
86+
PAYMENT_SUB_RANGE = create_complex_range(
87+
DD_SHEET,
88+
ord(DD_PAYMENT_COL_START),
89+
ord(DD_PAYMENT_COL_END),
90+
DD_MAIN_PAY_ROW,
91+
DD_SUBPAY_END,
92+
)
93+
94+
# Income range
95+
INCOME_RANGE = create_range(
96+
DD_SHEET, DD_INCOME_COL, DD_MAIN_CAT_ROW, DD_INCOME_COL, DD_SUBCAT_END
97+
)
98+
99+
# Tracker ranges
100+
TRACKER_RANGE = create_range(TR_SHEET, TR_START_COL, TR_ROW, TR_END_COL, TR_ROW)
101+
102+
# Quick add ranges
103+
QUICK_ADD_RANGE = create_range(
104+
TR_SHEET,
105+
TR_QUICKADD_TP_PAY,
106+
TR_QUICKADD_ROW_START,
107+
TR_QUICKADD_OT_TYPE,
108+
TR_QUICKADD_ROW_START,
109+
)
110+
QUICK_OTHERS_RANGE = create_range(
111+
TR_SHEET,
112+
TR_QUICKADD_OT_PAY,
113+
TR_QUICKADD_ROW_START,
114+
TR_QUICKADD_OT_TYPE,
115+
TR_QUICKADD_ROW_END,
116+
)
117+
QUICK_TRANSPORT_RANGE = create_range(
118+
TR_SHEET,
119+
TR_QUICKADD_TP_PAY,
120+
TR_QUICKADD_ROW_START,
121+
TR_QUICKADD_TP_TYPE,
122+
TR_QUICKADD_ROW_END,
123+
)

bot/google_sheet_service/exceptions.py

Whitespace-only changes.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# sheets_api.py
2+
from googleapiclient.discovery import build
3+
from .auth import get_credentials
4+
5+
6+
class SheetManager:
7+
def __init__(self):
8+
self.creds = get_credentials()
9+
self.sheets_api = build("sheets", "v4", credentials=self.creds)

0 commit comments

Comments
 (0)