Files
Comparison_Project/app/models/mh_dc_client_model.py

58 lines
2.5 KiB
Python
Raw Permalink Normal View History

2025-12-13 18:50:27 +05:30
from app import db
from datetime import datetime
from sqlalchemy import event
2026-03-17 18:02:28 +05:30
from app.utils.regex_utils import RegularExpression
from decimal import Decimal
2025-12-13 18:50:27 +05:30
class ManholeDomesticChamberClient(db.Model):
__tablename__ = "mh_dc_client"
id = db.Column(db.Integer, primary_key=True)
# Basic Fields
RA_Bill_No = db.Column(db.String(500))
2025-12-20 16:35:35 +05:30
Location = db.Column(db.String(500))
MH_NO = db.Column(db.String(100))
MH_TOP_LEVEL = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
MH_IL_LEVEL = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
Depth_of_MH = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
2025-12-13 18:50:27 +05:30
# Excavation categories
d_0_to_1_5 = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
d_1_5_to_2_0 = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
d_2_0_to_2_5 = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
d_2_5_to_3_0 = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
d_3_0_to_3_5 = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
d_3_5_to_4_0 = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
d_4_0_to_4_5= db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
d_4_5_to_5_0 = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
d_5_0_to_5_5 = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
d_5_5_to_6_0 = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
d_6_0_to_6_5 = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
Domestic_Chambers = db.Column(db.Numeric(10, 2), default=Decimal("0.00"))
Total = db.Column(db.Numeric(12, 2), default=Decimal("0.00"))
Remarks = db.Column(db.String(500), default="Import File")
created_at = db.Column(db.DateTime,default=datetime.now,nullable=False)
2025-12-13 18:50:27 +05:30
def __repr__(self):
return f"<HanholeDomesticChamberConstruction {self.Location}>"
def serialize(self):
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
2026-03-17 18:02:28 +05:30
# AUTO TOTAL USING REGEX
def calculate_mh_dc_total(mapper, connection, target):
total = Decimal("0.00")
for column in target.__table__.columns:
2026-03-17 18:02:28 +05:30
if RegularExpression.D_RANGE_PATTERN.match(column.name):
value = getattr(target, column.name)
if value is not None:
total += Decimal(value)
target.Total = total.quantize(Decimal("0.01"))
event.listen(ManholeDomesticChamberClient, "before_insert", calculate_mh_dc_total)
event.listen(ManholeDomesticChamberClient, "before_update", calculate_mh_dc_total)