add stats endpoint
This commit is contained in:
parent
e5095ee595
commit
980520b590
3 changed files with 29 additions and 0 deletions
|
@ -130,3 +130,10 @@ class AnyGeometrySchema(BaseSchema):
|
||||||
"""
|
"""
|
||||||
type: NonEmptyStr
|
type: NonEmptyStr
|
||||||
coordinates: Any
|
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
20
src/c3nav/api/stats.py
Normal 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(),
|
||||||
|
)
|
|
@ -5,6 +5,7 @@ from django.views.generic.base import RedirectView
|
||||||
from c3nav.api.api import auth_api_router
|
from c3nav.api.api import auth_api_router
|
||||||
from c3nav.api.ninja import ninja_api
|
from c3nav.api.ninja import ninja_api
|
||||||
from c3nav.api.settings import settings_api_router
|
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.editor.api.endpoints import editor_api_router
|
||||||
from c3nav.mapdata.api.map import map_api_router
|
from c3nav.mapdata.api.map import map_api_router
|
||||||
from c3nav.mapdata.api.mapdata import mapdata_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("/mapdata/", mapdata_api_router)
|
||||||
ninja_api.add_router("/editor/", editor_api_router)
|
ninja_api.add_router("/editor/", editor_api_router)
|
||||||
ninja_api.add_router("/settings/", settings_api_router)
|
ninja_api.add_router("/settings/", settings_api_router)
|
||||||
|
ninja_api.add_router("/stats/", stats_api_router)
|
||||||
if settings.ENABLE_MESH:
|
if settings.ENABLE_MESH:
|
||||||
from c3nav.mesh.api import mesh_api_router
|
from c3nav.mesh.api import mesh_api_router
|
||||||
ninja_api.add_router("/mesh/", mesh_api_router)
|
ninja_api.add_router("/mesh/", mesh_api_router)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue