Files
notifications-api/migrations/versions/0171_add_org_invite_template.py
2023-11-17 09:47:32 -05:00

98 lines
3.4 KiB
Python

"""
Revision ID: 0171_add_org_invite_template
Revises: 0170_hidden_non_nullable
Create Date: 2018-02-16 14:16:43.618062
"""
from datetime import datetime
from alembic import op
from flask import current_app
from sqlalchemy import text
revision = "0171_add_org_invite_template"
down_revision = "0170_hidden_non_nullable"
template_id = "203566f0-d835-47c5-aa06-932439c86573"
def upgrade():
template_insert = """
INSERT INTO templates (id, name, template_type, created_at, content, archived, service_id, subject,
created_by_id, version, process_type, hidden)
VALUES (:template_id, :template_name, :template_type, :time_now, :content, False,
:notify_service_id, :subject, :user_id, 1, :process_type, false)
"""
template_history_insert = """
INSERT INTO templates_history (id, name, template_type, created_at, content, archived, service_id, subject,
created_by_id, version, process_type, hidden)
VALUES (:template_id, :template_name, :template_type, :time_now, :content, False,
:notify_service_id, :subject, :user_id, 1, :process_type, false)
"""
template_content = "\n".join(
[
"((user_name)) has invited you to collaborate on ((organisation_name)) on GOV.UK Notify.",
"",
"GOV.UK Notify makes it easy to keep people updated by helping you send text messages, emails and letters.",
"",
"Open this link to create an account on GOV.UK Notify:",
"((url))",
"",
"This invitation will stop working at midnight tomorrow. This is to keep ((organisation_name)) secure.",
]
)
template_name = "Notify organisation invitation email"
template_subject = "((user_name)) has invited you to collaborate on ((organisation_name)) on GOV.UK Notify"
input_params = {
"template_id": template_id,
"template_name": template_name,
"template_type": "email",
"time_now": datetime.utcnow(),
"content": template_content,
"notify_service_id": current_app.config["NOTIFY_SERVICE_ID"],
"subject": template_subject,
"user_id": current_app.config["NOTIFY_USER_ID"],
"process_type": "normal",
}
conn = op.get_bind()
conn.execute(text(template_history_insert), input_params)
conn.execute(text(template_insert), input_params)
# clean up constraints on org_to_service - service_id-org_id constraint is redundant
op.drop_constraint(
"organisation_to_service_service_id_organisation_id_key",
"organisation_to_service",
type_="unique",
)
def downgrade():
input_params = {"template_id": template_id}
conn = op.get_bind()
conn.execute(
text("DELETE FROM notifications WHERE template_id = :template_id"), input_params
)
conn.execute(
text("DELETE FROM notification_history WHERE template_id = :template_id"),
input_params,
)
conn.execute(
text("DELETE FROM template_redacted WHERE template_id = :template_id"),
input_params,
)
conn.execute(
text("DELETE FROM templates_history WHERE id = :template_id"), input_params
)
conn.execute(text("DELETE FROM templates WHERE id = :template_id"), input_params)
op.create_unique_constraint(
"organisation_to_service_service_id_organisation_id_key",
"organisation_to_service",
["service_id", "organisation_id"],
)