Add period label to engagement task instances

This commit is contained in:
A R R R Associates
2026-08-05 12:46:44 +05:30
parent b488fa7dab
commit 3bba0c1e32
2 changed files with 57 additions and 0 deletions
@@ -0,0 +1,56 @@
"""add period label to client service task instances
Revision ID: 20260805_task_instance_period_label
Revises: 20260805_periodic_engagements
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy import inspect
revision = "20260805_task_instance_period_label"
down_revision = "20260805_periodic_engagements"
branch_labels = None
depends_on = None
TABLE = "client_service_task_instances"
INDEX = "ix_csti_period_label"
def _inspector():
return inspect(op.get_bind())
def _columns() -> set[str]:
return {row["name"] for row in _inspector().get_columns(TABLE)}
def _indexes() -> set[str]:
return {row.get("name") for row in _inspector().get_indexes(TABLE) if row.get("name")}
def upgrade():
if "period_label" not in _columns():
op.add_column(
TABLE,
sa.Column("period_label", sa.String(length=30), nullable=False, server_default=""),
)
op.execute(
"""
UPDATE client_service_task_instances AS task
SET period_label = COALESCE(subscription.period_label, '')
FROM client_service_subscriptions AS subscription
WHERE task.subscription_id = subscription.id
AND COALESCE(task.period_label, '') = ''
"""
)
if INDEX not in _indexes():
op.create_index(INDEX, TABLE, ["period_label"], unique=False)
def downgrade():
if INDEX in _indexes():
op.drop_index(INDEX, table_name=TABLE)
if "period_label" in _columns():
op.drop_column(TABLE, "period_label")
+1
View File
@@ -235,6 +235,7 @@ def generate_tasks_for_subscription(db: Session, *, subscription: ClientServiceS
service_catalogue_id=subscription.service_catalogue_id, service_catalogue_id=subscription.service_catalogue_id,
firm_task_template_id=template.id, firm_task_template_id=template.id,
financial_year=subscription.financial_year, financial_year=subscription.financial_year,
period_label=getattr(subscription, "period_label", "") or "",
assessment_year=subscription.assessment_year, assessment_year=subscription.assessment_year,
task_name=template.task_name, task_name=template.task_name,
description=template.description, description=template.description,