Merge pull request #1621 from alphagov/email-branding-mapping-table

Email branding mapping table
This commit is contained in:
Leo Hemsted
2018-02-06 09:56:31 +00:00
committed by GitHub
5 changed files with 143 additions and 7 deletions
+33
View File
@@ -166,6 +166,33 @@ class Organisation(db.Model):
return serialized
class EmailBranding(db.Model):
__tablename__ = 'email_branding'
id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
colour = db.Column(db.String(7), nullable=True)
logo = db.Column(db.String(255), nullable=True)
name = db.Column(db.String(255), nullable=True)
def serialize(self):
serialized = {
"id": str(self.id),
"colour": self.colour,
"logo": self.logo,
"name": self.name,
}
return serialized
service_email_branding = db.Table(
'service_email_branding',
db.Model.metadata,
# service_id is a primary key as you can only have one email branding per service
db.Column('service_id', UUID(as_uuid=True), db.ForeignKey('services.id'), primary_key=True, nullable=False),
db.Column('email_branding_id', UUID(as_uuid=True), db.ForeignKey('email_branding.id'), nullable=False),
)
DVLA_ORG_HM_GOVERNMENT = '001'
DVLA_ORG_LAND_REGISTRY = '500'
@@ -255,6 +282,12 @@ class Service(db.Model, Versioned):
association_proxy('permissions', 'service_permission_types')
email_branding = db.relationship(
'EmailBranding',
secondary=service_email_branding,
uselist=False,
backref=db.backref('services', lazy='dynamic'))
@classmethod
def from_json(cls, data):
"""
+1
View File
@@ -204,6 +204,7 @@ class ServiceSchema(BaseSchema):
branding = field_for(models.Service, 'branding')
dvla_organisation = field_for(models.Service, 'dvla_organisation')
permissions = fields.Method("service_permissions")
email_branding = field_for(models.Service, 'email_branding')
override_flag = False
reply_to_email_address = fields.Method(method_name="get_reply_to_email_address")
sms_sender = fields.Method(method_name="get_sms_sender")
+9 -4
View File
@@ -66,7 +66,7 @@ from app.errors import (
InvalidRequest,
register_errors
)
from app.models import Service
from app.models import Service, EmailBranding
from app.schema_validation import validate
from app.service import statistics
from app.service.service_senders_schema import (
@@ -179,11 +179,16 @@ def update_service(service_id):
current_data = dict(service_schema.dump(fetched_service).data.items())
current_data.update(request.get_json())
update_dict = service_schema.load(current_data).data
service = service_schema.load(current_data).data
org_type = req_json.get('organisation_type', None)
if org_type:
update_dict.crown = org_type == 'central'
dao_update_service(update_dict)
service.crown = org_type == 'central'
if 'organisation' in req_json:
org_id = req_json['organisation']
service.email_branding = None if not org_id else EmailBranding.query.get(org_id)
dao_update_service(service)
if service_going_live:
send_notification_to_service_users(