2026-03-23 11:37:15 +05:30
|
|
|
from flask import Blueprint, render_template, request, redirect, url_for, flash, jsonify
|
|
|
|
|
from flask_login import login_required
|
|
|
|
|
|
|
|
|
|
import config
|
|
|
|
|
from model.Village import Village
|
|
|
|
|
from model.State import State
|
|
|
|
|
|
|
|
|
|
# Create Blueprint
|
|
|
|
|
village_bp = Blueprint('village', __name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ------------------------- Add Village -------------------------
|
|
|
|
|
@village_bp.route('/add_village', methods=['GET', 'POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def add_village():
|
|
|
|
|
|
|
|
|
|
village = Village()
|
2026-03-24 11:28:14 +05:30
|
|
|
|
2026-03-23 11:37:15 +05:30
|
|
|
if request.method == 'POST':
|
|
|
|
|
village.AddVillage(request=request)
|
|
|
|
|
return village.resultMessage
|
|
|
|
|
|
|
|
|
|
state = State()
|
|
|
|
|
states = state.GetAllStates(request=request)
|
|
|
|
|
villages = village.GetAllVillages(request=request)
|
|
|
|
|
|
|
|
|
|
return render_template(
|
|
|
|
|
'add_village.html',
|
|
|
|
|
states=states,
|
|
|
|
|
villages=villages
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ------------------------- Fetch Districts -------------------------
|
|
|
|
|
@village_bp.route('/get_districts/<int:state_id>')
|
|
|
|
|
@login_required
|
|
|
|
|
def get_districts(state_id):
|
|
|
|
|
|
|
|
|
|
connection = config.get_db_connection()
|
|
|
|
|
cursor = connection.cursor()
|
|
|
|
|
|
|
|
|
|
cursor.callproc("GetDistrictByStateID", [state_id])
|
|
|
|
|
districts = []
|
|
|
|
|
|
|
|
|
|
for rs in cursor.stored_results():
|
|
|
|
|
districts = rs.fetchall()
|
|
|
|
|
|
|
|
|
|
cursor.close()
|
|
|
|
|
connection.close()
|
|
|
|
|
|
2026-03-23 13:09:34 +05:30
|
|
|
return jsonify([{"id": d[0], "name": d[1]} for d in districts])
|
2026-03-23 11:37:15 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
# ------------------------- Fetch Blocks -------------------------
|
|
|
|
|
@village_bp.route('/get_blocks/<int:district_id>')
|
|
|
|
|
@login_required
|
|
|
|
|
def get_blocks(district_id):
|
|
|
|
|
|
|
|
|
|
connection = config.get_db_connection()
|
|
|
|
|
cursor = connection.cursor()
|
|
|
|
|
|
|
|
|
|
cursor.callproc("GetBlocksByDistrictID", [district_id])
|
|
|
|
|
blocks = []
|
|
|
|
|
|
|
|
|
|
for rs in cursor.stored_results():
|
|
|
|
|
blocks = rs.fetchall()
|
|
|
|
|
|
|
|
|
|
cursor.close()
|
|
|
|
|
connection.close()
|
|
|
|
|
|
2026-03-23 13:09:34 +05:30
|
|
|
return jsonify([{"id": b[0], "name": b[1]} for b in blocks])
|
2026-03-23 11:37:15 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
# ------------------------- Check Village -------------------------
|
|
|
|
|
@village_bp.route('/check_village', methods=['POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def check_village():
|
|
|
|
|
village = Village()
|
|
|
|
|
return village.CheckVillage(request=request)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@village_bp.route('/delete_village/<int:village_id>')
|
|
|
|
|
@login_required
|
|
|
|
|
def delete_village(village_id):
|
|
|
|
|
village = Village()
|
|
|
|
|
village.DeleteVillage(request=request, village_id=village_id)
|
|
|
|
|
|
2026-03-30 11:36:16 +05:30
|
|
|
# Convert resultMessage to string if it's a Response or tuple
|
2026-03-24 13:41:00 +05:30
|
|
|
raw_msg = village.resultMessage
|
|
|
|
|
|
|
|
|
|
if isinstance(raw_msg, tuple):
|
|
|
|
|
msg = "Village deleted successfully!"
|
|
|
|
|
elif hasattr(raw_msg, 'get_data'):
|
|
|
|
|
# Flask Response object
|
2026-03-30 11:36:16 +05:30
|
|
|
msg = raw_msg.get_data(as_text=True)
|
2026-03-24 13:41:00 +05:30
|
|
|
else:
|
|
|
|
|
# fallback
|
|
|
|
|
msg = str(raw_msg) if raw_msg else "Village deleted successfully!"
|
|
|
|
|
|
|
|
|
|
return jsonify({
|
|
|
|
|
"status": "success" if village.isSuccess else "error",
|
|
|
|
|
"message": msg
|
|
|
|
|
})
|
2026-03-23 11:37:15 +05:30
|
|
|
|
|
|
|
|
# ------------------------- Edit Village -------------------------
|
|
|
|
|
@village_bp.route('/edit_village/<int:village_id>', methods=['GET', 'POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def edit_village(village_id):
|
|
|
|
|
|
|
|
|
|
village = Village()
|
|
|
|
|
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
|
|
|
|
|
village.EditVillage(request=request, village_id=village_id)
|
|
|
|
|
|
|
|
|
|
if village.isSuccess:
|
|
|
|
|
flash(village.resultMessage, "success")
|
|
|
|
|
return redirect(url_for('village.add_village'))
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
flash(village.resultMessage, "error")
|
|
|
|
|
|
2026-03-23 13:09:34 +05:30
|
|
|
village_data = village.GetVillageByID(id=village_id) or []
|
|
|
|
|
blocks = village.GetAllBlocks() or []
|
2026-03-23 11:37:15 +05:30
|
|
|
|
|
|
|
|
return render_template(
|
|
|
|
|
'edit_village.html',
|
|
|
|
|
village_data=village_data,
|
|
|
|
|
blocks=blocks
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
else:
|
2026-03-23 13:09:34 +05:30
|
|
|
village_data = village.GetVillageByID(id=village_id)
|
2026-03-23 11:37:15 +05:30
|
|
|
|
|
|
|
|
if not village.isSuccess:
|
|
|
|
|
flash(village.resultMessage, "error")
|
|
|
|
|
return redirect(url_for('village.add_village'))
|
|
|
|
|
|
2026-03-23 13:09:34 +05:30
|
|
|
blocks = village.GetAllBlocks() or []
|
2026-03-23 11:37:15 +05:30
|
|
|
|
|
|
|
|
return render_template(
|
|
|
|
|
'edit_village.html',
|
2026-03-23 13:09:34 +05:30
|
|
|
village_data=village_data or [],
|
2026-03-23 11:37:15 +05:30
|
|
|
blocks=blocks
|
|
|
|
|
)
|