This commit is contained in:
2025-11-12 13:35:59 +01:00
parent d59372d1d6
commit ce6c2f88bd
11 changed files with 1335 additions and 85 deletions

View File

@@ -61,3 +61,52 @@ def unsubscribe():
return jsonify({'error': 'Email not found in subscribers'}), 404
except Exception as e:
return jsonify({'error': str(e)}), 500
@subscription_bp.route('/api/subscribers', methods=['GET'])
def list_subscribers():
"""List all subscribers with optional status filter"""
try:
# Get status filter from query params (default: all)
status = request.args.get('status', None)
# Build query
query = {}
if status:
query['status'] = status
# Fetch subscribers
subscribers = list(subscribers_collection.find(
query,
{'_id': 0, 'email': 1, 'subscribed_at': 1, 'status': 1}
).sort('subscribed_at', -1))
# Convert datetime to ISO format
for sub in subscribers:
if 'subscribed_at' in sub:
sub['subscribed_at'] = sub['subscribed_at'].isoformat()
return jsonify({
'subscribers': subscribers,
'total': len(subscribers)
}), 200
except Exception as e:
return jsonify({'error': str(e)}), 500
@subscription_bp.route('/api/subscribers/<email>', methods=['DELETE'])
def remove_subscriber(email):
"""Permanently remove a subscriber from the database"""
try:
email = email.strip().lower()
result = subscribers_collection.delete_one({'email': email})
if result.deleted_count > 0:
return jsonify({'message': f'Subscriber {email} permanently removed'}), 200
else:
return jsonify({'error': 'Email not found in subscribers'}), 404
except Exception as e:
return jsonify({'error': str(e)}), 500