From c5b3e7bd60587c607eb390ad35f8ae3afce279a7 Mon Sep 17 00:00:00 2001 From: pjpatil12 Date: Wed, 11 Mar 2026 13:20:49 +0530 Subject: [PATCH] dataase field updateds and model updateds --- .gitignore | 5 +- app/models/laying_client_model.py | 44 ++--- app/models/laying_model.py | 34 ++-- app/models/manhole_domestic_chamber_model.py | 48 +++--- app/models/manhole_excavation_model.py | 60 +++---- app/models/mh_dc_client_model.py | 32 ++-- app/models/mh_ex_client_model.py | 88 +++++----- app/models/tr_ex_client_model.py | 96 +++++------ app/models/trench_excavation_model.py | 78 ++++----- app/models/user_model.py | 2 +- app/routes/dashboard.py | 140 +++++----------- app/routes/subcontractor_routes.py | 5 +- app/templates/subcontractor/add.html | 5 + app/templates/subcontractor/edit.html | 17 ++ app/templates/subcontractor/list.html | 12 +- app/templates/subcontractor_dashboard.html | 165 +++++++++---------- instance/comparisondb.db | Bin 12288 -> 0 bytes 17 files changed, 391 insertions(+), 440 deletions(-) delete mode 100644 instance/comparisondb.db diff --git a/.gitignore b/.gitignore index 0b50bb3..2eba46a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,8 +13,7 @@ venv # Ignore Log files ss logs/ - -# Ignore db folders -instance/ +*.log + diff --git a/app/models/laying_client_model.py b/app/models/laying_client_model.py index bb9ef3d..0260433 100644 --- a/app/models/laying_client_model.py +++ b/app/models/laying_client_model.py @@ -13,33 +13,33 @@ class LayingClient(db.Model): # Basic Fields Location = db.Column(db.String(500)) MH_NO = db.Column(db.String(100)) - CC_length = db.Column(db.Float) + CC_length = db.Column(db.Float, default=0) # Bedding Qty. - Outer_dia_of_MH_m = db.Column(db.Float) - Bedding_Length = db.Column(db.Float) - Width = db.Column(db.Float) - Depth = db.Column(db.Float) - Qty = db.Column(db.Float) + Outer_dia_of_MH_m = db.Column(db.Float, default=0) + Bedding_Length = db.Column(db.Float, default=0) + Width = db.Column(db.Float, default=0) + Depth = db.Column(db.Float, default=0) + Qty = db.Column(db.Float, default=0) # PIPE LAYING Qty. - Pipe_Dia_mm = db.Column(db.Float) - ID_of_MH_m = db.Column(db.Float) - Laying_Length = db.Column(db.Float) + Pipe_Dia_mm = db.Column(db.Float, default=0) + ID_of_MH_m = db.Column(db.Float, default=0) + Laying_Length = db.Column(db.Float, default=0) - pipe_150_mm = db.Column(db.Float) - pipe_200_mm = db.Column(db.Float) - pipe_250_mm = db.Column(db.Float) - pipe_300_mm = db.Column(db.Float) - pipe_350_mm = db.Column(db.Float) - pipe_400_mm = db.Column(db.Float) - pipe_450_mm = db.Column(db.Float) - pipe_500_mm = db.Column(db.Float) - pipe_600_mm = db.Column(db.Float) - pipe_700_mm = db.Column(db.Float) - pipe_900_mm = db.Column(db.Float) - pipe_1200_mm = db.Column(db.Float) + pipe_150_mm = db.Column(db.Float, default=0) + pipe_200_mm = db.Column(db.Float, default=0) + pipe_250_mm = db.Column(db.Float, default=0) + pipe_300_mm = db.Column(db.Float, default=0) + pipe_350_mm = db.Column(db.Float, default=0) + pipe_400_mm = db.Column(db.Float, default=0) + pipe_450_mm = db.Column(db.Float, default=0) + pipe_500_mm = db.Column(db.Float, default=0) + pipe_600_mm = db.Column(db.Float, default=0) + pipe_700_mm = db.Column(db.Float, default=0) + pipe_900_mm = db.Column(db.Float, default=0) + pipe_1200_mm = db.Column(db.Float, default=0) - Total = db.Column(db.Float) + Total = db.Column(db.Float, default=0) Remarks = db.Column(db.String(500)) RA_Bill_No=db.Column(db.String(500)) diff --git a/app/models/laying_model.py b/app/models/laying_model.py index f193e64..fc1d3c7 100644 --- a/app/models/laying_model.py +++ b/app/models/laying_model.py @@ -17,25 +17,25 @@ class Laying(db.Model): # Pipe Laying Fields Location = db.Column(db.String(500)) MH_NO = db.Column(db.String(100)) - CC_length = db.Column(db.Float) - Pipe_Dia_mm = db.Column(db.Float) - ID_of_MH_m = db.Column(db.Float) - Laying_Length = db.Column(db.Float) + CC_length = db.Column(db.Float, default=0) + Pipe_Dia_mm = db.Column(db.Float, default=0) + ID_of_MH_m = db.Column(db.Float, default=0) + Laying_Length = db.Column(db.Float, default=0) - pipe_150_mm = db.Column(db.Float) - pipe_200_mm = db.Column(db.Float) - pipe_250_mm = db.Column(db.Float) - pipe_300_mm = db.Column(db.Float) - pipe_350_mm = db.Column(db.Float) - pipe_400_mm = db.Column(db.Float) - pipe_450_mm = db.Column(db.Float) - pipe_500_mm = db.Column(db.Float) - pipe_600_mm = db.Column(db.Float) - pipe_700_mm = db.Column(db.Float) - pipe_900_mm = db.Column(db.Float) - pipe_1200_mm = db.Column(db.Float) + pipe_150_mm = db.Column(db.Float, default=0) + pipe_200_mm = db.Column(db.Float, default=0) + pipe_250_mm = db.Column(db.Float, default=0) + pipe_300_mm = db.Column(db.Float, default=0) + pipe_350_mm = db.Column(db.Float, default=0) + pipe_400_mm = db.Column(db.Float, default=0) + pipe_450_mm = db.Column(db.Float, default=0) + pipe_500_mm = db.Column(db.Float, default=0) + pipe_600_mm = db.Column(db.Float, default=0) + pipe_700_mm = db.Column(db.Float, default=0) + pipe_900_mm = db.Column(db.Float, default=0) + pipe_1200_mm = db.Column(db.Float, default=0) - Total = db.Column(db.Float) + Total = db.Column(db.Float, default=0) Remarks = db.Column(db.String(500)) RA_Bill_No=db.Column(db.String(500)) diff --git a/app/models/manhole_domestic_chamber_model.py b/app/models/manhole_domestic_chamber_model.py index 348e2a7..a5ae5ef 100644 --- a/app/models/manhole_domestic_chamber_model.py +++ b/app/models/manhole_domestic_chamber_model.py @@ -18,35 +18,35 @@ class ManholeDomesticChamber(db.Model): # Basic Fields Location = db.Column(db.String(500)) MH_NO = db.Column(db.String(100)) - Depth_of_MH = db.Column(db.Float) + Depth_of_MH = db.Column(db.Float, default=0) # Excavation categories - d_0_to_0_75 = db.Column(db.Float) - d_0_76_to_1_05 = db.Column(db.Float) - d_1_06_to_1_65 = db.Column(db.Float) - d_1_66_to_2_15 = db.Column(db.Float) - d_2_16_to_2_65 = db.Column(db.Float) - d_2_66_to_3_15 = db.Column(db.Float) - d_3_16_to_3_65= db.Column(db.Float) - d_3_66_to_4_15 = db.Column(db.Float) - d_4_16_to_4_65 = db.Column(db.Float) - d_4_66_to_5_15 = db.Column(db.Float) - d_5_16_to_5_65 = db.Column(db.Float) - d_5_66_to_6_15 = db.Column(db.Float) - d_6_16_to_6_65 = db.Column(db.Float) - d_6_66_to_7_15 = db.Column(db.Float) - d_7_16_to_7_65 = db.Column(db.Float) - d_7_66_to_8_15 = db.Column(db.Float) - d_8_16_to_8_65 = db.Column(db.Float) - d_8_66_to_9_15 = db.Column(db.Float) - d_9_16_to_9_65 = db.Column(db.Float) + d_0_to_0_75 = db.Column(db.Float, default=0) + d_0_76_to_1_05 = db.Column(db.Float, default=0) + d_1_06_to_1_65 = db.Column(db.Float, default=0) + d_1_66_to_2_15 = db.Column(db.Float, default=0) + d_2_16_to_2_65 = db.Column(db.Float, default=0) + d_2_66_to_3_15 = db.Column(db.Float, default=0) + d_3_16_to_3_65= db.Column(db.Float, default=0) + d_3_66_to_4_15 = db.Column(db.Float, default=0) + d_4_16_to_4_65 = db.Column(db.Float, default=0) + d_4_66_to_5_15 = db.Column(db.Float, default=0) + d_5_16_to_5_65 = db.Column(db.Float, default=0) + d_5_66_to_6_15 = db.Column(db.Float, default=0) + d_6_16_to_6_65 = db.Column(db.Float, default=0) + d_6_66_to_7_15 = db.Column(db.Float, default=0) + d_7_16_to_7_65 = db.Column(db.Float, default=0) + d_7_66_to_8_15 = db.Column(db.Float, default=0) + d_8_16_to_8_65 = db.Column(db.Float, default=0) + d_8_66_to_9_15 = db.Column(db.Float, default=0) + d_9_16_to_9_65 = db.Column(db.Float, default=0) - Domestic_Chambers = db.Column(db.Float) - DWC_Pipe_Length = db.Column(db.Float) - UPVC_Pipe_Length = db.Column(db.Float) + Domestic_Chambers = db.Column(db.Float, default=0) + DWC_Pipe_Length = db.Column(db.Float, default=0) + UPVC_Pipe_Length = db.Column(db.Float, default=0) RA_Bill_No=db.Column(db.String(500)) - Total = db.Column(db.Float) + Total = db.Column(db.Float, default=0) created_at = db.Column(db.DateTime, default=datetime.today) def __repr__(self): diff --git a/app/models/manhole_excavation_model.py b/app/models/manhole_excavation_model.py index db99751..d0b008f 100644 --- a/app/models/manhole_excavation_model.py +++ b/app/models/manhole_excavation_model.py @@ -15,47 +15,47 @@ class ManholeExcavation(db.Model): Location = db.Column(db.String(500)) MH_NO = db.Column(db.String(100)) - Upto_IL_Depth = db.Column(db.Float) - Cutting_Depth = db.Column(db.Float) - ID_of_MH_m = db.Column(db.Float) - Ex_Dia_of_Manhole = db.Column(db.Float) - Area_of_Manhole = db.Column(db.Float) + Upto_IL_Depth = db.Column(db.Float, default=0) + Cutting_Depth = db.Column(db.Float, default=0) + ID_of_MH_m = db.Column(db.Float, default=0) + Ex_Dia_of_Manhole = db.Column(db.Float, default=0) + Area_of_Manhole = db.Column(db.Float, default=0) # Excavation categories - Soft_Murum_0_to_1_5 = db.Column(db.Float) - Soft_Murum_1_5_to_3_0 = db.Column(db.Float) - Soft_Murum_3_0_to_4_5 = db.Column(db.Float) + Soft_Murum_0_to_1_5 = db.Column(db.Float, default=0) + Soft_Murum_1_5_to_3_0 = db.Column(db.Float, default=0) + Soft_Murum_3_0_to_4_5 = db.Column(db.Float, default=0) - Hard_Murum_0_to_1_5 = db.Column(db.Float) - Hard_Murum_1_5_to_3_0 = db.Column(db.Float) + Hard_Murum_0_to_1_5 = db.Column(db.Float, default=0) + Hard_Murum_1_5_to_3_0 = db.Column(db.Float, default=0) - Soft_Rock_0_to_1_5 = db.Column(db.Float) - Soft_Rock_1_5_to_3_0 = db.Column(db.Float) + Soft_Rock_0_to_1_5 = db.Column(db.Float, default=0) + Soft_Rock_1_5_to_3_0 = db.Column(db.Float, default=0) - Hard_Rock_0_to_1_5 = db.Column(db.Float) - Hard_Rock_1_5_to_3_0 = db.Column(db.Float) - Hard_Rock_3_0_to_4_5 = db.Column(db.Float) - Hard_Rock_4_5_to_6_0 = db.Column(db.Float) - Hard_Rock_6_0_to_7_5 = db.Column(db.Float) + Hard_Rock_0_to_1_5 = db.Column(db.Float, default=0) + Hard_Rock_1_5_to_3_0 = db.Column(db.Float, default=0) + Hard_Rock_3_0_to_4_5 = db.Column(db.Float, default=0) + Hard_Rock_4_5_to_6_0 = db.Column(db.Float, default=0) + Hard_Rock_6_0_to_7_5 = db.Column(db.Float, default=0) # Totals - Soft_Murum_0_to_1_5_total = db.Column(db.Float) - Soft_Murum_1_5_to_3_0_total = db.Column(db.Float) - Soft_Murum_3_0_to_4_5_total = db.Column(db.Float) + Soft_Murum_0_to_1_5_total = db.Column(db.Float, default=0) + Soft_Murum_1_5_to_3_0_total = db.Column(db.Float, default=0) + Soft_Murum_3_0_to_4_5_total = db.Column(db.Float, default=0) - Hard_Murum_0_to_1_5_total = db.Column(db.Float) - Hard_Murum_1_5_and_above_total = db.Column(db.Float) + Hard_Murum_0_to_1_5_total = db.Column(db.Float, default=0) + Hard_Murum_1_5_and_above_total = db.Column(db.Float, default=0) - Soft_Rock_0_to_1_5_total = db.Column(db.Float) - Soft_Rock_1_5_and_above_total = db.Column(db.Float) + Soft_Rock_0_to_1_5_total = db.Column(db.Float, default=0) + Soft_Rock_1_5_and_above_total = db.Column(db.Float, default=0) - Hard_Rock_0_to_1_5_total = db.Column(db.Float) - Hard_Rock_1_5_to_3_0_total = db.Column(db.Float) - Hard_Rock_3_0_to_4_5_total = db.Column(db.Float) - Hard_Rock_4_5_to_6_0_total = db.Column(db.Float) - Hard_Rock_6_0_to_7_5_total = db.Column(db.Float) + Hard_Rock_0_to_1_5_total = db.Column(db.Float, default=0) + Hard_Rock_1_5_to_3_0_total = db.Column(db.Float, default=0) + Hard_Rock_3_0_to_4_5_total = db.Column(db.Float, default=0) + Hard_Rock_4_5_to_6_0_total = db.Column(db.Float, default=0) + Hard_Rock_6_0_to_7_5_total = db.Column(db.Float, default=0) - Total = db.Column(db.Float) + Total = db.Column(db.Float, default=0) Remarks = db.Column(db.String(500)) RA_Bill_No=db.Column(db.String(500)) diff --git a/app/models/mh_dc_client_model.py b/app/models/mh_dc_client_model.py index 8ed661f..6acaaa6 100644 --- a/app/models/mh_dc_client_model.py +++ b/app/models/mh_dc_client_model.py @@ -19,27 +19,27 @@ class ManholeDomesticChamberClient(db.Model): RA_Bill_No=db.Column(db.String(500)) Location = db.Column(db.String(500)) MH_NO = db.Column(db.String(100)) - MH_TOP_LEVEL = db.Column(db.Float) - MH_IL_LEVEL = db.Column(db.Float) - Depth_of_MH = db.Column(db.Float) + MH_TOP_LEVEL = db.Column(db.Float, default=0) + MH_IL_LEVEL = db.Column(db.Float, default=0) + Depth_of_MH = db.Column(db.Float, default=0) # Excavation categories - d_0_to_1_5 = db.Column(db.Float) - d_1_5_to_2_0 = db.Column(db.Float) - d_2_0_to_2_5 = db.Column(db.Float) - d_2_5_to_3_0 = db.Column(db.Float) - d_3_0_to_3_5 = db.Column(db.Float) - d_3_5_to_4_0 = db.Column(db.Float) - d_4_0_to_4_5= db.Column(db.Float) - d_4_5_to_5_0 = db.Column(db.Float) - d_5_0_to_5_5 = db.Column(db.Float) - d_5_5_to_6_0 = db.Column(db.Float) - d_6_0_to_6_5 = db.Column(db.Float) + d_0_to_1_5 = db.Column(db.Float, default=0) + d_1_5_to_2_0 = db.Column(db.Float, default=0) + d_2_0_to_2_5 = db.Column(db.Float, default=0) + d_2_5_to_3_0 = db.Column(db.Float, default=0) + d_3_0_to_3_5 = db.Column(db.Float, default=0) + d_3_5_to_4_0 = db.Column(db.Float, default=0) + d_4_0_to_4_5= db.Column(db.Float, default=0) + d_4_5_to_5_0 = db.Column(db.Float, default=0) + d_5_0_to_5_5 = db.Column(db.Float, default=0) + d_5_5_to_6_0 = db.Column(db.Float, default=0) + d_6_0_to_6_5 = db.Column(db.Float, default=0) - Domestic_Chambers = db.Column(db.Float) + Domestic_Chambers = db.Column(db.Float, default=0) - Total = db.Column(db.Float) + Total = db.Column(db.Float, default=0) created_at = db.Column(db.DateTime, default=datetime.today) def __repr__(self): diff --git a/app/models/mh_ex_client_model.py b/app/models/mh_ex_client_model.py index ba8adb9..7ce2657 100644 --- a/app/models/mh_ex_client_model.py +++ b/app/models/mh_ex_client_model.py @@ -15,65 +15,65 @@ class ManholeExcavationClient(db.Model): RA_Bill_No=db.Column(db.String(500)) Location = db.Column(db.String(500)) MH_NO = db.Column(db.String(100)) - Ground_Level = db.Column(db.Float) - MH_Invert_Level = db.Column(db.Float) - MH_Top_Level = db.Column(db.Float) - Ex_Level = db.Column(db.Float) - Cutting_Depth = db.Column(db.Float) - MH_Depth = db.Column(db.Float) - ID_of_MH_m = db.Column(db.Float) + Ground_Level = db.Column(db.Float, default=0) + MH_Invert_Level = db.Column(db.Float, default=0) + MH_Top_Level = db.Column(db.Float, default=0) + Ex_Level = db.Column(db.Float, default=0) + Cutting_Depth = db.Column(db.Float, default=0) + MH_Depth = db.Column(db.Float, default=0) + ID_of_MH_m = db.Column(db.Float, default=0) - Dia_of_MH_Cutting = db.Column(db.Float) - Area_of_Manhole = db.Column(db.Float) + Dia_of_MH_Cutting = db.Column(db.Float, default=0) + Area_of_Manhole = db.Column(db.Float, default=0) # Excavation categories - Marshi_Muddy_Slushy_0_to_1_5 = db.Column(db.Float) - Marshi_Muddy_Slushy_1_5_to_3_0 = db.Column(db.Float) - Marshi_Muddy_Slushy_3_0_to_4_5 = db.Column(db.Float) + Marshi_Muddy_Slushy_0_to_1_5 = db.Column(db.Float, default=0) + Marshi_Muddy_Slushy_1_5_to_3_0 = db.Column(db.Float, default=0) + Marshi_Muddy_Slushy_3_0_to_4_5 = db.Column(db.Float, default=0) - Soft_Murum_0_to_1_5 = db.Column(db.Float) - Soft_Murum_1_5_to_3_0 = db.Column(db.Float) - Soft_Murum_3_0_to_4_5 = db.Column(db.Float) + Soft_Murum_0_to_1_5 = db.Column(db.Float, default=0) + Soft_Murum_1_5_to_3_0 = db.Column(db.Float, default=0) + Soft_Murum_3_0_to_4_5 = db.Column(db.Float, default=0) - Hard_Murum_0_to_1_5 = db.Column(db.Float) - Hard_Murum_1_5_to_3_0 = db.Column(db.Float) - Hard_Murum_3_0_to_4_5 = db.Column(db.Float) + Hard_Murum_0_to_1_5 = db.Column(db.Float, default=0) + Hard_Murum_1_5_to_3_0 = db.Column(db.Float, default=0) + Hard_Murum_3_0_to_4_5 = db.Column(db.Float, default=0) - Soft_Rock_0_to_1_5 = db.Column(db.Float) - Soft_Rock_1_5_to_3_0 = db.Column(db.Float) - Soft_Murum_3_0_to_4_5 = db.Column(db.Float) + Soft_Rock_0_to_1_5 = db.Column(db.Float, default=0) + Soft_Rock_1_5_to_3_0 = db.Column(db.Float, default=0) + Soft_Murum_3_0_to_4_5 = db.Column(db.Float, default=0) - Hard_Rock_0_to_1_5 = db.Column(db.Float) - Hard_Rock_1_5_to_3_0 = db.Column(db.Float) - Hard_Rock_3_0_to_4_5 = db.Column(db.Float) - Hard_Rock_4_5_to_6_0 = db.Column(db.Float) - Hard_Rock_6_0_to_7_5 = db.Column(db.Float) + Hard_Rock_0_to_1_5 = db.Column(db.Float, default=0) + Hard_Rock_1_5_to_3_0 = db.Column(db.Float, default=0) + Hard_Rock_3_0_to_4_5 = db.Column(db.Float, default=0) + Hard_Rock_4_5_to_6_0 = db.Column(db.Float, default=0) + Hard_Rock_6_0_to_7_5 = db.Column(db.Float, default=0) # Totals - Marshi_Muddy_Slushy_0_to_1_5_total = db.Column(db.Float) - Marshi_Muddy_Slushy_1_5_to_3_0_total = db.Column(db.Float) - Marshi_Muddy_Slushy_3_0_to_4_5_total = db.Column(db.Float) + Marshi_Muddy_Slushy_0_to_1_5_total = db.Column(db.Float, default=0) + Marshi_Muddy_Slushy_1_5_to_3_0_total = db.Column(db.Float, default=0) + Marshi_Muddy_Slushy_3_0_to_4_5_total = db.Column(db.Float, default=0) - Soft_Murum_0_to_1_5_total = db.Column(db.Float) - Soft_Murum_1_5_to_3_0_total = db.Column(db.Float) - Soft_Murum_3_0_to_4_5_total = db.Column(db.Float) + Soft_Murum_0_to_1_5_total = db.Column(db.Float, default=0) + Soft_Murum_1_5_to_3_0_total = db.Column(db.Float, default=0) + Soft_Murum_3_0_to_4_5_total = db.Column(db.Float, default=0) - Hard_Murum_0_to_1_5_total = db.Column(db.Float) - Hard_Murum_1_5_to_3_0_total = db.Column(db.Float) - Hard_Murum_3_0_to_4_5_total = db.Column(db.Float) + Hard_Murum_0_to_1_5_total = db.Column(db.Float, default=0) + Hard_Murum_1_5_to_3_0_total = db.Column(db.Float, default=0) + Hard_Murum_3_0_to_4_5_total = db.Column(db.Float, default=0) - Soft_Rock_0_to_1_5_total = db.Column(db.Float) - Soft_Rock_1_5_to_3_0_total = db.Column(db.Float) - Soft_Rock_3_0_to_4_5_total = db.Column(db.Float) + Soft_Rock_0_to_1_5_total = db.Column(db.Float, default=0) + Soft_Rock_1_5_to_3_0_total = db.Column(db.Float, default=0) + Soft_Rock_3_0_to_4_5_total = db.Column(db.Float, default=0) - Hard_Rock_0_to_1_5_total = db.Column(db.Float) - Hard_Rock_1_5_to_3_0_total = db.Column(db.Float) - Hard_Rock_3_0_to_4_5_total = db.Column(db.Float) - Hard_Rock_4_5_to_6_0_total = db.Column(db.Float) - Hard_Rock_6_0_to_7_5_total = db.Column(db.Float) + Hard_Rock_0_to_1_5_total = db.Column(db.Float, default=0) + Hard_Rock_1_5_to_3_0_total = db.Column(db.Float, default=0) + Hard_Rock_3_0_to_4_5_total = db.Column(db.Float, default=0) + Hard_Rock_4_5_to_6_0_total = db.Column(db.Float, default=0) + Hard_Rock_6_0_to_7_5_total = db.Column(db.Float, default=0) Remarks = db.Column(db.String(500)) - Total = db.Column(db.Float) + Total = db.Column(db.Float, default=0) created_at = db.Column(db.DateTime, default=datetime.today) diff --git a/app/models/tr_ex_client_model.py b/app/models/tr_ex_client_model.py index c004765..6c18c36 100644 --- a/app/models/tr_ex_client_model.py +++ b/app/models/tr_ex_client_model.py @@ -11,69 +11,69 @@ class TrenchExcavationClient(db.Model): RA_Bill_No=db.Column(db.String(500)) Location = db.Column(db.String(500)) MH_NO = db.Column(db.String(100)) - CC_length = db.Column(db.Float) - Actual_Trench_Length = db.Column(db.Float) - Ground_Level = db.Column(db.Float) - Invert_Level = db.Column(db.Float) - Excavated_level = db.Column(db.Float) - Cutting_Depth = db.Column(db.Float) - Avg_Depth = db.Column(db.Float) - Pipe_Dia_mm = db.Column(db.Float) + CC_length = db.Column(db.Float, default=0) + Actual_Trench_Length = db.Column(db.Float, default=0) + Ground_Level = db.Column(db.Float, default=0) + Invert_Level = db.Column(db.Float, default=0) + Excavated_level = db.Column(db.Float, default=0) + Cutting_Depth = db.Column(db.Float, default=0) + Avg_Depth = db.Column(db.Float, default=0) + Pipe_Dia_mm = db.Column(db.Float, default=0) # width - Width_0_to_1_5_m = db.Column(db.Float) - Width_1_5_to_3_0_m = db.Column(db.Float) - Width_3_0_to_4_5_m = db.Column(db.Float) - Width_4_5_to_6_0_m = db.Column(db.Float) - Width_6_0_to_7_5_m = db.Column(db.Float) + Width_0_to_1_5_m = db.Column(db.Float, default=0) + Width_1_5_to_3_0_m = db.Column(db.Float, default=0) + Width_3_0_to_4_5_m = db.Column(db.Float, default=0) + Width_4_5_to_6_0_m = db.Column(db.Float, default=0) + Width_6_0_to_7_5_m = db.Column(db.Float, default=0) # Excavation categories - Marshi_Muddy_Slushy_0_to_1_5 = db.Column(db.Float) - Marshi_Muddy_Slushy_1_5_to_3_0 = db.Column(db.Float) - Marshi_Muddy_Slushy_3_0_to_4_5 = db.Column(db.Float) + Marshi_Muddy_Slushy_0_to_1_5 = db.Column(db.Float, default=0) + Marshi_Muddy_Slushy_1_5_to_3_0 = db.Column(db.Float, default=0) + Marshi_Muddy_Slushy_3_0_to_4_5 = db.Column(db.Float, default=0) - Soft_Murum_0_to_1_5 = db.Column(db.Float) - Soft_Murum_1_5_to_3_0 = db.Column(db.Float) - Soft_Murum_3_0_to_4_5 = db.Column(db.Float) + Soft_Murum_0_to_1_5 = db.Column(db.Float, default=0) + Soft_Murum_1_5_to_3_0 = db.Column(db.Float, default=0) + Soft_Murum_3_0_to_4_5 = db.Column(db.Float, default=0) - Hard_Murum_0_to_1_5 = db.Column(db.Float) - Hard_Murum_1_5_to_3_0 = db.Column(db.Float) - Hard_Murum_3_0_to_4_5 = db.Column(db.Float) + Hard_Murum_0_to_1_5 = db.Column(db.Float, default=0) + Hard_Murum_1_5_to_3_0 = db.Column(db.Float, default=0) + Hard_Murum_3_0_to_4_5 = db.Column(db.Float, default=0) - Soft_Rock_0_to_1_5 = db.Column(db.Float) - Soft_Rock_1_5_to_3_0 = db.Column(db.Float) - Soft_Rock_3_0_to_4_5 = db.Column(db.Float) + Soft_Rock_0_to_1_5 = db.Column(db.Float, default=0) + Soft_Rock_1_5_to_3_0 = db.Column(db.Float, default=0) + Soft_Rock_3_0_to_4_5 = db.Column(db.Float, default=0) - Hard_Rock_0_to_1_5 = db.Column(db.Float) - Hard_Rock_1_5_to_3_0 = db.Column(db.Float) - Hard_Rock_3_0_to_4_5 = db.Column(db.Float) - Hard_Rock_4_5_to_6_0 = db.Column(db.Float) - Hard_Rock_6_0_to_7_5 = db.Column(db.Float) + Hard_Rock_0_to_1_5 = db.Column(db.Float, default=0) + Hard_Rock_1_5_to_3_0 = db.Column(db.Float, default=0) + Hard_Rock_3_0_to_4_5 = db.Column(db.Float, default=0) + Hard_Rock_4_5_to_6_0 = db.Column(db.Float, default=0) + Hard_Rock_6_0_to_7_5 = db.Column(db.Float, default=0) # Totals - Marshi_Muddy_Slushy_0_to_1_5_total = db.Column(db.Float) - Marshi_Muddy_Slushy_1_5_to_3_0_total = db.Column(db.Float) - Marshi_Muddy_Slushy_3_0_to_4_5_total = db.Column(db.Float) + Marshi_Muddy_Slushy_0_to_1_5_total = db.Column(db.Float, default=0) + Marshi_Muddy_Slushy_1_5_to_3_0_total = db.Column(db.Float, default=0) + Marshi_Muddy_Slushy_3_0_to_4_5_total = db.Column(db.Float, default=0) - Soft_Murum_0_to_1_5_total = db.Column(db.Float) - Soft_Murum_1_5_to_3_0_total = db.Column(db.Float) - Soft_Murum_3_0_to_4_5_total = db.Column(db.Float) + Soft_Murum_0_to_1_5_total = db.Column(db.Float, default=0) + Soft_Murum_1_5_to_3_0_total = db.Column(db.Float, default=0) + Soft_Murum_3_0_to_4_5_total = db.Column(db.Float, default=0) - Hard_Murum_0_to_1_5_total = db.Column(db.Float) - Hard_Murum_1_5_to_3_0_total = db.Column(db.Float) - Hard_Murum_3_0_to_4_5_total = db.Column(db.Float) + Hard_Murum_0_to_1_5_total = db.Column(db.Float, default=0) + Hard_Murum_1_5_to_3_0_total = db.Column(db.Float, default=0) + Hard_Murum_3_0_to_4_5_total = db.Column(db.Float, default=0) - Soft_Rock_0_to_1_5_total = db.Column(db.Float) - Soft_Rock_1_5_to_3_0_total = db.Column(db.Float) - Soft_Rock_3_0_to_4_5_total = db.Column(db.Float) + Soft_Rock_0_to_1_5_total = db.Column(db.Float, default=0) + Soft_Rock_1_5_to_3_0_total = db.Column(db.Float, default=0) + Soft_Rock_3_0_to_4_5_total = db.Column(db.Float, default=0) - Hard_Rock_0_to_1_5_total = db.Column(db.Float) - Hard_Rock_1_5_to_3_0_total = db.Column(db.Float) - Hard_Rock_3_0_to_4_5_total = db.Column(db.Float) - Hard_Rock_4_5_to_6_0_total = db.Column(db.Float) - Hard_Rock_6_0_to_7_5_total = db.Column(db.Float) + Hard_Rock_0_to_1_5_total = db.Column(db.Float, default=0) + Hard_Rock_1_5_to_3_0_total = db.Column(db.Float, default=0) + Hard_Rock_3_0_to_4_5_total = db.Column(db.Float, default=0) + Hard_Rock_4_5_to_6_0_total = db.Column(db.Float, default=0) + Hard_Rock_6_0_to_7_5_total = db.Column(db.Float, default=0) - Total = db.Column(db.Float) + Total = db.Column(db.Float, default=0) Remarks = db.Column(db.String(500)) created_at = db.Column(db.DateTime, default=datetime.today) diff --git a/app/models/trench_excavation_model.py b/app/models/trench_excavation_model.py index 2323a55..c7a19c0 100644 --- a/app/models/trench_excavation_model.py +++ b/app/models/trench_excavation_model.py @@ -14,59 +14,59 @@ class TrenchExcavation(db.Model): # Basic Fields Location = db.Column(db.String(500)) MH_NO = db.Column(db.String(100)) - CC_length = db.Column(db.Float) - Invert_Level = db.Column(db.Float) - MH_Top_Level = db.Column(db.Float) - Ground_Level = db.Column(db.Float) - ID_of_MH_m = db.Column(db.Float) - Actual_Trench_Length = db.Column(db.Float) - Pipe_Dia_mm = db.Column(db.Float) + CC_length = db.Column(db.Float, default=0) + Invert_Level = db.Column(db.Float, default=0) + MH_Top_Level = db.Column(db.Float, default=0) + Ground_Level = db.Column(db.Float, default=0) + ID_of_MH_m = db.Column(db.Float, default=0) + Actual_Trench_Length = db.Column(db.Float, default=0) + Pipe_Dia_mm = db.Column(db.Float, default=0) # width - Width_0_to_2_5 = db.Column(db.Float) - Width_2_5_to_3_0 = db.Column(db.Float) - Width_3_0_to_4_5 = db.Column(db.Float) - Width_4_5_to_6_0 = db.Column(db.Float) + Width_0_to_2_5 = db.Column(db.Float, default=0) + Width_2_5_to_3_0 = db.Column(db.Float, default=0) + Width_3_0_to_4_5 = db.Column(db.Float, default=0) + Width_4_5_to_6_0 = db.Column(db.Float, default=0) - Upto_IL_Depth = db.Column(db.Float) - Cutting_Depth = db.Column(db.Float) - Avg_Depth = db.Column(db.Float) + Upto_IL_Depth = db.Column(db.Float, default=0) + Cutting_Depth = db.Column(db.Float, default=0) + Avg_Depth = db.Column(db.Float, default=0) # Excavation categories - Soft_Murum_0_to_1_5 = db.Column(db.Float) - Soft_Murum_1_5_to_3_0 = db.Column(db.Float) - Soft_Murum_3_0_to_4_5 = db.Column(db.Float) + Soft_Murum_0_to_1_5 = db.Column(db.Float, default=0) + Soft_Murum_1_5_to_3_0 = db.Column(db.Float, default=0) + Soft_Murum_3_0_to_4_5 = db.Column(db.Float, default=0) - Hard_Murum_0_to_1_5 = db.Column(db.Float) - Hard_Murum_1_5_to_3_0 = db.Column(db.Float) + Hard_Murum_0_to_1_5 = db.Column(db.Float, default=0) + Hard_Murum_1_5_to_3_0 = db.Column(db.Float, default=0) - Soft_Rock_0_to_1_5 = db.Column(db.Float) - Soft_Rock_1_5_to_3_0 = db.Column(db.Float) + Soft_Rock_0_to_1_5 = db.Column(db.Float, default=0) + Soft_Rock_1_5_to_3_0 = db.Column(db.Float, default=0) - Hard_Rock_0_to_1_5 = db.Column(db.Float) - Hard_Rock_1_5_to_3_0 = db.Column(db.Float) - Hard_Rock_3_0_to_4_5 = db.Column(db.Float) - Hard_Rock_4_5_to_6_0 = db.Column(db.Float) - Hard_Rock_6_0_to_7_5 = db.Column(db.Float) + Hard_Rock_0_to_1_5 = db.Column(db.Float, default=0) + Hard_Rock_1_5_to_3_0 = db.Column(db.Float, default=0) + Hard_Rock_3_0_to_4_5 = db.Column(db.Float, default=0) + Hard_Rock_4_5_to_6_0 = db.Column(db.Float, default=0) + Hard_Rock_6_0_to_7_5 = db.Column(db.Float, default=0) # Totals - Soft_Murum_0_to_1_5_total = db.Column(db.Float) - Soft_Murum_1_5_to_3_0_total = db.Column(db.Float) - Soft_Murum_3_0_to_4_5_total = db.Column(db.Float) + Soft_Murum_0_to_1_5_total = db.Column(db.Float, default=0) + Soft_Murum_1_5_to_3_0_total = db.Column(db.Float, default=0) + Soft_Murum_3_0_to_4_5_total = db.Column(db.Float, default=0) - Hard_Murum_0_to_1_5_total = db.Column(db.Float) - Hard_Murum_1_5_and_above_total = db.Column(db.Float) + Hard_Murum_0_to_1_5_total = db.Column(db.Float, default=0) + Hard_Murum_1_5_and_above_total = db.Column(db.Float, default=0) - Soft_Rock_0_to_1_5_total = db.Column(db.Float) - Soft_Rock_1_5_and_above_total = db.Column(db.Float) + Soft_Rock_0_to_1_5_total = db.Column(db.Float, default=0) + Soft_Rock_1_5_and_above_total = db.Column(db.Float, default=0) - Hard_Rock_0_to_1_5_total = db.Column(db.Float) - Hard_Rock_1_5_to_3_0_total = db.Column(db.Float) - Hard_Rock_3_0_to_4_5_total = db.Column(db.Float) - Hard_Rock_4_5_to_6_0_total = db.Column(db.Float) - Hard_Rock_6_0_to_7_5_total = db.Column(db.Float) + Hard_Rock_0_to_1_5_total = db.Column(db.Float, default=0) + Hard_Rock_1_5_to_3_0_total = db.Column(db.Float, default=0) + Hard_Rock_3_0_to_4_5_total = db.Column(db.Float, default=0) + Hard_Rock_4_5_to_6_0_total = db.Column(db.Float, default=0) + Hard_Rock_6_0_to_7_5_total = db.Column(db.Float, default=0) - Total = db.Column(db.Float) + Total = db.Column(db.Float, default=0) Remarks = db.Column(db.String(500)) RA_Bill_No=db.Column(db.String(500)) diff --git a/app/models/user_model.py b/app/models/user_model.py index 4cf7c26..838cf45 100644 --- a/app/models/user_model.py +++ b/app/models/user_model.py @@ -5,7 +5,7 @@ class User(db.Model): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=False) + name = db.Column(db.String(200), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) password_hash = db.Column(db.String(255), nullable=False) diff --git a/app/routes/dashboard.py b/app/routes/dashboard.py index 2190316..219a41d 100644 --- a/app/routes/dashboard.py +++ b/app/routes/dashboard.py @@ -13,6 +13,8 @@ from app.models.trench_excavation_model import TrenchExcavation from app.models.manhole_excavation_model import ManholeExcavation from app.models.laying_model import Laying +from app.models.subcontractor_model import Subcontractor + dashboard_bp = Blueprint("dashboard", __name__, url_prefix="/dashboard") @@ -23,97 +25,6 @@ def dashboard(): return render_template("dashboard.html", title="Business Intelligence Dashboard") - - -# import matplotlib -# matplotlib.use("Agg") - -# from flask import Blueprint, render_template, session, redirect, url_for -# import matplotlib.pyplot as plt -# import io -# import base64 -# from app.utils.plot_utils import plot_to_base64 -# from app.services.dashboard_service import DashboardService - -# dashboard_bp = Blueprint("dashboard", __name__, url_prefix="/dashboard") - -# # dashboard_bp = Blueprint("dashboard", __name__) - -# # charts -# # def plot_to_base64(): -# # img = io.BytesIO() -# # plt.savefig(img, format="png", bbox_inches="tight") -# # plt.close() -# # img.seek(0) -# # return base64.b64encode(img.getvalue()).decode() - -# # bar chart -# def bar_chart(): -# categories = ["Trench", "Manhole", "Pipe Laying", "Restoration"] -# values = [120, 80, 150, 60] - -# plt.figure() -# plt.bar(categories, values) -# plt.title("Work Category Report") -# plt.xlabel("test Category") -# plt.ylabel("test Quantity") - - -# return plot_to_base64(plt) - -# # Pie chart -# def pie_chart(): -# labels = ["Completed", "In Progress", "Pending"] -# sizes = [55, 20, 25] - -# plt.figure() -# plt.pie(sizes, labels=labels, autopct="%1.1f%%", startangle=140) -# plt.title("Project Status") - -# return plot_to_base64(plt) - -# # Histogram chart -# def histogram_chart(): -# daily_work = [5, 10, 15, 20, 20, 25, 30, 35, 40, 45, 50] - -# plt.figure() -# plt.hist(daily_work, bins=5) -# plt.title("Daily Work Distribution") -# plt.xlabel("Work Units") -# plt.ylabel("Frequency") - -# return plot_to_base64(plt) - -# # Dashboaed page -# @dashboard_bp.route("/") -# def dashboard(): -# if not session.get("user_id"): -# return redirect(url_for("auth.login")) - -# return render_template( -# "dashboard.html", -# title="Dashboard", -# bar_chart=bar_chart(), -# pie_chart=pie_chart(), -# histogram=histogram_chart() -# ) - -# # subcontractor dashboard -# @dashboard_bp.route("/subcontractor_dashboard", methods=["GET", "POST"]) -# def subcontractor_dashboard(): -# if not session.get("user_id"): -# return redirect(url_for("auth.login")) - -# tr_dash = DashboardService().bar_chart_of_tr_ex - - -# return render_template( -# "subcontractor_dashboard.html", -# title="Dashboard", -# bar_chart=tr_dash -# ) - - @dashboard_bp.route("/api/live-stats") def live_stats(): try: @@ -152,16 +63,49 @@ def live_stats(): # subcontractor dashboard -@dashboard_bp.route("/subcontractor_dashboard", methods=["GET", "POST"]) +@dashboard_bp.route("/subcontractor_dashboard") def subcontractor_dashboard(): + if not session.get("user_id"): return redirect(url_for("auth.login")) - tr_dash = DashboardService().bar_chart_of_tr_ex - - + subcontractors = Subcontractor.query.all() + return render_template( "subcontractor_dashboard.html", - title="Dashboard", - bar_chart=tr_dash - ) \ No newline at end of file + subcontractors=subcontractors + ) + + +# API FOR CHART DATA +@dashboard_bp.route("/api/subcontractor-chart") +def subcontractor_chart(): + + subcontractor_id = request.args.get("subcontractor") + category = request.args.get("category") + ra_bill = request.args.get("ra_bill") + + query = db.session.query( + TrenchExcavation.excavation_category, + func.sum(TrenchExcavation.Total) + ) + + if subcontractor_id: + query = query.filter(TrenchExcavation.subcontractor_id == subcontractor_id) + + if ra_bill: + query = query.filter(TrenchExcavation.RA_Bill_No == ra_bill) + + results = query.group_by(TrenchExcavation.excavation_category).all() + + labels = [] + values = [] + + for r in results: + labels.append(r[0]) + values.append(float(r[1] or 0)) + + return jsonify({ + "labels": labels, + "values": values + }) \ No newline at end of file diff --git a/app/routes/subcontractor_routes.py b/app/routes/subcontractor_routes.py index 9de484e..cdf7e2b 100644 --- a/app/routes/subcontractor_routes.py +++ b/app/routes/subcontractor_routes.py @@ -40,7 +40,8 @@ def save_subcontractor(): address=request.form.get("address"), mobile_no=request.form.get("mobile_no"), email_id=request.form.get("email_id"), - gst_no=request.form.get("gst_no") + gst_no=request.form.get("gst_no"), + pan_no=request.form.get("pan_no") ) db.session.add(subcontractor) @@ -120,6 +121,8 @@ def update_subcontractor(id): subcontractor.mobile_no = request.form.get("mobile_no") subcontractor.email_id = request.form.get("email_id") subcontractor.gst_no = request.form.get("gst_no") + subcontractor.gst_no = request.form.get("pan_no") + subcontractor.status = request.form.get("status") db.session.commit() diff --git a/app/templates/subcontractor/add.html b/app/templates/subcontractor/add.html index 68e5c36..747ae3b 100644 --- a/app/templates/subcontractor/add.html +++ b/app/templates/subcontractor/add.html @@ -36,6 +36,11 @@ +
+ + +
+ Back diff --git a/app/templates/subcontractor/edit.html b/app/templates/subcontractor/edit.html index 430cce0..294d069 100644 --- a/app/templates/subcontractor/edit.html +++ b/app/templates/subcontractor/edit.html @@ -37,6 +37,23 @@ +
+ + +
+ +
+ + +
+ Back diff --git a/app/templates/subcontractor/list.html b/app/templates/subcontractor/list.html index 983cc50..d8ad949 100644 --- a/app/templates/subcontractor/list.html +++ b/app/templates/subcontractor/list.html @@ -19,9 +19,9 @@ - - - + + + @@ -33,7 +33,7 @@ - +
IDNameContactSr. NoSubcontractor NameGST No Mobile Email Status
{{ s.id }} {{ s.subcontractor_name }}{{ s.contact_person }}{{ s.gst_no }} {{ s.mobile_no }} {{ s.email_id }} @@ -65,9 +65,9 @@ {% for s in subcontractors %}
-
{{ s.subcontractor_name }}
+
{{ s.subcontractor_name }}
-

Contact Person Name: {{ s.contact_person }}

+

GST No: {{ s.gst_no }}

Mobile: {{ s.mobile_no }}

Email: {{ s.email_id }}

diff --git a/app/templates/subcontractor_dashboard.html b/app/templates/subcontractor_dashboard.html index e9e1d24..8a05ffc 100644 --- a/app/templates/subcontractor_dashboard.html +++ b/app/templates/subcontractor_dashboard.html @@ -1,55 +1,47 @@ {% extends "base.html" %} - {% block content %} -
+
-

Subcontractor Dashboard

+

Subcontractor Dashboard

-
-
-
-
-
Trenching Units
-

0

-
-
+
+ +
+
-
-
-
-
Manhole Units
-

0

-
-
+ +
+
-
-
-
-
Laying Units
-

0

-
-
+ +
+
+
-
-
-
-
Live Category Bar Chart
-
- -
-
-
-
-
-
Location Distribution Pie Chart
-
- -
-
+
+
+ + +
@@ -59,64 +51,55 @@ {% endblock %} \ No newline at end of file diff --git a/instance/comparisondb.db b/instance/comparisondb.db deleted file mode 100644 index 3f771ffff950e676aba99681b3e4ac0431c6c488..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI#F-yZh6bJCTDry5I9W33-+e|=;t#oqGSPl)wXk#LD3MYv)khC>P(N#ykoL|S$ zT%axv-5kpQ;JxtPaUu81^d2ToQpWVW$TL~eDQh#%*#!|}j90N!#d@iFcU@FZRc~6H z^*;|=`ZsInJ*M~cuT2NA4*>{300Izz00bZa0SG_<0ucCrf%iV&?{+%;Cy7W*Oq4th9{>qes_nXQGMp#vu`bLN;hIkMiSM%z_llVAftYtshLNOz3y3uvt%B{ zZ^cVm&Gw;Om5aI#)t80?mDOB-pgdbDwN=7`00bZa0SG_<0uX=z1Rwwb2tZ(41vGUr f%>Uc^dvPxaKmY;|fB*y_009U<00IzzKrQeC^Xx`9 -- 2.49.1