Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
236 changes: 118 additions & 118 deletions task_database.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import random
import gspread
import re
from math import floor
import tasklists
Expand Down Expand Up @@ -496,7 +497,6 @@ def manual_revert_tasks(username, tier, task_id):


'''
DEPRECATED - No replacement
import_spreadsheet:

The import_spreadsheet function, Imports a spreadsheet into the database.
Expand All @@ -516,123 +516,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.
Expand Down