Skip to content

Commit

Permalink
Merge branch 'main' into feature/deseng-444-engagement-metadata-api
Browse files Browse the repository at this point in the history
  • Loading branch information
NatSquared authored Jan 25, 2024
2 parents 2780b93 + 3ec0a75 commit 17879a2
Show file tree
Hide file tree
Showing 35 changed files with 1,640 additions and 97 deletions.
13 changes: 4 additions & 9 deletions .github/workflows/analytics-api-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,6 @@ on:
description: "Environment (dev/test/prod)"
required: true
default: "dev"
project_type:
description: "Project Type (EAO/GDX)"
required: false
default: "EAO" # Default value is EAO

defaults:
run:
Expand All @@ -26,13 +22,12 @@ defaults:
env:
APP_NAME: "analytics-api"
TAG_NAME: "${{github.event.inputs.environment || 'dev' }}" # If the environment type is manually selected, use the input value; otherwise, use 'dev' as default
PROJECT_TYPE: "${{ github.event.inputs.project_type || 'EAO' }}" # If the project type is manually selected, use the input value; otherwise, use 'EAO' as default

OPENSHIFT_LOGIN_REGISTRY: ${{ secrets.OPENSHIFT_LOGIN_REGISTRY }}
OPENSHIFT_SA_TOKEN: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_SA_TOKEN || secrets.OPENSHIFT_SA_TOKEN_EAO }}
OPENSHIFT_SA_NAME: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_SA_NAME || secrets.OPENSHIFT_SA_NAME_EAO }}
OPENSHIFT_IMAGE_REGISTRY: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_IMAGE_REGISTRY || secrets.OPENSHIFT_IMAGE_REGISTRY_EAO }}
OPENSHIFT_REPOSITORY: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_REPOSITORY || secrets.OPENSHIFT_REPOSITORY_EAO }}
OPENSHIFT_SA_TOKEN: ${{ secrets.OPENSHIFT_SA_TOKEN }}
OPENSHIFT_SA_NAME: ${{ secrets.OPENSHIFT_SA_NAME }}
OPENSHIFT_IMAGE_REGISTRY: ${{ secrets.OPENSHIFT_IMAGE_REGISTRY }}
OPENSHIFT_REPOSITORY: ${{ secrets.OPENSHIFT_REPOSITORY }}

jobs:
analytics-api-cd:
Expand Down
10 changes: 2 additions & 8 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@ on:
description: "Environment (test/prod)"
required: true
default: "test"
project_type:
description: "Project Type (EAO/GDX)"
required: false
default: "GDX" # Default value is GDX

defaults:
run:
Expand All @@ -19,12 +15,10 @@ defaults:

env:
TAG_NAME: "${{ github.event.inputs.environment || 'test' }}" # If the environment type is manually selected, use the input value; otherwise, use 'test' as default
PROJECT_TYPE: "${{ github.event.inputs.project_type || 'GDX' }}" # If the project type is manually selected, use the input value; otherwise, use 'GDX' as default

# Set OpenShift related variables based on PROJECT_TYPE
OPENSHIFT_LOGIN_REGISTRY: ${{ secrets.OPENSHIFT_LOGIN_REGISTRY }}
OPENSHIFT_SA_TOKEN: ${{ (github.event.inputs.project_type == 'EAO') && secrets.OPENSHIFT_SA_TOKEN_EAO || secrets.OPENSHIFT_SA_TOKEN }}
OPENSHIFT_REPOSITORY: ${{ (github.event.inputs.project_type == 'EAO') && secrets.OPENSHIFT_REPOSITORY_EAO || secrets.OPENSHIFT_REPOSITORY }}
OPENSHIFT_SA_TOKEN: ${{ secrets.OPENSHIFT_SA_TOKEN }}
OPENSHIFT_REPOSITORY: ${{ secrets.OPENSHIFT_REPOSITORY }}

jobs:
met-deployment:
Expand Down
16 changes: 5 additions & 11 deletions .github/workflows/met-api-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,7 @@ on:
environment:
description: "Environment (dev/test/prod)"
required: true
default: "dev"
project_type:
description: "Project Type (EAO/GDX)"
required: false
default: "EAO" # Default value is EAO
default: "dev"

defaults:
run:
Expand All @@ -26,14 +22,12 @@ defaults:
env:
APP_NAME: "met-api"
TAG_NAME: "${{ github.event.inputs.environment || 'dev' }}" # If the environment type is manually selected, use the input value; otherwise, use 'dev' as default
PROJECT_TYPE: "${{ github.event.inputs.project_type || 'EAO' }}" # If the project type is manually selected, use the input value; otherwise, use 'EAO' as default

# Set OpenShift related variables based on PROJECT_TYPE
OPENSHIFT_LOGIN_REGISTRY: ${{ secrets.OPENSHIFT_LOGIN_REGISTRY }}
OPENSHIFT_SA_TOKEN: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_SA_TOKEN || secrets.OPENSHIFT_SA_TOKEN_EAO }}
OPENSHIFT_SA_NAME: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_SA_NAME || secrets.OPENSHIFT_SA_NAME_EAO }}
OPENSHIFT_IMAGE_REGISTRY: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_IMAGE_REGISTRY || secrets.OPENSHIFT_IMAGE_REGISTRY_EAO }}
OPENSHIFT_REPOSITORY: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_REPOSITORY || secrets.OPENSHIFT_REPOSITORY_EAO }}
OPENSHIFT_SA_TOKEN: ${{ secrets.OPENSHIFT_SA_TOKEN }}
OPENSHIFT_SA_NAME: ${{ secrets.OPENSHIFT_SA_NAME }}
OPENSHIFT_IMAGE_REGISTRY: ${{ secrets.OPENSHIFT_IMAGE_REGISTRY }}
OPENSHIFT_REPOSITORY: ${{ secrets.OPENSHIFT_REPOSITORY }}


jobs:
Expand Down
15 changes: 5 additions & 10 deletions .github/workflows/met-cron-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,7 @@ on:
environment:
description: "Environment (dev/test/prod)"
required: true
default: "dev"
project_type:
description: "Project Type (EAO/GDX)"
required: false
default: "EAO" # Default value is EAO
default: "dev"

defaults:
run:
Expand All @@ -27,13 +23,12 @@ defaults:
env:
APP_NAME: "met-cron"
TAG_NAME: "${{github.event.inputs.environment || 'dev' }}" # If the environment type is manually selected, use the input value; otherwise, use 'dev' as default
PROJECT_TYPE: "${{ github.event.inputs.project_type || 'EAO' }}" # If the project type is manually selected, use the input value; otherwise, use 'EAO' as default

OPENSHIFT_LOGIN_REGISTRY: ${{ secrets.OPENSHIFT_LOGIN_REGISTRY }}
OPENSHIFT_SA_TOKEN: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_SA_TOKEN || secrets.OPENSHIFT_SA_TOKEN_EAO }}
OPENSHIFT_SA_NAME: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_SA_NAME || secrets.OPENSHIFT_SA_NAME_EAO }}
OPENSHIFT_IMAGE_REGISTRY: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_IMAGE_REGISTRY || secrets.OPENSHIFT_IMAGE_REGISTRY_EAO }}
OPENSHIFT_REPOSITORY: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_REPOSITORY || secrets.OPENSHIFT_REPOSITORY_EAO }}
OPENSHIFT_SA_TOKEN: ${{ secrets.OPENSHIFT_SA_TOKEN }}
OPENSHIFT_SA_NAME: ${{ secrets.OPENSHIFT_SA_NAME }}
OPENSHIFT_IMAGE_REGISTRY: ${{ secrets.OPENSHIFT_IMAGE_REGISTRY }}
OPENSHIFT_REPOSITORY: ${{ secrets.OPENSHIFT_REPOSITORY }}


jobs:
Expand Down
16 changes: 5 additions & 11 deletions .github/workflows/met-etl-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,7 @@ on:
environment:
description: "Environment (dev/test/prod)"
required: true
default: "dev"
project_type:
description: "Project Type (EAO/GDX)"
required: false
default: "EAO" # Default value is EAO
default: "dev"

defaults:
run:
Expand All @@ -28,14 +24,12 @@ env:
APP_NAME: "dagster-etl"
DEPLOYMENT_NAME: "dagster-dagster-user-deployments-etl"
TAG_NAME: "dev"

PROJECT_TYPE: "${{ github.event.inputs.project_type || 'EAO' }}" # If the project type is manually selected, use the input value; otherwise, use 'EAO' as default

OPENSHIFT_LOGIN_REGISTRY: ${{ secrets.OPENSHIFT_LOGIN_REGISTRY }}
OPENSHIFT_SA_TOKEN: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_SA_TOKEN || secrets.OPENSHIFT_SA_TOKEN_EAO }}
OPENSHIFT_SA_NAME: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_SA_NAME || secrets.OPENSHIFT_SA_NAME_EAO }}
OPENSHIFT_IMAGE_REGISTRY: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_IMAGE_REGISTRY || secrets.OPENSHIFT_IMAGE_REGISTRY_EAO }}
OPENSHIFT_REPOSITORY: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_REPOSITORY || secrets.OPENSHIFT_REPOSITORY_EAO }}
OPENSHIFT_SA_TOKEN: ${{ secrets.OPENSHIFT_SA_TOKEN }}
OPENSHIFT_SA_NAME: ${{ secrets.OPENSHIFT_SA_NAME }}
OPENSHIFT_IMAGE_REGISTRY: ${{ secrets.OPENSHIFT_IMAGE_REGISTRY }}
OPENSHIFT_REPOSITORY: ${{ secrets.OPENSHIFT_REPOSITORY }}

jobs:
met-cron-cd:
Expand Down
14 changes: 4 additions & 10 deletions .github/workflows/met-web-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,6 @@ on:
description: "Environment (dev/test/prod)"
required: true
default: "dev"
project_type:
description: "Project Type (EAO/GDX)"
required: false
default: "EAO" # Default value is EAO

defaults:
run:
Expand All @@ -26,14 +22,12 @@ defaults:
env:
APP_NAME: "met-web"
TAG_NAME: "${{ github.event.inputs.environment || 'dev' }}" # If the environment type is manually selected, use the input value; otherwise, use 'dev' as default

PROJECT_TYPE: "${{ github.event.inputs.project_type || 'EAO' }}" # If the project type is manually selected, use the input value; otherwise, use 'EAO' as default

OPENSHIFT_LOGIN_REGISTRY: ${{ secrets.OPENSHIFT_LOGIN_REGISTRY }}
OPENSHIFT_SA_TOKEN: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_SA_TOKEN || secrets.OPENSHIFT_SA_TOKEN_EAO }}
OPENSHIFT_SA_NAME: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_SA_NAME || secrets.OPENSHIFT_SA_NAME_EAO }}
OPENSHIFT_IMAGE_REGISTRY: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_IMAGE_REGISTRY || secrets.OPENSHIFT_IMAGE_REGISTRY_EAO }}
OPENSHIFT_REPOSITORY: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_REPOSITORY || secrets.OPENSHIFT_REPOSITORY_EAO }}
OPENSHIFT_SA_TOKEN: ${{ secrets.OPENSHIFT_SA_TOKEN }}
OPENSHIFT_SA_NAME: ${{ secrets.OPENSHIFT_SA_NAME }}
OPENSHIFT_IMAGE_REGISTRY: ${{ secrets.OPENSHIFT_IMAGE_REGISTRY }}
OPENSHIFT_REPOSITORY: ${{ secrets.OPENSHIFT_REPOSITORY }}

jobs:
met-web-cd:
Expand Down
14 changes: 4 additions & 10 deletions .github/workflows/notify-api-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,6 @@ on:
description: "Environment (dev/test/prod)"
required: true
default: "dev"
project_type:
description: "Project Type (EAO/GDX)"
required: false
default: "EAO" # Default value is EAO

defaults:
run:
Expand All @@ -27,13 +23,11 @@ env:
APP_NAME: "notify-api"
TAG_NAME: "${{ github.event.inputs.environment || 'dev' }}" # If the environment type is manually selected, use the input value; otherwise, use 'dev' as default

PROJECT_TYPE: "${{ github.event.inputs.project_type || 'EAO' }}" # If the project type is manually selected, use the input value; otherwise, use 'EAO' as default

OPENSHIFT_LOGIN_REGISTRY: ${{ secrets.OPENSHIFT_LOGIN_REGISTRY }}
OPENSHIFT_SA_TOKEN: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_SA_TOKEN || secrets.OPENSHIFT_SA_TOKEN_EAO }}
OPENSHIFT_SA_NAME: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_SA_NAME || secrets.OPENSHIFT_SA_NAME_EAO }}
OPENSHIFT_IMAGE_REGISTRY: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_IMAGE_REGISTRY || secrets.OPENSHIFT_IMAGE_REGISTRY_EAO }}
OPENSHIFT_REPOSITORY: ${{ github.event.inputs.project_type == 'GDX' && secrets.OPENSHIFT_REPOSITORY || secrets.OPENSHIFT_REPOSITORY_EAO }}
OPENSHIFT_SA_TOKEN: ${{ secrets.OPENSHIFT_SA_TOKEN }}
OPENSHIFT_SA_NAME: ${{ secrets.OPENSHIFT_SA_NAME }}
OPENSHIFT_IMAGE_REGISTRY: ${{ secrets.OPENSHIFT_IMAGE_REGISTRY }}
OPENSHIFT_REPOSITORY: ${{ secrets.OPENSHIFT_REPOSITORY }}

jobs:
notify-api-cd:
Expand Down
15 changes: 14 additions & 1 deletion CHANGELOG.MD
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
## January 22, 2024
## January 25, 2024
- **Task** Resolve issue preventing met-web from deploying on the Dev OpenShift environment. [🎟️DESENG-469](https://apps.itsm.gov.bc.ca/jira/browse/DESENG-469)
- Remove Epic Engage-related links and update Keycloak link.
- Remove additional authentication method.

## January 24, 2024
- **Task** Update default project type to GDX for all deployments by default. [🎟️DESENG-472](https://apps.itsm.gov.bc.ca/jira/browse/DESENG-472)
- Set the default project type to GDX on all continuous deployment (CD) files.
- Removed the option to deploy to EAO.

## January 22, 2024
- **Task** Poll Widget: Back-end [🎟️DESENG-463](https://apps.itsm.gov.bc.ca/jira/browse/DESENG-463)
- Created Database models for Widget Poll, Poll Answers, Poll Response.
- Created API to manage Widget Poll, Poll Answers, Poll Response.
- Created Unit tests to test the code.
- **Task** Add missing unit tests for met api [🎟️DESENG-481](https://apps.itsm.gov.bc.ca/jira/browse/DESENG-481)
- Added missing unit tests for met api
- Added unit tests for error handling for met api
Expand Down
83 changes: 83 additions & 0 deletions met-api/migrations/versions/08f69642b7ae_adding_widget_poll.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
"""adding_widget_poll
Revision ID: 08f69642b7ae
Revises: bd0eb0d25caf
Create Date: 2024-01-16 14:25:07.611485
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

# revision identifiers, used by Alembic.
revision = '08f69642b7ae'
down_revision = 'bd0eb0d25caf'
branch_labels = None
depends_on = None


def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('widget_polls',
sa.Column('created_date', sa.DateTime(), nullable=False),
sa.Column('updated_date', sa.DateTime(), nullable=True),
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
sa.Column('title', sa.String(length=255), nullable=False),
sa.Column('description', sa.String(length=2048), nullable=True),
sa.Column('status', sa.Enum('active', 'inactive', name='poll_status'), nullable=True),
sa.Column('widget_id', sa.Integer(), nullable=False),
sa.Column('engagement_id', sa.Integer(), nullable=False),
sa.Column('created_by', sa.String(length=50), nullable=True),
sa.Column('updated_by', sa.String(length=50), nullable=True),
sa.ForeignKeyConstraint(['engagement_id'], ['engagement.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['widget_id'], ['widget.id'], ondelete='CASCADE'),
sa.PrimaryKeyConstraint('id')
)
op.create_table('poll_answers',
sa.Column('created_date', sa.DateTime(), nullable=False),
sa.Column('updated_date', sa.DateTime(), nullable=True),
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
sa.Column('answer_text', sa.String(length=255), nullable=False),
sa.Column('poll_id', sa.Integer(), nullable=False),
sa.Column('created_by', sa.String(length=50), nullable=True),
sa.Column('updated_by', sa.String(length=50), nullable=True),
sa.ForeignKeyConstraint(['poll_id'], ['widget_polls.id'], ondelete='CASCADE'),
sa.PrimaryKeyConstraint('id')
)
op.create_table('poll_responses',
sa.Column('created_date', sa.DateTime(), nullable=False),
sa.Column('updated_date', sa.DateTime(), nullable=True),
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
sa.Column('participant_id', sa.String(length=255), nullable=False),
sa.Column('selected_answer_id', sa.Integer(), nullable=False),
sa.Column('poll_id', sa.Integer(), nullable=False),
sa.Column('widget_id', sa.Integer(), nullable=False),
sa.Column('is_deleted', sa.Boolean(), nullable=True),
sa.Column('created_by', sa.String(length=50), nullable=True),
sa.Column('updated_by', sa.String(length=50), nullable=True),
sa.ForeignKeyConstraint(['poll_id'], ['widget_polls.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['selected_answer_id'], ['poll_answers.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['widget_id'], ['widget.id'], ondelete='CASCADE'),
sa.PrimaryKeyConstraint('id')
)
widget_type_table = sa.table('widget_type',
sa.Column('id', sa.Integer),
sa.Column('name', sa.String),
sa.Column('description', sa.String))

op.bulk_insert(widget_type_table, [
{'id': 10, 'name': 'Poll', 'description': 'The Poll Widget enables real-time polling and feedback collection from public.'}
])
# ### end Alembic commands ###


def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('poll_responses')
op.drop_table('poll_answers')
op.drop_table('widget_polls')

conn = op.get_bind()

conn.execute('DELETE FROM widget_type WHERE id=10')
# ### end Alembic commands ###
3 changes: 3 additions & 0 deletions met-api/src/met_api/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,6 @@
from .engagement_metadata import MetadataTaxon, EngagementMetadata
from .widget_timeline import WidgetTimeline
from .timeline_event import TimelineEvent
from .widget_poll import Poll
from .poll_answers import PollAnswer
from .poll_responses import PollResponse
56 changes: 56 additions & 0 deletions met-api/src/met_api/models/poll_answers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
"""
PollAnswers model class.
Manages the Poll answers
"""
from __future__ import annotations

from sqlalchemy.sql.schema import ForeignKey

from .base_model import BaseModel
from .db import db


class PollAnswer(BaseModel):
"""Definition of the PollAnswer entity."""

__tablename__ = 'poll_answers'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
answer_text = db.Column(db.String(255), nullable=False)
poll_id = db.Column(db.Integer, ForeignKey('widget_polls.id',
ondelete='CASCADE'), nullable=False)

@classmethod
def get_answers(cls, poll_id) -> list[PollAnswer]:
"""Get answers for a poll."""
session = db.session.query(PollAnswer)
return session.filter(PollAnswer.poll_id == poll_id).all()

@classmethod
def update_answer(cls, answer_id, answer_data: dict) -> PollAnswer:
"""Update an answer."""
answer = PollAnswer.query.get(answer_id)
if answer:
for key, value in answer_data.items():
setattr(answer, key, value)
answer.save()
return answer

@classmethod
def delete_answers_by_poll_id(cls, poll_id):
"""Delete answers."""
poll_answers = db.session.query(PollAnswer).filter(
PollAnswer.poll_id == poll_id
)
poll_answers.delete()
db.session.commit()

@classmethod
def bulk_insert_answers(cls, poll_id, answers):
"""Bulk insert answers for a poll."""
answer_data = [
{'poll_id': poll_id, 'answer_text': answer['answer_text']}
for answer in answers
]
db.session.bulk_insert_mappings(PollAnswer, answer_data)
db.session.commit()
Loading

0 comments on commit 17879a2

Please sign in to comment.