diff --git a/plans/api.py b/plans/api.py index 533a26f3..cd3ed18a 100644 --- a/plans/api.py +++ b/plans/api.py @@ -36,9 +36,11 @@ logger = logging.getLogger(__name__) from .build_layer import build_layer -from .models import ODKSyncLog, Plan +from .models import ODKSyncLog, PlanApp from .serializers import PlanAppSerializer from .utils import fetch_bearer_token, fetch_db_data +from geoadmin.models import GramPanchayat +from django.db.models import Q _COMMON_REQUIRED_FIELDS: Tuple[str, ...] = ( "layer_name", @@ -756,3 +758,32 @@ def map_plan_to_gp(request): }, } ) + + +@api_view(["GET"]) +@schema(None) +def plan_count(request): + """ + gives plan count on the basis of org_id or project_id and filter + """ + org_id = request.query_params.get("org_id") + project_id = request.query_params.get("project_id") + is_completed = request.query_params.get("is_completed") + + queryset = PlanApp.objects.filter(enabled=True).exclude( + Q(plan__icontains="test") | Q(plan__icontains="demo") + ) + + if is_completed: + queryset = queryset.filter(is_completed=True).exclude( + Q(plan__icontains="test") | Q(plan__icontains="demo") + ) + + if org_id: + plan_count = queryset.filter(organization=org_id).count() + elif project_id: + plan_count = queryset.filter(project=project_id).count() + else: + plan_count = 0 + + return Response({"plan_count": plan_count}) diff --git a/plans/urls.py b/plans/urls.py index 9beec875..675bc64a 100644 --- a/plans/urls.py +++ b/plans/urls.py @@ -46,4 +46,5 @@ path("", include(org_watershed_router.urls)), path("", include(global_router.urls)), path("map_plan_to_gp/", api.map_plan_to_gp, name="map_plan_to_gp"), + path("plan_count/", api.plan_count, name="plan_count"), ] diff --git a/users/signals.py b/users/signals.py index 55d4d1d1..34550fc9 100644 --- a/users/signals.py +++ b/users/signals.py @@ -45,7 +45,7 @@ def send_email_to_org_admin(sender, instance, created, **kwargs):
Please take the following action: