mirror of
https://github.com/NovaOSS/nova-api.git
synced 2024-11-25 20:23:58 +01:00
Compare commits
3 commits
c07af0aed8
...
e4313b439a
Author | SHA1 | Date | |
---|---|---|---|
e4313b439a | |||
b81c0657b7 | |||
596861d2ee |
12
api/db/helpers.py
Normal file
12
api/db/helpers.py
Normal file
|
@ -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())
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -9,13 +9,12 @@ from settings import roles
|
|||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
async def main():
|
||||
mongo = pymongo.MongoClient(os.getenv('MONGO_URI'))
|
||||
await update_roles()
|
||||
await autocredits.update_credits(roles)
|
||||
|
||||
await update_roles(mongo)
|
||||
await autocredits.update_credits(mongo, 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,19 +24,26 @@ 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_doc = await autocredits.get_all_users()
|
||||
users = users_doc.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():
|
||||
if user_id == discord:
|
||||
for role in level_role_names:
|
||||
if role in role_names:
|
||||
users.update_one(
|
||||
users_doc.update_one(
|
||||
{'auth.discord': discord},
|
||||
{'$set': {'level': role}}
|
||||
)
|
||||
|
||||
print(f'Updated {discord} to {role}')
|
||||
|
||||
return users
|
||||
|
@ -45,9 +51,8 @@ async def update_roles(mongo):
|
|||
def launch():
|
||||
asyncio.run(main())
|
||||
|
||||
with open('rewards/last_update.txt', 'w') as f:
|
||||
with open('rewards/last_update.txt', 'w', encoding='utf8') as f:
|
||||
f.write(str(time.time()))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
launch()
|
||||
|
|
Loading…
Reference in a new issue