add stats endpoint

This commit is contained in:
Laura Klünder 2024-03-29 14:17:07 +01:00
parent e5095ee595
commit 980520b590
3 changed files with 29 additions and 0 deletions

View file

@ -130,3 +130,10 @@ class AnyGeometrySchema(BaseSchema):
"""
type: NonEmptyStr
coordinates: Any
class StatsSchema(BaseSchema):
users_total: int
reports_total: int
reports_today: int
reports_open: int

20
src/c3nav/api/stats.py Normal file
View file

@ -0,0 +1,20 @@
from datetime import datetime
from django.contrib.auth import get_user_model
from django.core.handlers.wsgi import WSGIRequest
from ninja import Router as APIRouter
from c3nav.api.schema import StatsSchema
from c3nav.mapdata.models.report import Report
stats_api_router = APIRouter(tags=["stats"])
@stats_api_router.get('/stats/', auth=None, summary="get stats")
def stats(request: WSGIRequest) -> StatsSchema:
return StatsSchema(
users_total=get_user_model().objects.count(),
reports_total=Report.objects.count(),
reports_open=Report.objects.filter(open=True).count(),
reports_today=Report.objects.filter(created__date=datetime.today().date()).count(),
)

View file

@ -5,6 +5,7 @@ from django.views.generic.base import RedirectView
from c3nav.api.api import auth_api_router
from c3nav.api.ninja import ninja_api
from c3nav.api.settings import settings_api_router
from c3nav.api.stats import stats_api_router
from c3nav.editor.api.endpoints import editor_api_router
from c3nav.mapdata.api.map import map_api_router
from c3nav.mapdata.api.mapdata import mapdata_api_router
@ -23,6 +24,7 @@ ninja_api.add_router("/positioning/", positioning_api_router)
ninja_api.add_router("/mapdata/", mapdata_api_router)
ninja_api.add_router("/editor/", editor_api_router)
ninja_api.add_router("/settings/", settings_api_router)
ninja_api.add_router("/stats/", stats_api_router)
if settings.ENABLE_MESH:
from c3nav.mesh.api import mesh_api_router
ninja_api.add_router("/mesh/", mesh_api_router)