From d6df49646fe85494ff421770dad4a4242b9452c8 Mon Sep 17 00:00:00 2001 From: Anuj-Gupta4 Date: Tue, 11 Feb 2025 10:31:05 +0545 Subject: [PATCH] feat(submission): add date range filter for geojson download --- .../app/submissions/submission_routes.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/backend/app/submissions/submission_routes.py b/src/backend/app/submissions/submission_routes.py index c74538940f..2af8a5418d 100644 --- a/src/backend/app/submissions/submission_routes.py +++ b/src/backend/app/submissions/submission_routes.py @@ -402,10 +402,25 @@ async def update_review_state( @router.get("/download-submission-geojson") async def download_submission_geojson( project_user: Annotated[ProjectUserDict, Depends(project_contributors)], + submitted_date_range: Optional[str] = Query( + None, + title="Submitted Date Range", + description="Date range in format (e.g., 'YYYY-MM-DD,YYYY-MM-DD')", + ), ): """Download submission geojson for a specific project.""" project = project_user.get("project") - data = await submission_crud.get_submission_by_project(project, {}) + filters = {} + + if submitted_date_range: + start_date, end_date = submitted_date_range.split(",") + filters = { + "$filter": ( + f"__system/submissionDate ge {start_date}T00:00:00+00:00 " + f"and __system/submissionDate le {end_date}T23:59:59.999+00:00" + ) + } + data = await submission_crud.get_submission_by_project(project, filters) submission_json = data.get("value", []) submission_geojson = await central_crud.convert_odk_submission_json_to_geojson(