remove service letter contact model

This commit is contained in:
stvnrlly
2023-02-17 22:56:54 -05:00
parent 007741fe44
commit c34b24014a
16 changed files with 57 additions and 469 deletions

View File

@@ -32,7 +32,6 @@ from app.models import (
Service,
ServiceContactList,
ServiceEmailReplyTo,
ServiceLetterContact,
ServicePermission,
ServiceSmsSender,
Template,
@@ -369,7 +368,6 @@ def delete_service_and_all_associated_db_objects(service):
_delete_commit(ServiceSmsSender.query.filter_by(service=service))
_delete_commit(ServiceEmailReplyTo.query.filter_by(service=service))
_delete_commit(ServiceLetterContact.query.filter_by(service=service))
_delete_commit(ServiceContactList.query.filter_by(service=service))
_delete_commit(InvitedUser.query.filter_by(service=service))
_delete_commit(Permission.query.filter_by(service=service))

View File

@@ -38,36 +38,6 @@ def dao_update_template(template):
db.session.add(template)
@autocommit
def dao_update_template_reply_to(template_id, reply_to):
Template.query.filter_by(id=template_id).update(
{"service_letter_contact_id": reply_to,
"updated_at": datetime.utcnow(),
"version": Template.version + 1,
}
)
template = Template.query.filter_by(id=template_id).one()
history = TemplateHistory(**
{
"id": template.id,
"name": template.name,
"template_type": template.template_type,
"created_at": template.created_at,
"updated_at": template.updated_at,
"content": template.content,
"service_id": template.service_id,
"subject": template.subject,
"created_by_id": template.created_by_id,
"version": template.version,
"archived": template.archived,
"process_type": template.process_type,
"service_letter_contact_id": template.service_letter_contact_id,
})
db.session.add(history)
return template
@autocommit
def dao_redact_template(template, user_id):
template.template_redacted.redact_personalisation = True

View File

@@ -512,10 +512,6 @@ class Service(db.Model, Versioned):
default_reply_to = [x for x in self.reply_to_email_addresses if x.is_default]
return default_reply_to[0].email_address if default_reply_to else None
def get_default_letter_contact(self):
default_letter_contact = [x for x in self.letter_contacts if x.is_default]
return default_letter_contact[0].contact_block if default_letter_contact else None
def has_permission(self, permission):
return permission in [p.permission for p in self.permissions]
@@ -916,34 +912,20 @@ class TemplateBase(db.Model):
redact_personalisation = association_proxy('template_redacted', 'redact_personalisation')
@declared_attr
def service_letter_contact_id(cls):
return db.Column(UUID(as_uuid=True), db.ForeignKey('service_letter_contacts.id'), nullable=True)
@declared_attr
def service_letter_contact(cls):
return db.relationship('ServiceLetterContact', viewonly=True)
# TODO: possibly unnecessary after removing letters
@property
def reply_to(self):
if self.template_type == LETTER_TYPE:
return self.service_letter_contact_id
else:
return None
return None
@reply_to.setter
def reply_to(self, value):
if self.template_type == LETTER_TYPE:
self.service_letter_contact_id = value
elif value is None:
if value is None:
pass
else:
raise ValueError('Unable to set sender for {} template'.format(self.template_type))
def get_reply_to_text(self):
if self.template_type == LETTER_TYPE:
return self.service_letter_contact.contact_block if self.service_letter_contact else None
elif self.template_type == EMAIL_TYPE:
if self.template_type == EMAIL_TYPE:
return self.service.get_default_reply_to_email_address()
elif self.template_type == SMS_TYPE:
return try_validate_and_format_phone_number(self.service.get_default_sms_sender())
@@ -983,7 +965,6 @@ class TemplateBase(db.Model):
}
for key in self._as_utils_template().placeholders
},
"letter_contact_block": self.service_letter_contact.contact_block if self.service_letter_contact else None,
}
return serialized
@@ -1924,32 +1905,6 @@ class ServiceEmailReplyTo(db.Model):
}
class ServiceLetterContact(db.Model):
__tablename__ = "service_letter_contacts"
id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'), unique=False, index=True, nullable=False)
service = db.relationship(Service, backref=db.backref("letter_contacts"))
contact_block = db.Column(db.Text, nullable=False, index=False, unique=False)
is_default = db.Column(db.Boolean, nullable=False, default=True)
archived = db.Column(db.Boolean, nullable=False, default=False)
created_at = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow)
updated_at = db.Column(db.DateTime, nullable=True, onupdate=datetime.datetime.utcnow)
def serialize(self):
return {
'id': str(self.id),
'service_id': str(self.service_id),
'contact_block': self.contact_block,
'is_default': self.is_default,
'archived': self.archived,
'created_at': self.created_at.strftime(DATETIME_FORMAT),
'updated_at': get_dt_string_or_none(self.updated_at),
}
class AuthType(db.Model):
__tablename__ = 'auth_type'

View File

@@ -249,9 +249,6 @@ class ServiceSchema(BaseSchema, UUIDsAsStringsMixin):
return in_data
def get_letter_contact(self, service):
return service.get_default_letter_contact()
class Meta(BaseSchema.Meta):
model = models.Service
exclude = (
@@ -267,7 +264,6 @@ class ServiceSchema(BaseSchema, UUIDsAsStringsMixin):
'inbound_number',
'inbound_sms',
'jobs',
'letter_contacts',
'reply_to_email_addresses',
'returned_letters',
'service_sms_senders',
@@ -360,7 +356,7 @@ class BaseTemplateSchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = models.Template
exclude = ("service_id", "jobs", "service_letter_contact_id")
exclude = ("service_id", "jobs")
class TemplateSchema(BaseTemplateSchema, UUIDsAsStringsMixin):
@@ -405,7 +401,6 @@ class TemplateSchemaNoDetail(TemplateSchema):
'reply_to',
'reply_to_text',
'service',
'service_letter_contact',
'subject',
'template_redacted',
'updated_at',

View File

@@ -5,7 +5,7 @@ add_service_data_retention_request = {
"type": "object",
"properties": {
"days_of_retention": {"type": "integer"},
"notification_type": {"enum": ["sms", "letter", "email"]},
"notification_type": {"enum": ["sms", "email"]},
},
"required": ["days_of_retention", "notification_type"]
}

View File

@@ -14,7 +14,6 @@ from app.dao.templates_dao import (
dao_get_template_versions,
dao_redact_template,
dao_update_template,
dao_update_template_reply_to,
)
from app.errors import InvalidRequest, register_errors
from app.models import SMS_TYPE, Template
@@ -111,11 +110,6 @@ def update_template(service_id, template_id):
if data.get('redact_personalisation') is True:
return redact_template(fetched_template, data)
if "reply_to" in data:
check_reply_to(service_id, data.get("reply_to"), fetched_template.template_type)
updated = dao_update_template_reply_to(template_id=template_id, reply_to=data.get("reply_to"))
return jsonify(data=template_schema.dump(updated)), 200
current_data = dict(template_schema.dump(fetched_template).items())
updated_template = dict(template_schema.dump(fetched_template).items())
updated_template.update(data)