Skip to content

Commit 185f959

Browse files
Merge pull request #168 from MothScientist/fix
Fix
2 parents 4ff08f3 + 1b2f83c commit 185f959

File tree

7 files changed

+54
-54
lines changed

7 files changed

+54
-54
lines changed

budget_graph/bot.py

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
# bot.set_my_short_description('Simple and fast budget control')
4444

4545

46-
@timeit
4746
def reply_menu_buttons_register(message):
4847
telegram_id: int = message.from_user.id
4948
user_language: str = check_user_language(telegram_id)
@@ -56,7 +55,6 @@ def reply_menu_buttons_register(message):
5655
bot.send_message(message.chat.id, receive_translation(user_language, "click_need_button"), reply_markup=markup_1)
5756

5857

59-
@timeit
6058
def reply_menu_buttons_not_register(message):
6159
telegram_id: int = message.from_user.id
6260
user_language: str = check_user_language(telegram_id)
@@ -68,7 +66,6 @@ def reply_menu_buttons_not_register(message):
6866
bot.send_message(message.chat.id, receive_translation(user_language, 'click_need_button'), reply_markup=markup_1)
6967

7068

71-
@timeit
7269
def table_manage_get_buttons(message):
7370
telegram_id: int = message.from_user.id
7471
user_language: str = check_user_language(telegram_id)
@@ -85,7 +82,6 @@ def table_manage_get_buttons(message):
8582
reply_markup=markup_1)
8683

8784

88-
@timeit
8985
def group_settings_get_buttons(message):
9086
telegram_id: int = message.from_user.id
9187
user_language: str = check_user_language(telegram_id)
@@ -196,7 +192,7 @@ def project_github(message) -> None:
196192

197193

198194
@bot.message_handler(commands=['premium'])
199-
def premium(message, user_language):
195+
def premium(message, user_language: str):
200196
bot.send_message(message.chat.id, 'soon')
201197
# TODO - пока идея, что для премиума доступна аналитика по расходам их собственным
202198
# TODO - если премиум имеет владелец группы, то для всех в группе доступна общая аналитика, но не собственная
@@ -220,16 +216,13 @@ def change_timezone(message) -> None:
220216

221217

222218
@bot.callback_query_handler(func=lambda call: call.data.startswith('change_timezone'))
223-
def callback_query_change_timezone(call):
219+
@connect_defer_close_db
220+
def callback_query_change_timezone(db_connection, call):
224221
telegram_id: int = call.from_user.id
225222
user_language: str = check_user_language(telegram_id)
226223
timezone: int = int(call.data.replace('change_timezone_', '', 1).strip())
227224

228-
connection = connect_db()
229-
bot_db = DatabaseQueries(connection)
230-
res_query: bool = bot_db.add_user_timezone(telegram_id, timezone)
231-
close_db(connection)
232-
225+
res_query: bool = db_connection.add_user_timezone(telegram_id, timezone)
233226
if res_query:
234227
bot.answer_callback_query(call.id,
235228
f"{receive_translation(user_language, "great")}\n"
@@ -258,16 +251,15 @@ def change_language(message) -> None:
258251

259252

260253
@bot.callback_query_handler(func=lambda call: call.data.startswith('change_language'))
261-
def callback_query_change_language(call):
254+
@connect_defer_close_db
255+
def callback_query_change_language(db_connection, call):
262256
telegram_id: int = call.from_user.id
263257
user_language: str = check_user_language(telegram_id)
264258
# remove old language values from cache
265259
UserLanguageCache.delete_data_from_cache(telegram_id)
266260
new_user_language: str = call.data[-2:]
267-
connection = connect_db()
268-
bot_db = DatabaseQueries(connection)
269-
res: bool = bot_db.add_user_language(telegram_id, new_user_language)
270-
close_db(connection)
261+
262+
res: bool = db_connection.add_user_language(telegram_id, new_user_language)
271263
if res:
272264
# new value will be written to the cache
273265
user_language: str = check_user_language(telegram_id) # change user language to new language
@@ -838,15 +830,15 @@ def get_str_with_group_users(telegram_id: int, with_owner: bool) -> str:
838830

839831
if with_owner:
840832
res: str = '\n'.join(
841-
f"{user} ({receive_translation(user_language, 'owner')})"
833+
f'{user} ({receive_translation(user_language, 'owner')})'
842834
if user == group_owner_username
843835
else
844-
f"{user}"
836+
f'{user}'
845837
for user in group_users_list
846838
)
847839
else:
848840
res: str = '\n'.join(
849-
f"{user}"
841+
f'{user}'
850842
for user in group_users_list
851843
if user != group_owner_username
852844
)

budget_graph/db_manager.py

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def wrapper(*args, **kwargs):
5959
# all the necessary event handlers are already contained inside the called functions
6060
logger_database.debug(f'[DB_CONNECT][defer] FAILED: connecting to database: {str(err)}')
6161
finally:
62+
# logging is inside the function
6263
close_db(connection) # the 'if' condition is not required since it is inside the called function
6364
return wrapper
6465

@@ -237,13 +238,8 @@ def get_salt_by_username(self, username: str) -> str:
237238
try:
238239
with self.__conn as conn:
239240
with conn.cursor() as cur:
240-
cur.execute("""SELECT
241-
"psw_salt"
242-
FROM
243-
"budget_graph"."users"
244-
WHERE
245-
"username" = %s::text""", (username,))
246-
return str(res[0]) if (res := cur.fetchone()) else ""
241+
cur.execute(read_sql_file('get_salt_by_username'), {'username': username})
242+
return str(res[0]) if (res := cur.fetchone()) else ''
247243

248244
except (DatabaseError, TypeError) as err:
249245
logger_database.error(f"[DB_QUERY] {str(err)}, "
@@ -257,15 +253,8 @@ def auth_by_username(self, username: str, psw_hash: str) -> bool:
257253
try:
258254
with self.__conn as conn:
259255
with conn.cursor() as cur:
260-
cur.execute("""SELECT
261-
1
262-
FROM
263-
"budget_graph"."users" u
264-
WHERE
265-
u."username" = %s::text
266-
AND
267-
u."psw_hash" = %s::text""", (username, psw_hash,))
268-
return bool(cur.fetchone())
256+
cur.execute(read_sql_file('auth_by_username'), {'username': username, 'psw_hash': psw_hash})
257+
return bool(cur.fetchone()[0])
269258

270259
except (DatabaseError, TypeError) as err:
271260
logger_database.error(f"[DB_QUERY] {str(err)}, "
@@ -408,18 +397,11 @@ def check_user_is_group_owner_by_telegram_id(self, telegram_id: int, group_id: i
408397
try:
409398
with self.__conn as conn:
410399
with conn.cursor() as cur:
411-
cur.execute("""SELECT
412-
CASE
413-
WHEN "owner" = %s::bigint THEN
414-
TRUE
415-
ELSE
416-
FALSE
417-
END
418-
FROM
419-
"budget_graph"."groups"
420-
WHERE
421-
"id" = %s::smallint""", (telegram_id, group_id,))
422-
return cur.fetchone()[0]
400+
cur.execute(
401+
read_sql_file('check_user_is_group_owner_by_telegram_id'),
402+
{'owner': telegram_id, 'group_id': group_id}
403+
)
404+
return bool(cur.fetchone()[0])
423405

424406
except (DatabaseError, TypeError) as err:
425407
logger_database.error(f"[DB_QUERY] {str(err)}, "

budget_graph/helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""
2-
Auxiliary methods
2+
Methods for the bot to work, mainly keyboard caching
33
"""
44
from sys import path as sys_path
55
from functools import cache

budget_graph/sql/auth_by_username.sql

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
SELECT
2+
EXISTS (
3+
SELECT
4+
1
5+
FROM
6+
"budget_graph"."users"
7+
WHERE
8+
"username" = %(username)s::text
9+
AND
10+
"psw_hash" = %(psw_hash)s::text
11+
)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
SELECT
2+
CASE
3+
WHEN "owner" = %(owner)s::bigint THEN TRUE
4+
ELSE FALSE
5+
END
6+
FROM
7+
"budget_graph"."groups"
8+
WHERE
9+
"id" = %(group_id)s::smallint
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
SELECT
2-
g."token",
3-
g."id"
2+
g."token",
3+
g."id"
44
FROM
5-
"budget_graph"."groups" g
6-
JOIN "budget_graph"."users_groups" u_g ON g."id" = u_g."group_id"
7-
JOIN "budget_graph"."users" u USING("telegram_id")
5+
"budget_graph"."groups" g
6+
JOIN "budget_graph"."users_groups" u_g ON g."id" = u_g."group_id"
7+
JOIN "budget_graph"."users" u USING("telegram_id")
88
WHERE
9-
u."username" = %(username)s::text
9+
u."username" = %(username)s::text
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SELECT
2+
"psw_salt"
3+
FROM
4+
"budget_graph"."users"
5+
WHERE
6+
"username" = %(username)s::text

0 commit comments

Comments
 (0)