feat(api): dont list proxies destroyed over 24 hours ago

This commit is contained in:
Iain Learmonth 2024-11-29 18:39:08 +00:00
parent 1bc2960278
commit 8449a5a8c8

View file

@ -2,6 +2,7 @@ import base64
import binascii import binascii
import logging import logging
import re import re
from datetime import datetime, timedelta, UTC
from typing import Optional, List, Callable, Any, Type, Dict, Union, Literal from typing import Optional, List, Callable, Any, Type, Dict, Union, Literal
from flask import Blueprint, request, jsonify, abort from flask import Blueprint, request, jsonify, abort
@ -85,7 +86,7 @@ def list_resources( # pylint: disable=too-many-arguments,too-many-locals
model: Type[Any], model: Type[Any],
serialize_func: Callable[[Any], Dict[str, Any]], serialize_func: Callable[[Any], Dict[str, Any]],
*, *,
filters: Optional[List[ListFilter]] = None, filters: List[ListFilter] = [],
order_by: Optional[ColumnElement[Any]] = None, order_by: Optional[ColumnElement[Any]] = None,
resource_name: str = 'ResourceList', resource_name: str = 'ResourceList',
max_items_param: str = 'MaxItems', max_items_param: str = 'MaxItems',
@ -179,10 +180,10 @@ def list_origins() -> ResponseReturnValue:
@api.route('/web/mirror', methods=['GET']) @api.route('/web/mirror', methods=['GET'])
def list_mirrors() -> ResponseReturnValue: def list_mirrors() -> ResponseReturnValue:
status_filter = request.args.get('Status')
filters = [] filters = []
twenty_four_hours_ago = datetime.now(UTC) - timedelta(hours=24)
status_filter = request.args.get('Status')
if status_filter: if status_filter:
if status_filter == "pending": if status_filter == "pending":
filters.append(Proxy.url.is_(None)) filters.append(Proxy.url.is_(None))
@ -196,7 +197,9 @@ def list_mirrors() -> ResponseReturnValue:
filters.append(Proxy.deprecated.is_not(None)) filters.append(Proxy.deprecated.is_not(None))
filters.append(Proxy.destroyed.is_(None)) filters.append(Proxy.destroyed.is_(None))
if status_filter == "destroyed": if status_filter == "destroyed":
filters.append(Proxy.destroyed.is_not(None)) filters.append(Proxy.destroyed > twenty_four_hours_ago)
else:
filters.append((Proxy.destroyed.is_(None)) | (Proxy.destroyed > twenty_four_hours_ago))
return list_resources( return list_resources(
Proxy, Proxy,