From c9c10105b03c4421a503fba6242886d96bd1259b Mon Sep 17 00:00:00 2001 From: Daniel Haselhan Date: Thu, 9 Jan 2025 15:40:07 -0800 Subject: [PATCH] fix: Lock Summary on Submit * Copy over is_locked flag on update method to summary * Remove old unused lock method * Remove before_update trigger as we reports can be unlocked now --- .../db/models/compliance/ComplianceReportSummary.py | 13 +++---------- backend/lcfs/db/models/compliance/__init__.py | 2 -- backend/lcfs/db/models/compliance/listeners.py | 11 ----------- backend/lcfs/web/api/compliance_report/repo.py | 1 + 4 files changed, 4 insertions(+), 23 deletions(-) delete mode 100644 backend/lcfs/db/models/compliance/listeners.py diff --git a/backend/lcfs/db/models/compliance/ComplianceReportSummary.py b/backend/lcfs/db/models/compliance/ComplianceReportSummary.py index 99b30b40d..96aca512e 100644 --- a/backend/lcfs/db/models/compliance/ComplianceReportSummary.py +++ b/backend/lcfs/db/models/compliance/ComplianceReportSummary.py @@ -1,8 +1,7 @@ -from sqlalchemy import Column, Integer, Float, ForeignKey, Boolean, CheckConstraint -from sqlalchemy.exc import InvalidRequestError +from sqlalchemy import Column, Integer, Float, ForeignKey, Boolean from sqlalchemy.orm import relationship + from lcfs.db.base import BaseModel, Auditable -from datetime import datetime class ComplianceReportSummary(BaseModel, Auditable): @@ -112,13 +111,7 @@ class ComplianceReportSummary(BaseModel, Auditable): compliance_report = relationship("ComplianceReport", back_populates="summary") - def lock_summary(self): - if not self.is_locked: - self.is_locked = True - else: - raise InvalidRequestError("ComplianceReportSummary is already locked") - def __repr__(self): return f"" - # method to annualize a report once all four quarters are approved? \ No newline at end of file + # method to annualize a report once all four quarters are approved? diff --git a/backend/lcfs/db/models/compliance/__init__.py b/backend/lcfs/db/models/compliance/__init__.py index 56244e076..b3babf920 100644 --- a/backend/lcfs/db/models/compliance/__init__.py +++ b/backend/lcfs/db/models/compliance/__init__.py @@ -13,7 +13,6 @@ from .NotionalTransfer import NotionalTransfer from .OtherUses import OtherUses from .EndUserType import EndUserType -from . import listeners __all__ = [ "AllocationAgreement", @@ -30,6 +29,5 @@ "LevelOfEquipment", "NotionalTransfer", "OtherUses", - "listeners", "EndUserType", ] diff --git a/backend/lcfs/db/models/compliance/listeners.py b/backend/lcfs/db/models/compliance/listeners.py deleted file mode 100644 index 1ea2b22b8..000000000 --- a/backend/lcfs/db/models/compliance/listeners.py +++ /dev/null @@ -1,11 +0,0 @@ -from sqlalchemy import event -from sqlalchemy.exc import InvalidRequestError -from lcfs.db.models.compliance.ComplianceReportSummary import ComplianceReportSummary - - -@event.listens_for(ComplianceReportSummary, "before_update") -def prevent_update_if_locked(mapper, connection, target): - if target.is_locked: - raise InvalidRequestError("Cannot update a locked ComplianceReportSummary") - - diff --git a/backend/lcfs/web/api/compliance_report/repo.py b/backend/lcfs/web/api/compliance_report/repo.py index a0bf833a9..cd45266d3 100644 --- a/backend/lcfs/web/api/compliance_report/repo.py +++ b/backend/lcfs/web/api/compliance_report/repo.py @@ -601,6 +601,7 @@ async def save_compliance_report_summary( f"No summary found with report ID {summary.compliance_report_id}" ) + summary_obj.is_locked = summary.is_locked # Update renewable fuel target summary for row in summary.renewable_fuel_target_summary: line_number = row.line