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() 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/') @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() district_list = [] for d in districts: district_list.append({ "id": d[0], "name": d[1] }) return jsonify(district_list) # ------------------------- Fetch Blocks ------------------------- @village_bp.route('/get_blocks/') @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() block_list = [] for b in blocks: block_list.append({ "id": b[0], "name": b[1] }) return jsonify(block_list) # ------------------------- Check Village ------------------------- @village_bp.route('/check_village', methods=['POST']) @login_required def check_village(): village = Village() return village.CheckVillage(request=request) # ------------------------- Delete Village ------------------------- @village_bp.route('/delete_village/') @login_required def delete_village(village_id): village = Village() village.DeleteVillage(request=request, village_id=village_id) if not village.isSuccess: flash(village.resultMessage, "error") else: flash(village.resultMessage, "success") return redirect(url_for('village.add_village')) # ------------------------- Edit Village ------------------------- @village_bp.route('/edit_village/', 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") village_data = village.GetVillageByID(request=request, id=village_id) blocks = village.GetAllBlocks(request=request) return render_template( 'edit_village.html', village_data=village_data, blocks=blocks ) else: village_data = village.GetVillageByID(request=request, id=village_id) if not village.isSuccess: flash(village.resultMessage, "error") return redirect(url_for('village.add_village')) blocks = village.GetAllBlocks(request=request) if village_data is None: village_data = [] if blocks is None: blocks = [] return render_template( 'edit_village.html', village_data=village_data, blocks=blocks )