Initial commit
This commit is contained in:
274
AppCode/Village.py
Normal file
274
AppCode/Village.py
Normal file
@@ -0,0 +1,274 @@
|
||||
|
||||
from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required, current_user
|
||||
|
||||
from AppCode.Utilities import RegEx, ResponseHandler, HtmlHelper
|
||||
from AppCode.Log import LogData, LogHelper
|
||||
|
||||
import os
|
||||
import config
|
||||
import re
|
||||
|
||||
import mysql.connector
|
||||
from mysql.connector import Error
|
||||
|
||||
|
||||
class Village:
|
||||
isSuccess = False
|
||||
resultMessage = ""
|
||||
|
||||
def __init__(self):
|
||||
self.isSuccess = False
|
||||
self.resultMessage = ""
|
||||
|
||||
def AddVillage(self, request):
|
||||
|
||||
connection = config.get_db_connection()
|
||||
if not connection:
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.db_connection_failure(), 500)
|
||||
return
|
||||
|
||||
cursor = connection.cursor()
|
||||
|
||||
block_id = request.form.get('block_Id')
|
||||
village_name = request.form.get('Village_Name', '').strip()
|
||||
LogHelper.log_action("Add Village",
|
||||
f"User {current_user.id} adding village '{village_name}' to block '{block_id}'")
|
||||
|
||||
if not block_id:
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.add_failure("block"),
|
||||
400) # Assuming this is a valid response
|
||||
return
|
||||
|
||||
if not re.match(RegEx.patternAlphabetOnly, village_name):
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.invalid_name("village"), 400)
|
||||
return
|
||||
|
||||
try:
|
||||
# Check if the village already exists in the block
|
||||
cursor.callproc("GetVillageByNameAndBlock", (village_name, block_id,))
|
||||
for rs in cursor.stored_results():
|
||||
existing_village = rs.fetchone()
|
||||
|
||||
if existing_village:
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.already_exists("village"), 409)
|
||||
return
|
||||
|
||||
# Insert new village
|
||||
cursor.callproc('SaveVillage', (village_name, block_id))
|
||||
connection.commit()
|
||||
self.isSuccess = True
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.add_success("village"), 200)
|
||||
return
|
||||
|
||||
except mysql.connector.Error as e:
|
||||
print(f"Database Error: {e}")
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.add_failure("village"), 500)
|
||||
return
|
||||
finally:
|
||||
cursor.close()
|
||||
connection.close()
|
||||
|
||||
def GetAllVillages(self, request):
|
||||
|
||||
villages = []
|
||||
connection = config.get_db_connection()
|
||||
|
||||
self.isSuccess = False
|
||||
self.resultMessage = ""
|
||||
|
||||
if not connection:
|
||||
return []
|
||||
|
||||
cursor = connection.cursor()
|
||||
|
||||
try:
|
||||
cursor.callproc("GetAllVillages")
|
||||
for result in cursor.stored_results():
|
||||
villages = result.fetchall()
|
||||
self.isSuccess = True
|
||||
|
||||
except mysql.connector.Error as e:
|
||||
print(f"Error fetching villages: {e}")
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.fetch_failure("village"), 500)
|
||||
return []
|
||||
|
||||
finally:
|
||||
cursor.close()
|
||||
connection.close()
|
||||
|
||||
return villages
|
||||
|
||||
def CheckVillage(self, request):
|
||||
|
||||
self.isSuccess = False
|
||||
self.resultMessage = ""
|
||||
connection = config.get_db_connection()
|
||||
|
||||
if not connection:
|
||||
return HtmlHelper.json_response(ResponseHandler.db_connection_failure(), 500)
|
||||
|
||||
cursor = connection.cursor()
|
||||
|
||||
block_id = request.form.get('block_Id')
|
||||
village_name = request.form.get('Village_Name', '').strip()
|
||||
LogHelper.log_action("Check Village",
|
||||
f"User {current_user.id} checked village '{village_name}' in block '{block_id}'")
|
||||
|
||||
if not re.match(RegEx.patternAlphabetOnly, village_name):
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.invalid_name("village"), 400)
|
||||
return self.resultMessage
|
||||
|
||||
if not block_id or not village_name:
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(
|
||||
{'status': 'error', 'message': 'Block and Village Name are required!'}, 400)
|
||||
return self.resultMessage
|
||||
|
||||
try:
|
||||
cursor.callproc("GetVillageByNameAndBlocks", (village_name, block_id))
|
||||
for rs in cursor.stored_results():
|
||||
existing_village = rs.fetchone()
|
||||
|
||||
if existing_village:
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.already_exists("village"), 409)
|
||||
else:
|
||||
self.isSuccess = True
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.is_available("village"), 200)
|
||||
|
||||
return self.resultMessage
|
||||
|
||||
except mysql.connector.Error as e:
|
||||
print(f"Error checking village: {e}")
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.add_failure("village"), 500)
|
||||
return self.resultMessage
|
||||
finally:
|
||||
cursor.close()
|
||||
connection.close()
|
||||
|
||||
def DeleteVillage(self, request, village_id):
|
||||
|
||||
self.isSuccess = False
|
||||
self.resultMessage = ""
|
||||
connection = config.get_db_connection()
|
||||
cursor = connection.cursor()
|
||||
LogHelper.log_action("Delete Village", f"User {current_user.id} deleted village '{village_id}'")
|
||||
|
||||
try:
|
||||
cursor.callproc("DeleteVillage", (village_id,))
|
||||
connection.commit()
|
||||
self.resultMessage = ResponseHandler.delete_success("village") # Simple message, route will handle redirect
|
||||
self.isSuccess = True
|
||||
except mysql.connector.Error as e:
|
||||
print(f"Error deleting village: {e}")
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.delete_failure("village"), 500)
|
||||
finally:
|
||||
cursor.close()
|
||||
connection.close()
|
||||
|
||||
return self.resultMessage
|
||||
|
||||
def EditVillage(self, request, village_id):
|
||||
|
||||
self.isSuccess = False
|
||||
self.resultMessage = ""
|
||||
connection = config.get_db_connection()
|
||||
cursor = connection.cursor()
|
||||
|
||||
village_name = request.form['Village_Name'].strip()
|
||||
block_id = request.form['block_Id']
|
||||
LogHelper.log_action("Edit Village",
|
||||
f"User {current_user.id} edited village '{village_id}' to name '{village_name}'")
|
||||
|
||||
if not re.match(RegEx.patternAlphabetOnly, village_name):
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.invalid_name("village"), 400)
|
||||
return self.resultMessage
|
||||
|
||||
try:
|
||||
# Using the stored procedure pattern from your State class
|
||||
cursor.callproc("UpdateVillage", (village_id, block_id, village_name,))
|
||||
|
||||
connection.commit()
|
||||
self.isSuccess = True
|
||||
self.resultMessage = ResponseHandler.update_success("village")
|
||||
except mysql.connector.Error as e:
|
||||
print(f"Error updating data: {e}")
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.update_failure("village"), 500)
|
||||
finally:
|
||||
cursor.close()
|
||||
connection.close()
|
||||
|
||||
return self.resultMessage
|
||||
|
||||
def GetVillageByID(self, request, id):
|
||||
|
||||
village_data = None
|
||||
self.isSuccess = False
|
||||
self.resultMessage = ""
|
||||
connection = config.get_db_connection()
|
||||
|
||||
if not connection:
|
||||
return None
|
||||
|
||||
cursor = connection.cursor()
|
||||
|
||||
try:
|
||||
cursor.callproc("GetVillageDetailsById", (id,))
|
||||
for rs in cursor.stored_results():
|
||||
village_data = rs.fetchone()
|
||||
|
||||
if village_data:
|
||||
self.isSuccess = True
|
||||
self.resultMessage = "Success in Fetching"
|
||||
else:
|
||||
self.isSuccess = False
|
||||
self.resultMessage = "Village Not Found"
|
||||
|
||||
except mysql.connector.Error as e:
|
||||
print(f"Error fetching village: {e}")
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.fetch_failure("village"), 500)
|
||||
finally:
|
||||
cursor.close()
|
||||
connection.close()
|
||||
|
||||
return village_data
|
||||
|
||||
def GetAllBlocks(self, request):
|
||||
|
||||
blocks = []
|
||||
self.isSuccess = False
|
||||
self.resultMessage = ""
|
||||
connection = config.get_db_connection()
|
||||
|
||||
if not connection:
|
||||
return []
|
||||
|
||||
cursor = connection.cursor()
|
||||
|
||||
try:
|
||||
cursor.callproc('GetAllBlocks')
|
||||
for result in cursor.stored_results():
|
||||
blocks = result.fetchall()
|
||||
self.isSuccess = True
|
||||
|
||||
except mysql.connector.Error as e:
|
||||
print(f"Error fetching blocks: {e}")
|
||||
self.isSuccess = False
|
||||
self.resultMessage = HtmlHelper.json_response(ResponseHandler.fetch_failure("block"), 500)
|
||||
finally:
|
||||
cursor.close()
|
||||
connection.close()
|
||||
|
||||
return blocks
|
||||
Reference in New Issue
Block a user