BuddyMath / fix_dotan_balance_script.py
dotandru's picture
Fix: Quota logic for admins and updated firestore rules
3091d31
Raw
History Blame Contribute Delete
1.9 kB
import firebase_admin
from firebase_admin import credentials, firestore
import sys
# Configure stdout for UTF-8
if sys.stdout.encoding != 'utf-8':
try:
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
except Exception:
pass
# Initialize with project ID only to trigger ADC
if not firebase_admin._apps:
try:
firebase_admin.initialize_app(options={'projectId': 'buddy-math-dev'})
print("โœ… Initialized using Applications Default Credentials (ADC).")
except Exception as e:
print(f"โŒ Failed to initialize using ADC: {e}")
sys.exit(1)
db = firestore.client()
def find_dotan_admin():
print("Searching for 'Dotan Admin' or 'ื“ื•ืชืŸ ืื“ืžื™ืŸ' in 'buddy-math-dev'...")
try:
docs = db.collection('users').stream()
found = False
for doc in docs:
data = doc.to_dict()
name = data.get('name', 'N/A')
if 'admin' in name.lower() or 'ืื“ืžื™ืŸ' in name:
print(f"FOUND: ID: {doc.id} | Name: {name}")
wallet = data.get('wallet', {})
balance = wallet.get('token_balance')
print(f"Balance: {balance}")
found = True
# Update if balance is negative or requested
if balance and balance < 0:
new_balance = 464400
print(f"FIXING balance to {new_balance}...")
db.collection('users').doc(doc.id).update({
'wallet.token_balance': new_balance
})
print("โœ… SUCCESS: Balance updated.")
if not found:
print("No admin users found.")
except Exception as e:
print(f"โŒ Error during Firestore query: {e}")
if __name__ == "__main__":
find_dotan_admin()