Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
243 changes: 134 additions & 109 deletions dpr/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
get_factory_data,
get_mining_data,
get_green_credit_data,
get_intersecting_village_ids,
get_intersecting_village_ids
)
from .gen_tehsil_report import (
get_tehsil_data,
Expand All @@ -85,6 +85,7 @@
get_agroforestry_transition_data,
)
from .gen_village_report import (
load_block_sheets,
get_village_polygon_and_info,
get_development_data,
get_block_development_data,
Expand All @@ -97,6 +98,9 @@
get_community_institutes,
get_livelihood_diversification,
get_livestock_management,
get_livestock_count,
get_land_cultivation,
get_all_villages_land_cultivation,
get_irrigation_Infra,
get_agri_support_service,
get_ecological_climate_resiliance,
Expand Down Expand Up @@ -169,7 +173,7 @@ def generate_dpr(request):
try:
plan_id = request.data.get("plan_id")
email_id = request.data.get("email_id")
language = request.data.get("language")
# language = request.data.get("language")
regenerate = request.data.get("regenerate", False)

logger.info(
Expand All @@ -193,9 +197,7 @@ def generate_dpr(request):
{"error": "Plan not found"}, status=status.HTTP_404_NOT_FOUND
)

generate_dpr_task.apply_async(
args=[plan_id, email_id, language, regenerate], queue="dpr"
)
generate_dpr_task.apply_async(args=[plan_id, email_id, regenerate], queue="dpr")

return Response(
{
Expand Down Expand Up @@ -339,11 +341,11 @@ def generate_mws_report(request):
village_ids = get_intersecting_village_ids(state, district, block, uid)

context = {
"state": state,
"state" : state,
"district": district,
"block": block,
"mws_id": uid,
"base_url": BASE_API_URL,
"base_url" : BASE_API_URL,
"block_osm": parameter_block,
"mws_osm": parameter_mws,
"terrain_mws": terrain_mws,
Expand Down Expand Up @@ -405,7 +407,7 @@ def generate_mws_report(request):
"factory_desc": factory_desc,
"mining_desc": mining_desc,
"green_credit_desc": green_credits,
"village_ids": json.dumps(village_ids),
"village_ids" : json.dumps(village_ids)
}

# print("Api Processing End 1", datetime.now())
Expand Down Expand Up @@ -606,160 +608,183 @@ def generate_village_report(request):
"""
Generate comprehensive village report with all sections.
"""
state = request.GET.get("state")
district = request.GET.get("district")
block = request.GET.get("block")
village_id = request.GET.get("villageId")

if village_id == "0":
return render(
request,
"village-report-unavailable.html",
{
"state": state,
"district": district,
"block": block,
},
)
state = request.GET.get('state')
district = request.GET.get('district')
block = request.GET.get('block')
village_id = request.GET.get('villageId')

if village_id == '0':
return render(request, 'village-report-unavailable.html', {
'state': state,
'district': district,
'block': block,
})

# Load all Excel sheets once — shared by every data function below
df, df_facilities, df_nrega, df_livestock = load_block_sheets(state, district, block)

# Get village polygon and info from GeoServer
village_data = get_village_polygon_and_info(state, district, block, village_id)

# Get Development Scores
development_score = get_development_data(state, district, block, village_id)
block_development_score = get_block_development_data(state, district, block)
development_score = get_development_data(state, district, block, village_id, df=df, df_facilities=df_facilities, df_nrega=df_nrega)
block_development_score = get_block_development_data(state, district, block, df=df, df_facilities=df_facilities, df_nrega=df_nrega)

# Calculate demographic data with percentages
demographic_data = calculate_demographics(village_data["properties"])
demographic_data = calculate_demographics(village_data['properties'])

# Calculate Basic Infra
basic_infra_data = get_basic_infrastructure(state, district, block, village_id)
basic_infra_data = get_basic_infrastructure(state, district, block, village_id, df=df)
# Convert scores to performance categories
basic_infra_performance = [
"Low" if score <= 0.33 else "High" if score > 0.66 else "Medium"
'Low' if score <= 0.33 else 'High' if score > 0.66 else 'Medium'
for score in basic_infra_data
]

# Calculate Health and Wash
health_wash_data = get_health_and_wash(state, district, block, village_id)
health_wash_data = get_health_and_wash(state, district, block, village_id, df=df, df_facilities=df_facilities)
health_wash_performance = [
# Maternal & Child Health (High / Low only)
"High" if health_wash_data[0] > 0.66 else "Low",

# Water & Sanitation (High / Medium / Low)
(
"Low"
if health_wash_data[1] <= 0.33
else "High" if health_wash_data[1] > 0.66 else "Medium"
),
else "High"
if health_wash_data[1] > 0.66
else "Medium"
)
]

# Calculate Education Institutions
education_data = get_education_institutions(state, district, block, village_id)
#Calculate Education Institutions
education_data = get_education_institutions(state, district, block, village_id, df_facilities=df_facilities)

# Calculate Financial Inclusion
finance_data = get_financial_inclusion(state, district, block, village_id)
finance_data = get_financial_inclusion(state, district, block, village_id, df_facilities=df_facilities)

# Calculate Welfare
welfare_data = get_welfare_inclusion(state, district, block, village_id)
#Calculate Welfare
welfare_data = get_welfare_inclusion(state, district, block, village_id, df=df, df_facilities=df_facilities)

# Calculate Community Institutions
community_data = get_community_institutes(state, district, block, village_id)
#Calculate Community Institutions
community_data = get_community_institutes(state, district, block, village_id, df=df)

# Livelihood Diversification
livelihood_data = get_livelihood_diversification(state, district, block, village_id)
#Livelihood Diversification
livelihood_data = get_livelihood_diversification(state, district, block, village_id, df=df)

# Livestock Management
livestock_data = get_livestock_management(state, district, block, village_id)
#Livestock Management
livestock_data = get_livestock_management(state, district, block, village_id, df=df, df_facilities=df_facilities)
livestock_count_data = get_livestock_count(state, district, block, village_id, df_livestock=df_livestock)

# Irrigation data
irrigation_data = get_irrigation_Infra(state, district, block, village_id)
#Land Cultivation
land_cultivation_data = get_land_cultivation(state, district, block, village_id, df=df)

# Agriculture Support
agri_support_data = get_agri_support_service(state, district, block, village_id)
#Irrigation data
irrigation_data = get_irrigation_Infra(state, district, block, village_id, df=df)

# Climate Resiliance
climate_resiliance_data = get_ecological_climate_resiliance(
state, district, block, village_id
)
#Agriculture Support
agri_support_data = get_agri_support_service(state, district, block, village_id, df=df, df_facilities=df_facilities)

#Climate Resiliance
climate_resiliance_data = get_ecological_climate_resiliance(state, district, block, village_id, df=df, df_nrega=df_nrega)

# Map Data
basic_infra_map = get_all_villages_basic_infrastructure(state, district, block)
health_wash_map = get_all_villages_health_and_wash(state, district, block)
education_map = get_all_villages_education_institutions(state, district, block)
financial_map = get_all_villages_financial_inclusion(state, district, block)
welfare_map = get_all_villages_welfare_inclusion(state, district, block)
community_map = get_all_villages_community_institutes(state, district, block)
livestock_map = get_all_villages_livestock_management(state, district, block)
irrigation_infra_map = get_all_villages_irrigation_infra(state, district, block)
agri_support_map = get_all_villages_agri_support_service(state, district, block)
climate_resiliance_map = get_all_villages_ecological_climate_resiliance(
state, district, block
)

#Map Data
basic_infra_map = get_all_villages_basic_infrastructure(state, district, block, df=df, df_nrega=df_nrega)
health_wash_map = get_all_villages_health_and_wash(state, district, block, df=df)
education_map = get_all_villages_education_institutions(state, district, block, df_facilities=df_facilities, df_nrega=df_nrega)
financial_map = get_all_villages_financial_inclusion(state, district, block, df_facilities=df_facilities, df_nrega=df_nrega)
welfare_map = get_all_villages_welfare_inclusion(state, district, block, df=df, df_facilities=df_facilities, df_nrega=df_nrega)
community_map = get_all_villages_community_institutes(state, district, block, df=df)
livestock_map = get_all_villages_livestock_management(state, district, block, df=df, df_facilities=df_facilities)
land_cultivation_map = get_all_villages_land_cultivation(state, district, block, df=df)
irrigation_infra_map = get_all_villages_irrigation_infra(state, district, block, df=df)
agri_support_map = get_all_villages_agri_support_service(state, district, block, df=df, df_facilities=df_facilities)
climate_resiliance_map = get_all_villages_ecological_climate_resiliance(state, district, block, df=df, df_nrega=df_nrega)

mws_ids = get_mwses_ids(state, district, block, village_id)
mws_pattern_intensity = get_pattern_intensity(state, district, block)

# Build context for template
context = {
# Location info
"state": state,
"district": district,
"block": block,
"village_id": village_id,
"base_url": BASE_API_URL,
"village_name": village_data["village_name"],
"gram_panchayat_name": village_data["gram_panchayat_name"],
"area_hectares": village_data["area_hectares"],
"village_polygon": json.dumps(village_data["village_polygon"]),
"base_url" : BASE_API_URL,
"village_name": village_data['village_name'],
"gram_panchayat_name": village_data['gram_panchayat_name'],
"area_hectares": village_data['area_hectares'],
"village_polygon": json.dumps(village_data['village_polygon']),

# RADAR CHART DATA
"village_scores": json.dumps(development_score),
"block_average_scores": json.dumps(block_development_score),

# DEMOGRAPHIC DATA
"demographic_data": demographic_data,

# BASIC INFRASTRUCTURE DATA
"basic_infra_data": json.dumps(basic_infra_data),
"basic_infra_data" : json.dumps(basic_infra_data),
"basic_infra_performance": basic_infra_performance,

# HEALTH AND WASH DATA
"health_wash_data": json.dumps(health_wash_data),
"health_wash_performance": health_wash_performance,
# Education Data
"education_data": json.dumps(education_data),
# Finance Data
"finance_data": json.dumps(finance_data),
# Welfare Inclusion
"welfare_data": json.dumps(welfare_data),
# Community Institutions
"community_data": json.dumps(community_data),
# Livelihood Diversification
"livelihood_data": json.dumps(livelihood_data),
# Livestock Management
"livestock_data": json.dumps(livestock_data),
# Irrigation Data
"irrigation_data": json.dumps(irrigation_data),
# Agri Support Data
"agri_support_data": json.dumps(agri_support_data),
# Climate Data
"climate_resiliance_data": json.dumps(climate_resiliance_data),
"village_polygon": json.dumps(village_data["village_polygon"]),
"basic_infra_map": json.dumps(basic_infra_map),
"health_wash_map": json.dumps(health_wash_map),
"education_map": json.dumps(education_map),
"financial_map": json.dumps(financial_map),
"welfare_map": json.dumps(welfare_map),
"community_map": json.dumps(community_map),
"livestock_map": json.dumps(livestock_map),
"irrigation_infra_map": json.dumps(irrigation_infra_map),
"agri_support_map": json.dumps(agri_support_map),
"climate_resiliance_map": json.dumps(climate_resiliance_map),
"mws_ids": json.dumps(mws_ids),
"pattern_intensity": json.dumps(mws_pattern_intensity["intensity"]),
"mws_active_patterns": json.dumps(mws_pattern_intensity["mws_active_patterns"]),
"pattern_display_mapping": json.dumps(
mws_pattern_intensity["pattern_display_mapping"]
),
}
"health_wash_data" : json.dumps(health_wash_data),
"health_wash_performance" : health_wash_performance,

#Education Data
"education_data" : json.dumps(education_data),

#Finance Data
"finance_data" : json.dumps(finance_data),

#Welfare Inclusion
"welfare_data" : json.dumps(welfare_data),

#Community Institutions
"community_data" : json.dumps(community_data),

#Livelihood Diversification
"livelihood_data" : json.dumps(livelihood_data),

#Livestock Management
"livestock_data" : json.dumps(livestock_data),
"livestock_count_data" : json.dumps(livestock_count_data),

return render(request, "village-report.html", context)
#Land Cultivation
"land_cultivation_data" : json.dumps(land_cultivation_data),

#Irrigation Data
"irrigation_data" : json.dumps(irrigation_data),

#Agri Support Data
"agri_support_data" : json.dumps(agri_support_data),

#Climate Data
"climate_resiliance_data" : json.dumps(climate_resiliance_data),

"village_polygon": json.dumps(village_data['village_polygon']),

"basic_infra_map" : json.dumps(basic_infra_map),
"health_wash_map" : json.dumps(health_wash_map),
"education_map" : json.dumps(education_map),
"financial_map" : json.dumps(financial_map),
"welfare_map" : json.dumps(welfare_map),
"community_map" : json.dumps(community_map),
"livestock_map" : json.dumps(livestock_map),
"land_cultivation_map" : json.dumps(land_cultivation_map),
"irrigation_infra_map" : json.dumps(irrigation_infra_map),
"agri_support_map" : json.dumps(agri_support_map),
"climate_resiliance_map" : json.dumps(climate_resiliance_map),

"mws_ids" : json.dumps(mws_ids),
"pattern_intensity": json.dumps(mws_pattern_intensity['intensity']),
"mws_active_patterns": json.dumps(mws_pattern_intensity['mws_active_patterns']),
"pattern_display_mapping": json.dumps(mws_pattern_intensity['pattern_display_mapping']),
}

return render(request, 'village-report.html', context)


# ---------------------------------------------------------------------------
Expand Down
Loading