update
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user