diff --git a/app/models.py b/app/models.py index d61f725cd..f8bea361e 100644 --- a/app/models.py +++ b/app/models.py @@ -2245,7 +2245,7 @@ class BroadcastMessage(db.Model): cancelled_at = db.Column(db.DateTime, nullable=True) updated_at = db.Column(db.DateTime, nullable=True, onupdate=datetime.datetime.utcnow) - created_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), nullable=False) + created_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), nullable=True) approved_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), nullable=True) cancelled_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), nullable=True) @@ -2253,6 +2253,13 @@ class BroadcastMessage(db.Model): approved_by = db.relationship('User', foreign_keys=[approved_by_id]) cancelled_by = db.relationship('User', foreign_keys=[cancelled_by_id]) + api_key_id = db.Column(UUID(as_uuid=True), db.ForeignKey('api_keys.id'), nullable=True) + api_key = db.relationship('ApiKey') + + reference = db.Column(db.String(255), nullable=True) + + CheckConstraint("created_by_id is not null or api_key_id is not null") + @property def personalisation(self): if self._personalisation: @@ -2266,6 +2273,7 @@ class BroadcastMessage(db.Model): def serialize(self): return { 'id': str(self.id), + 'reference': self.reference, 'service_id': str(self.service_id), diff --git a/migrations/versions/0337_broadcast_msg_api.py b/migrations/versions/0337_broadcast_msg_api.py new file mode 100644 index 000000000..96287e2bc --- /dev/null +++ b/migrations/versions/0337_broadcast_msg_api.py @@ -0,0 +1,26 @@ +""" + +Revision ID: 0337_broadcast_msg_api +Revises: 0336_broadcast_msg_content_2 +Create Date: 2020-12-04 15:06:22.544803 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +revision = '0337_broadcast_msg_api' +down_revision = '0336_broadcast_msg_content_2' + + +def upgrade(): + op.alter_column('broadcast_message', 'created_by_id', nullable=True) + op.add_column('broadcast_message', sa.Column('api_key_id', postgresql.UUID(), nullable=True)) + op.create_foreign_key(None, 'broadcast_message', 'api_keys', ['api_key_id'], ['id']) + op.add_column('broadcast_message', sa.Column('reference', sa.String(length=255), nullable=True)) + + +def downgrade(): + op.alter_column('broadcast_message', 'created_by_id', nullable=False) + op.drop_column('broadcast_message', 'api_key_id') + op.add_column('broadcast_message', 'reference')