Files
2026-08-07 21:17:17 +03:30

57 lines
1.8 KiB
Python

from __future__ import annotations
from flask import jsonify, request
from app.blueprints.seo import bp
from app.blueprints.seo.queries import (
get_bot_status_codes,
get_bot_summary,
get_crawl_chart_data,
get_crawled_vs_visited,
)
from app.utils.dates import parse_date_range
from app.utils.htmx import render_htmx_aware
from app.utils.pagination import parse_pagination
@bp.route("/seo")
def seo():
from_date, to_date = parse_date_range(request)
return render_htmx_aware(
request, full_template="seo/index.html", partial_template="seo/_content.html",
from_date=from_date, to_date=to_date,
)
@bp.get("/api/seo/bot-summary")
def api_bot_summary():
from_date, to_date = parse_date_range(request)
return jsonify(data=get_bot_summary(from_date, to_date), meta={"from": from_date.isoformat(), "to": to_date.isoformat()})
@bp.get("/api/seo/crawl-chart-data")
def api_crawl_chart_data():
from_date, to_date = parse_date_range(request)
bot_name = request.args.get("bot")
return jsonify(
data=get_crawl_chart_data(from_date, to_date, bot_name),
meta={"from": from_date.isoformat(), "to": to_date.isoformat(), "bot": bot_name},
)
@bp.get("/api/seo/bot-status-codes")
def api_bot_status_codes():
from_date, to_date = parse_date_range(request)
return jsonify(data=get_bot_status_codes(from_date, to_date), meta={"from": from_date.isoformat(), "to": to_date.isoformat()})
@bp.get("/api/seo/crawled-vs-visited")
def api_crawled_vs_visited():
from_date, to_date = parse_date_range(request)
page, per_page = parse_pagination(request)
rows, total = get_crawled_vs_visited(from_date, to_date, page, per_page)
return jsonify(
data={"rows": rows, "total": total},
meta={"from": from_date.isoformat(), "to": to_date.isoformat(), "page": page, "per_page": per_page},
)