Spaces:
Sleeping
Sleeping
Update main.py
Browse files
main.py
CHANGED
|
@@ -11,6 +11,7 @@ import google.generativeai as genai
|
|
| 11 |
import firebase_admin
|
| 12 |
from firebase_admin import credentials, db, storage, auth
|
| 13 |
import pandas as pd
|
|
|
|
| 14 |
|
| 15 |
app = Flask(__name__)
|
| 16 |
CORS(app)
|
|
@@ -24,6 +25,7 @@ firebase_admin.initialize_app(cred, {
|
|
| 24 |
|
| 25 |
bucket = storage.bucket()
|
| 26 |
api_key = os.environ['Gemini']
|
|
|
|
| 27 |
|
| 28 |
# Helper functions
|
| 29 |
def configure_gemini():
|
|
@@ -54,7 +56,15 @@ def check_daily_reset(user_ref):
|
|
| 54 |
print(f"Reset error: {str(e)}")
|
| 55 |
return False
|
| 56 |
|
| 57 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
@app.route('/api/process-receipt', methods=['POST'])
|
| 59 |
def process_receipt_endpoint():
|
| 60 |
try:
|
|
@@ -175,7 +185,10 @@ def validate_and_save_transaction(uid, user_data, data, file_hash, image_bytes,
|
|
| 175 |
'remaining_cash': new_remaining
|
| 176 |
})
|
| 177 |
|
| 178 |
-
#
|
|
|
|
|
|
|
|
|
|
| 179 |
@app.route('/api/user/spending-overview', methods=['GET'])
|
| 180 |
def get_spending_overview():
|
| 181 |
try:
|
|
@@ -232,7 +245,7 @@ def verify_admin(auth_header):
|
|
| 232 |
if not user.custom_claims or not user.custom_claims.get('admin'):
|
| 233 |
raise PermissionError('Admin access required')
|
| 234 |
|
| 235 |
-
# User management
|
| 236 |
@app.route('/api/user/profile', methods=['GET'])
|
| 237 |
def get_user_profile():
|
| 238 |
try:
|
|
@@ -252,4 +265,4 @@ def get_user_profile():
|
|
| 252 |
return jsonify({'error': str(e)}), 500
|
| 253 |
|
| 254 |
if __name__ == '__main__':
|
| 255 |
-
app.run(debug=True, host="0.0.0.0", port=7860)
|
|
|
|
| 11 |
import firebase_admin
|
| 12 |
from firebase_admin import credentials, db, storage, auth
|
| 13 |
import pandas as pd
|
| 14 |
+
import requests # Needed for calling Firebase REST API
|
| 15 |
|
| 16 |
app = Flask(__name__)
|
| 17 |
CORS(app)
|
|
|
|
| 25 |
|
| 26 |
bucket = storage.bucket()
|
| 27 |
api_key = os.environ['Gemini']
|
| 28 |
+
FIREBASE_API_KEY = os.environ.get('FIREBASE_API_KEY') # For auth REST API calls
|
| 29 |
|
| 30 |
# Helper functions
|
| 31 |
def configure_gemini():
|
|
|
|
| 56 |
print(f"Reset error: {str(e)}")
|
| 57 |
return False
|
| 58 |
|
| 59 |
+
# ========================================
|
| 60 |
+
# Authentication Endpoints
|
| 61 |
+
# ========================================
|
| 62 |
+
|
| 63 |
+
|
| 64 |
+
# ========================================
|
| 65 |
+
# Receipt Processing Endpoint (unchanged)
|
| 66 |
+
# ========================================
|
| 67 |
+
|
| 68 |
@app.route('/api/process-receipt', methods=['POST'])
|
| 69 |
def process_receipt_endpoint():
|
| 70 |
try:
|
|
|
|
| 185 |
'remaining_cash': new_remaining
|
| 186 |
})
|
| 187 |
|
| 188 |
+
# ========================================
|
| 189 |
+
# Data Endpoints for Visualizations
|
| 190 |
+
# ========================================
|
| 191 |
+
|
| 192 |
@app.route('/api/user/spending-overview', methods=['GET'])
|
| 193 |
def get_spending_overview():
|
| 194 |
try:
|
|
|
|
| 245 |
if not user.custom_claims or not user.custom_claims.get('admin'):
|
| 246 |
raise PermissionError('Admin access required')
|
| 247 |
|
| 248 |
+
# User management endpoint for profile
|
| 249 |
@app.route('/api/user/profile', methods=['GET'])
|
| 250 |
def get_user_profile():
|
| 251 |
try:
|
|
|
|
| 265 |
return jsonify({'error': str(e)}), 500
|
| 266 |
|
| 267 |
if __name__ == '__main__':
|
| 268 |
+
app.run(debug=True, host="0.0.0.0", port=7860)
|