rairo commited on
Commit
75ba7c0
·
verified ·
1 Parent(s): 3d6f9f1

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +34 -24
main.py CHANGED
@@ -235,6 +235,40 @@ def request_credits():
235
  logging.error(f"Request credits error: {e}")
236
  return jsonify({'error': str(e)}), 500
237
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
238
  # ---------- Admin Endpoints for Credit Requests ----------
239
 
240
  @app.route('/api/admin/profile', methods=['GET'])
@@ -400,31 +434,7 @@ def admin_suspend_user(uid):
400
  logging.error(f"Admin suspend user error: {e}")
401
  return jsonify({'error': str(e)}), 500
402
 
403
- @app.route('/api/admin/stories', methods=['GET'])
404
- def admin_list_stories():
405
- try:
406
- verify_admin(request.headers.get('Authorization', ''))
407
- stories_ref = db.reference('stories')
408
- all_stories = stories_ref.get() or {}
409
- total_stories = len(all_stories)
410
-
411
- users_ref = db.reference('users')
412
- users_data = users_ref.get() or {}
413
-
414
- stories_per_user = {}
415
- for sid, sdata in all_stories.items():
416
- user_id = sdata.get('uid')
417
- if user_id:
418
- user_email = users_data.get(user_id, {}).get('email', 'Unknown')
419
- stories_per_user[user_email] = stories_per_user.get(user_email, 0) + 1
420
 
421
- return jsonify({
422
- 'total_stories': total_stories,
423
- 'stories_per_user': stories_per_user
424
- }), 200
425
- except Exception as e:
426
- logging.error(f"Admin list stories error: {e}")
427
- return jsonify({'error': str(e)}), 500
428
 
429
  @app.route('/api/admin/notifications', methods=['POST'])
430
  def send_notifications():
 
235
  logging.error(f"Request credits error: {e}")
236
  return jsonify({'error': str(e)}), 500
237
 
238
+ # Add this new endpoint to your Flask app
239
+ @app.route('/api/user/submit_feedback', methods=['POST'])
240
+ @credit_required(cost=0) # Requires authentication but no credit cost
241
+ @cross_origin()
242
+ def submit_feedback():
243
+ try:
244
+ auth_header = request.headers.get('Authorization', '')
245
+ token = auth_header.split(' ')[1]
246
+ uid = verify_token(token) # UID already verified by decorator
247
+
248
+ data = request.get_json()
249
+ feedback_type = data.get('type') # e.g., 'bug', 'feature_request', 'general'
250
+ message = data.get('message')
251
+
252
+ if not feedback_type or not message:
253
+ return jsonify({'error': 'Feedback type and message are required'}), 400
254
+
255
+ user_data = db.reference(f'users/{uid}').get()
256
+ user_email = user_data.get('email', 'unknown_email') # Get email for admin view
257
+
258
+ feedback_ref = db.reference('feedback').push()
259
+ feedback_ref.set({
260
+ 'user_id': uid,
261
+ 'user_email': user_email, # Store user email for easier admin lookup
262
+ 'type': feedback_type,
263
+ 'message': message,
264
+ 'created_at': datetime.utcnow().isoformat(),
265
+ 'status': 'open' # Initial status for new feedback
266
+ })
267
+ return jsonify({'success': True, 'feedback_id': feedback_ref.key}), 201
268
+ except Exception as e:
269
+ logging.error(f"Submit feedback error: {e}")
270
+ return jsonify({'error': str(e)}), 500
271
+
272
  # ---------- Admin Endpoints for Credit Requests ----------
273
 
274
  @app.route('/api/admin/profile', methods=['GET'])
 
434
  logging.error(f"Admin suspend user error: {e}")
435
  return jsonify({'error': str(e)}), 500
436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
437
 
 
 
 
 
 
 
 
438
 
439
  @app.route('/api/admin/notifications', methods=['POST'])
440
  def send_notifications():