Skip to content

Commit

Permalink
Merge branch 'main' into bugfix/DESENG-579-survey-email-links
Browse files Browse the repository at this point in the history
  • Loading branch information
NatSquared authored May 14, 2024
2 parents 2971f9c + 1b990ba commit f410a0e
Show file tree
Hide file tree
Showing 30 changed files with 899 additions and 349 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/met-web-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ env:
OPENSHIFT_SA_NAME: ${{ secrets.OPENSHIFT_SA_NAME }}
OPENSHIFT_IMAGE_REGISTRY: ${{ secrets.OPENSHIFT_IMAGE_REGISTRY }}
OPENSHIFT_REPOSITORY: ${{ secrets.OPENSHIFT_REPOSITORY }}
FONTAWESOME_TOKEN: ${{ secrets.FONTAWESOME_PACKAGE_TOKEN }}

jobs:
met-web-cd:
Expand All @@ -52,7 +53,7 @@ jobs:
- name: Build image
run: |
docker build . --file Dockerfile --tag image
docker build . --file Dockerfile --build-arg FONTAWESOME_TOKEN=${{ env.FONTAWESOME_TOKEN}} --tag image
- name: Push image
run: |
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/met-web-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,9 @@ jobs:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: |
npm config set '//npm.fontawesome.com/:_authToken' "${{ secrets.FONTAWESOME_PACKAGE_TOKEN }}"
npm install --legacy-peer-deps
env:
FONTAWESOME_PACKAGE_TOKEN: ${{ secrets.FONTAWESOME_PACKAGE_TOKEN }}
- name: Lint
id: lint
run: |
Expand All @@ -62,8 +63,9 @@ jobs:

- name: Install dependencies
run: |
npm config set '//npm.fontawesome.com/:_authToken' "${{ secrets.FONTAWESOME_PACKAGE_TOKEN }}"
npm install --legacy-peer-deps
env:
FONTAWESOME_PACKAGE_TOKEN: ${{ secrets.FONTAWESOME_PACKAGE_TOKEN }}

- name: Test with jest
id: test
Expand Down Expand Up @@ -98,8 +100,9 @@ jobs:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: |
npm config set '//npm.fontawesome.com/:_authToken' "${{ secrets.FONTAWESOME_PACKAGE_TOKEN }}"
npm install --legacy-peer-deps
env:
FONTAWESOME_PACKAGE_TOKEN: ${{ secrets.FONTAWESOME_PACKAGE_TOKEN }}
- name: build to check strictness
id: build
run: |
Expand Down
18 changes: 18 additions & 0 deletions CHANGELOG.MD
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,24 @@
- The system tries to determine the language from the user's browser, but if it can't, it defaults to English
- A future, larger refactor could allow us to remember the user's language preference and always use that

## May 13, 2024

- **Bugfix** Date shown on rejection email preview is incorrect [🎟️ DESENG-597](https://apps.itsm.gov.bc.ca/jira/browse/DESENG-597)
- Fixed the date formatting issue and using the end_date in the email preview
- Updated unit tests

## May 10, 2024

- **Bugfix** Language picker should only appear on engagements with more than one language [🎟️ DESENG-575](https://apps.itsm.gov.bc.ca/jira/browse/DESENG-575)
- Allow for the web app to see if there are available translations by language
- Disable language switching itself for now until design decisions are made

## May 9, 2024

- **Feature** [Engagement Filtering UXD] - Public | No Results Message [🎟️ DESENG-586](https://apps.itsm.gov.bc.ca/jira/browse/DESENG-586)
- Added a new no results page to display to users when their search term(s) and / or filter(s) returns no engagement results on landing page.
- Contact information is developed but hidden currently as this was the approach requested in the ticket till the contact information is decided.

## May 8, 2024

- **Feature** Add font awesome to MET web [🎟️ DESENG-543](https://apps.itsm.gov.bc.ca/jira/browse/DESENG-543)
Expand Down
14 changes: 11 additions & 3 deletions met-api/src/met_api/models/engagement_translation.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@

from __future__ import annotations
from typing import Optional

from sqlalchemy import UniqueConstraint
from sqlalchemy.dialects.postgresql import JSON

from met_api.models.language import Language as LanguageModel
from .base_model import BaseModel
from .db import db

Expand All @@ -17,7 +16,6 @@ class EngagementTranslation(BaseModel):
"""Definition of the Engagement Translation entity."""

__tablename__ = 'engagement_translation'

id = db.Column(db.Integer, primary_key=True, autoincrement=True)
engagement_id = db.Column(db.Integer, db.ForeignKey('engagement.id', ondelete='CASCADE'), nullable=False)
language_id = db.Column(db.Integer, db.ForeignKey('language.id', ondelete='CASCADE'), nullable=False)
Expand Down Expand Up @@ -100,3 +98,13 @@ def delete_engagement_translation(engagement_translation_id):
db.session.commit()
return True
return False

@staticmethod
def get_available_translation_languages(engagement_id):
"""Get the list of translations for this engagement, then tally the languages that are used."""
available_translations_query = db.session.query(EngagementTranslation.language_id)\
.filter_by(engagement_id=engagement_id)
language_list = db.session.query(LanguageModel)\
.filter(LanguageModel.id.in_(available_translations_query))\
.all()
return language_list
23 changes: 23 additions & 0 deletions met-api/src/met_api/resources/engagement_translation.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,3 +130,26 @@ def patch(engagement_id, engagement_translation_id):
return str(err), HTTPStatus.NOT_FOUND
except ValidationError as err:
return str(err.messages), HTTPStatus.BAD_REQUEST


@cors_preflight('GET')
@API.route('/languages')
class EngagementTranslationsLanguages(Resource):
"""Get a list of languages that this engagement is translated into."""

@staticmethod
@cross_origin(origins=allowedorigins())
def get(engagement_id):
"""Get a list of all languages available for each of this engagement's translations."""
try:
available_translation_language = (
EngagementTranslationService.get_available_engagement_translation_languages(
engagement_id
)
)
return (
jsonify(available_translation_language),
HTTPStatus.OK,
)
except (KeyError, ValueError) as err:
return str(err), HTTPStatus.BAD_REQUEST
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from met_api.models.engagement_summary_content import EngagementSummary as EngagementSummaryModel
from met_api.models.engagement_translation import EngagementTranslation as EngagementTranslationModel
from met_api.models.language import Language as LanguageModel
from met_api.schemas.language import LanguageSchema
from met_api.schemas.engagement_translation import EngagementTranslationSchema
from met_api.services import authorization
from met_api.utils.roles import Role
Expand Down Expand Up @@ -113,6 +114,14 @@ def delete_engagement_translation(engagement_id, engagement_translation_id):

return EngagementTranslationModel.delete_engagement_translation(engagement_translation_id)

@staticmethod
def get_available_engagement_translation_languages(engagement_id):
"""Get a list of all languages for each entry in the engagement_translation table."""
language_schema = LanguageSchema(many=True)
available_translations = EngagementTranslationModel.get_available_translation_languages(engagement_id)

return language_schema.dump(available_translations)

@staticmethod
def _verify_engagement_translation(engagement_translation_id):
"""Verify if engagement translation exists."""
Expand Down
32 changes: 32 additions & 0 deletions met-api/tests/unit/api/test_engagement_translation.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,3 +224,35 @@ def test_get_engagement_translation_by_id(client, jwt, session, engagement_trans
rv = client.get(f'/api/engagement/{engagement.id}/translations/{engagement_translation.id}',
headers=headers, content_type=ContentType.JSON.value)
assert rv.status_code == HTTPStatus.INTERNAL_SERVER_ERROR


@pytest.mark.parametrize('engagement_translation_info', [TestEngagementTranslationInfo.engagementtranslation1])
def test_get_available_engagement_translation_languages(client, jwt, session,
engagement_translation_info): # pylint:disable=unused-argument
"""Assert that an engagement with a no translations returns no languages available."""
engagement = factory_engagement_model()
language = factory_language_model({'name': 'French', 'code': 'fr', 'right_to_left': False})

query_url = f'/api/engagement/{engagement.id}/translations/languages'

rv = client.get(query_url, content_type=ContentType.JSON.value)
assert rv.status_code == HTTPStatus.OK
json_data = rv.json
assert json_data == []

engagement_translation_info['engagement_id'] = engagement.id
engagement_translation_info['language_id'] = language.id
factory_engagement_translation_model(engagement_translation_info)

"""Assert that an engagement with a French translation returns
that it has a translation available in the French language."""
rv = client.get(query_url, content_type=ContentType.JSON.value)
assert rv.status_code == HTTPStatus.OK
json_data = rv.json
assert json_data[0]['name'] == 'French'
assert json_data[0]['code'] == 'fr'

with patch.object(EngagementTranslationService, 'get_available_engagement_translation_languages',
side_effect=[KeyError('Test error'), ValueError('Test error')]):
rv = client.get(query_url, content_type=ContentType.JSON.value)
assert rv.status_code == HTTPStatus.BAD_REQUEST
1 change: 1 addition & 0 deletions met-web/.npmrc
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=${FONTAWESOME_PACKAGE_TOKEN}
7 changes: 7 additions & 0 deletions met-web/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,16 @@ WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# Argument for the FontAwesome token
ARG FONTAWESOME_TOKEN

# Set FontAwesome token as an environment variable for use in the .npmrc
ENV FONTAWESOME_PACKAGE_TOKEN=${FONTAWESOME_TOKEN}

# install app dependencies
COPY package.json ./
COPY package-lock.json ./
COPY .npmrc ./

RUN npm install --silent
RUN npm install [email protected] -g --silent
Expand Down
2 changes: 1 addition & 1 deletion met-web/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ React.js frontend application for The Modern Engagement Tool project.
* Install the following:
- [Node.js](https://nodejs.org/en/)
* Install Dependencies
- Set token for fontawesome by running `npm config set '//npm.fontawesome.com/:_authToken' "FONTAWESOME_PACKAGE_TOKEN"`
- Set env variable `FONTAWESOME_PACKAGE_TOKEN` in your system
- Run `npm install` in the root of the project (met-web)

## Environment Variables
Expand Down
Loading

0 comments on commit f410a0e

Please sign in to comment.