From c19a6bb310c5cfe166c8d9351ed0decedffc3168 Mon Sep 17 00:00:00 2001 From: Gerni <47844854+mgerni@users.noreply.github.com> Date: Mon, 12 May 2025 14:34:30 -0400 Subject: [PATCH] migrate db take 2 --- task_database.py | 236 +++++++++++++++++++++++------------------------ 1 file changed, 118 insertions(+), 118 deletions(-) diff --git a/task_database.py b/task_database.py index f2ad4fb..689164b 100644 --- a/task_database.py +++ b/task_database.py @@ -1,5 +1,4 @@ import random -import gspread import re from math import floor import tasklists @@ -564,6 +563,7 @@ def manual_revert_tasks(username, tier, task_id): ''' +DEPRECATED - No replacement import_spreadsheet: The import_spreadsheet function, Imports a spreadsheet into the database. @@ -583,123 +583,123 @@ def manual_revert_tasks(username, tier, task_id): list: each element is a str: of the tier import status. ''' -def import_spreadsheet(username, url): - def update_current_task_from_sheet(username, tier, task_id): - coll = mydb['taskAccounts'] - task_check = coll.find_one({'username': username, '%s._id' % tier: task_id}, - {'_id': 0, '%s.status' % tier: 1, '%s._id' % tier: 1}) - task_updated = False - if task_check[tier][task_id - 1]['status'] == 'Incomplete': - task_updated = True - coll.update_one({'username': username, '%s._id' % tier: task_id}, - {'$set': {'%s.$.taskCurrent' % tier: True}}) - return task_updated - - try: - error = None - task_import_logs = [] - task_current_logs = [] - speadsheet_key = re.search('\/d\/(.*?)(\/|$)', url) - if speadsheet_key: - service = gspread.service_account(filename="service_account.json") - google_sheet = service.open_by_key(speadsheet_key.group(1)) - info_sheet = google_sheet.worksheet("Info") - - current_sheet_tier = info_sheet.get('B13:B14') - - tier, cell = current_sheet_tier[0][0], current_sheet_tier[1][0].replace('C', "") - cell = int(cell) - 1 - sheet_tasks = [] - sheet_list = [ - 'Easy', - 'Medium', - 'Hard', - 'Elite', - 'Pets', - 'Pets', - 'Pets', - 'Extra', - 'Passive' - ] - - cell_range = [ - 'A2:C137', # Easy - 'A2:C160', # Medium - 'A2:C184', # Hard - 'A2:C165', # Elite - 'A2:C35', # Pets - Boss - 'A37:C44', # Pets - Skill - 'A46:C55', # Pets - Other - 'A2:C119', # Extra - 'A2:C44' # Passive - ] - - task_list = [ - tasklists.easy, - tasklists.medium, - tasklists.hard, - tasklists.elite, - tasklists.boss_pet, - tasklists.skill_pet, - tasklists.other_pet, - tasklists.extra, - tasklists.passive - ] - - taskdb_names = [ - 'easyTasks', - 'mediumTasks', - 'hardTasks', - 'eliteTasks', - 'bossPetTasks', - 'skillPetTasks', - 'otherPetTasks', - 'extraTasks', - 'passiveTasks' - ] - - for sheet_name, cells in zip(sheet_list, cell_range): - ws = google_sheet.worksheet(sheet_name) - tasks = ws.get(cells) - sheet_tasks.append(tasks) - if sheet_name == tier: - current_list = [] - current_list.append(tasks) - - coll = mydb['taskAccounts'] - user_tasks = coll.find_one({'username': username}) - - for sheet_task_list, tasks_lists, doc_list_names in zip(sheet_tasks, task_list, taskdb_names): - if len(sheet_task_list) == len(tasks_lists): - for i, (task_sheet, task_db) in enumerate(zip(sheet_task_list, tasks_lists), 1): - if 'x' in task_sheet: - user_tasks[doc_list_names][i - 1]['status'] = "Complete" - coll.update_one({'username': username}, {'$set': {doc_list_names: user_tasks[doc_list_names]}}) - task_import_logs.append('Tasks for %s were updated!' % doc_list_names) - else: - task_import_logs.append( - 'Unable to update %s! Spreadsheet data differs from database!' % doc_list_names) - - if get_taskCurrent(username) is None: - for i, (task) in enumerate(current_list[0], 1): - if i == cell: - sheets_db_dict = {} - for i2, (key, value) in enumerate(zip(sheet_list, taskdb_names)): - sheets_db_dict[key] = value - if i2 == 3: - update_current = update_current_task_from_sheet(username, sheets_db_dict[tier], i) - if update_current is True: - task_current_logs.append('Updated current task!') - break - else: - task_current_logs.append('Current task already found!') - else: - error = "Spreadsheet URL is not valid!" - return task_import_logs, task_current_logs, error - except Exception as e: - print(str(e)) - error = "There was a problem prcoessing the request. Contact Gerni Task on Discord." - return task_import_logs, task_current_logs, error +# def import_spreadsheet(username, url): +# def update_current_task_from_sheet(username, tier, task_id): +# coll = mydb['taskAccounts'] +# task_check = coll.find_one({'username': username, '%s._id' % tier: task_id}, +# {'_id': 0, '%s.status' % tier: 1, '%s._id' % tier: 1}) +# task_updated = False +# if task_check[tier][task_id - 1]['status'] == 'Incomplete': +# task_updated = True +# coll.update_one({'username': username, '%s._id' % tier: task_id}, +# {'$set': {'%s.$.taskCurrent' % tier: True}}) +# return task_updated + +# try: +# error = None +# task_import_logs = [] +# task_current_logs = [] +# speadsheet_key = re.search('\/d\/(.*?)(\/|$)', url) +# if speadsheet_key: +# service = gspread.service_account(filename="service_account.json") +# google_sheet = service.open_by_key(speadsheet_key.group(1)) +# info_sheet = google_sheet.worksheet("Info") + +# current_sheet_tier = info_sheet.get('B13:B14') + +# tier, cell = current_sheet_tier[0][0], current_sheet_tier[1][0].replace('C', "") +# cell = int(cell) - 1 +# sheet_tasks = [] +# sheet_list = [ +# 'Easy', +# 'Medium', +# 'Hard', +# 'Elite', +# 'Pets', +# 'Pets', +# 'Pets', +# 'Extra', +# 'Passive' +# ] + +# cell_range = [ +# 'A2:C137', # Easy +# 'A2:C160', # Medium +# 'A2:C184', # Hard +# 'A2:C165', # Elite +# 'A2:C35', # Pets - Boss +# 'A37:C44', # Pets - Skill +# 'A46:C55', # Pets - Other +# 'A2:C119', # Extra +# 'A2:C44' # Passive +# ] + +# task_list = [ +# tasklists.easy, +# tasklists.medium, +# tasklists.hard, +# tasklists.elite, +# tasklists.boss_pet, +# tasklists.skill_pet, +# tasklists.other_pet, +# tasklists.extra, +# tasklists.passive +# ] + +# taskdb_names = [ +# 'easyTasks', +# 'mediumTasks', +# 'hardTasks', +# 'eliteTasks', +# 'bossPetTasks', +# 'skillPetTasks', +# 'otherPetTasks', +# 'extraTasks', +# 'passiveTasks' +# ] + +# for sheet_name, cells in zip(sheet_list, cell_range): +# ws = google_sheet.worksheet(sheet_name) +# tasks = ws.get(cells) +# sheet_tasks.append(tasks) +# if sheet_name == tier: +# current_list = [] +# current_list.append(tasks) + +# coll = mydb['taskAccounts'] +# user_tasks = coll.find_one({'username': username}) + +# for sheet_task_list, tasks_lists, doc_list_names in zip(sheet_tasks, task_list, taskdb_names): +# if len(sheet_task_list) == len(tasks_lists): +# for i, (task_sheet, task_db) in enumerate(zip(sheet_task_list, tasks_lists), 1): +# if 'x' in task_sheet: +# user_tasks[doc_list_names][i - 1]['status'] = "Complete" +# coll.update_one({'username': username}, {'$set': {doc_list_names: user_tasks[doc_list_names]}}) +# task_import_logs.append('Tasks for %s were updated!' % doc_list_names) +# else: +# task_import_logs.append( +# 'Unable to update %s! Spreadsheet data differs from database!' % doc_list_names) + +# if get_taskCurrent(username) is None: +# for i, (task) in enumerate(current_list[0], 1): +# if i == cell: +# sheets_db_dict = {} +# for i2, (key, value) in enumerate(zip(sheet_list, taskdb_names)): +# sheets_db_dict[key] = value +# if i2 == 3: +# update_current = update_current_task_from_sheet(username, sheets_db_dict[tier], i) +# if update_current is True: +# task_current_logs.append('Updated current task!') +# break +# else: +# task_current_logs.append('Current task already found!') +# else: +# error = "Spreadsheet URL is not valid!" +# return task_import_logs, task_current_logs, error +# except Exception as e: +# print(str(e)) +# error = "There was a problem prcoessing the request. Contact Gerni Task on Discord." +# return task_import_logs, task_current_logs, error # NOT USED only for testing purposes.