diff --git a/api/db/helpers.py b/api/db/helpers.py new file mode 100644 index 0000000..d12418b --- /dev/null +++ b/api/db/helpers.py @@ -0,0 +1,12 @@ +import os + +def find_project_root(): + current_path = os.getcwd() + while not os.path.isfile(os.path.join(current_path, 'LICENSE')): + current_path = os.path.dirname(current_path) + return current_path + +root = find_project_root() + +if __name__ == '__main__': + print(find_project_root()) diff --git a/api/db/users.py b/api/db/users.py index f6958f8..23a49e5 100644 --- a/api/db/users.py +++ b/api/db/users.py @@ -7,9 +7,14 @@ import asyncio from dotenv import load_dotenv from motor.motor_asyncio import AsyncIOMotorClient +try: + from . import helpers +except ImportError: + import helpers + load_dotenv() -with open('config/config.yml', encoding='utf8') as f: +with open(helpers.root + '/api/config/config.yml', encoding='utf8') as f: credits_config = yaml.safe_load(f) ## MONGODB Setup @@ -36,7 +41,8 @@ class UserManager: return self.conn[os.getenv('MONGO_NAME', 'nova-test')][collection_name] async def get_all_users(self): - return self.conn[os.getenv('MONGO_NAME', 'nova-test')]['users'] + collection = self.conn[os.getenv('MONGO_NAME', 'nova-test')]['users'] + return collection#.find() async def create(self, discord_id: str = '') -> dict: chars = string.ascii_letters + string.digits diff --git a/rewards/autocredits.py b/rewards/autocredits.py index 8aee8ff..8fb6b01 100644 --- a/rewards/autocredits.py +++ b/rewards/autocredits.py @@ -1,17 +1,22 @@ +import os import sys -# Weird hack because PYTHON IS GOOD LANGUAGE :)))) -sys.path.append('../') + +project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) +sys.path.append(project_root) + from api.db.users import UserManager +manager = UserManager() -async def update_credits(pymongo_client, settings=None): - manager = UserManager() - users = await manager.get_all_users(pymongo_client) +async def update_credits(settings=None): + users = await manager.get_all_users() if not settings: - users.update_many({}, {'$inc': {'credits': 2500}}) + await users.update_many({}, {'$inc': {'credits': 2500}}) else: for key, value in settings.items(): - users.update_many( + await users.update_many( {'level': key}, {'$inc': {'credits': int(value)}}) + +get_all_users = manager.get_all_users diff --git a/rewards/main.py b/rewards/main.py index 87be8f2..0412549 100644 --- a/rewards/main.py +++ b/rewards/main.py @@ -9,13 +9,14 @@ from settings import roles from dotenv import load_dotenv load_dotenv() + async def main(): mongo = pymongo.MongoClient(os.getenv('MONGO_URI')) - await update_roles(mongo) - await autocredits.update_credits(mongo, roles) + await update_roles() + await autocredits.update_credits(roles) -async def update_roles(mongo): +async def update_roles(): async with aiohttp.ClientSession() as session: try: async with session.get('http://0.0.0.0:3224/get_roles') as response: @@ -25,9 +26,15 @@ async def update_roles(mongo): return level_role_names = [f'lvl{lvl}' for lvl in range(10, 110, 10)] - users = await autocredits.get_all_users(mongo) + users = await autocredits.get_all_users() + users = users.find({}) + users = await users.to_list(length=None) + + + for user in users: + if not 'auth' in user: + continue - for user in users.find(): discord = str(user['auth']['discord']) for user_id, role_names in discord_users.items(): @@ -48,6 +55,5 @@ def launch(): with open('rewards/last_update.txt', 'w') as f: f.write(str(time.time())) - if __name__ == '__main__': launch()