Skip to content

routes

get_subscription_pings_since(uuid)

View the status of a subscribed service

Source code in src\downtime_panda\blueprints\subscription\routes.py
@subscription_blueprint.route("/<uuid>/pings_since", methods=["GET"])
@login_required
def get_subscription_pings_since(uuid: str):
    """View the status of a subscribed service"""
    subscription = Subscription.get_user_subscription_by_uuid(current_user, uuid)

    since_date = datetime.fromisoformat(request.args["since"])
    pings = subscription.service.get_pings_since(since_date)
    pings = list(reversed(pings))
    pings = {
        "x": [ping.pinged_at for ping in pings],
        "y": [ping.response_time.total_seconds() for ping in pings],
        "status": [ping.http_response for ping in pings],
        "type": "scatter",
    }
    return pings

list_subscriptions()

List all subscriptions for the current user.

Source code in src\downtime_panda\blueprints\subscription\routes.py
@subscription_blueprint.route("/", methods=["GET"])
@login_required
def list_subscriptions():
    """List all subscriptions for the current user."""
    subscriptions = Subscription.get_subscriptions_by_user(current_user)
    return render_template(
        "blueprints/subscription/list.html.jinja",
        subscriptions=subscriptions,
    )

view_subscription(uuid)

View the status of a subscribed service

Source code in src\downtime_panda\blueprints\subscription\routes.py
@subscription_blueprint.route("/<uuid>", methods=["GET"])
@login_required
def view_subscription(uuid: str):
    """View the status of a subscribed service"""
    MAX_POINTS = 20
    subscription = Subscription.get_user_subscription_by_uuid(current_user, uuid)
    pings = subscription.service.get_latest_n_pings(MAX_POINTS)
    pings = list(reversed(pings))
    pings = {
        "x": [ping.pinged_at for ping in pings],
        "y": [ping.response_time.total_seconds() for ping in pings],
        "status": [ping.http_response for ping in pings],
        "type": "scatter",
    }
    return render_template(
        "blueprints/subscription/status.html.jinja",
        subscription=subscription,
        pings=pings,
        max_points=MAX_POINTS,
    )