forked from bcgov/STRR
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* API/Queue - email svc Signed-off-by: Kial Jinnah <kialj876@gmail.com> * Updates for PR comments Signed-off-by: Kial Jinnah <kialj876@gmail.com> * Lint fixes Signed-off-by: Kial Jinnah <kialj876@gmail.com> * attempt to fix pylint crash Signed-off-by: Kial Jinnah <kialj876@gmail.com> --------- Signed-off-by: Kial Jinnah <kialj876@gmail.com>
- Loading branch information
Showing
34 changed files
with
5,167 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
FROM mcr.microsoft.com/devcontainers/python:1-3.12-bullseye | ||
|
||
ENV PYTHONUNBUFFERED 1 | ||
|
||
# [Optional] If your requirements rarely change, uncomment this section to add them to the image. | ||
# COPY requirements.txt /tmp/pip-tmp/ | ||
# RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \ | ||
# && rm -rf /tmp/pip-tmp | ||
|
||
# [Optional] Uncomment this section to install additional OS packages. | ||
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ | ||
&& apt-get -y install --no-install-recommends postgresql-client libpq-dev |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the | ||
// README at: https://github.com/devcontainers/templates/tree/main/src/postgres | ||
{ | ||
"name": "Python 3", | ||
"build": { | ||
"dockerfile": "Dockerfile" | ||
}, | ||
"features": { | ||
"ghcr.io/devcontainers-contrib/features/poetry:2": { | ||
"version": "latest" | ||
} | ||
}, | ||
|
||
// Features to add to the dev container. More info: https://containers.dev/features. | ||
// "features": {}, | ||
|
||
// Use 'forwardPorts' to make a list of ports inside the container available locally. | ||
// This can be used to network with other containers or the host. | ||
"forwardPorts": [5000], | ||
|
||
// Use 'postCreateCommand' to run commands after the container is created. | ||
// "postCreateCommand": "pip install --user -r requirements.txt", | ||
"postCreateCommand": "poetry config virtualenvs.in-project true && poetry install" | ||
|
||
// Configure tool-specific properties. | ||
// "customizations": {}, | ||
|
||
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. | ||
// "remoteUser": "root" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
Dockerfile | ||
.dockerignore | ||
.pytest_cache | ||
__pycache__ | ||
venv | ||
.venv | ||
.env | ||
.env* | ||
.eggs | ||
Makefile | ||
devops | ||
k8s | ||
manage.py | ||
migrations | ||
pre-hook-update-db.sh | ||
requirements | ||
tests |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Flask | ||
FLASK_ENV= | ||
FLASK_APP= | ||
SECRET= | ||
APP_SETTINGS= | ||
|
||
# SQL Alchemy | ||
DATABASE_USERNAME= | ||
DATABASE_PASSWORD= | ||
DATABASE_NAME= | ||
DATABASE_HOST= | ||
DATABASE_PORT= | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
3.12.2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
FROM python:3.12.2-bullseye AS development_build | ||
|
||
USER root | ||
|
||
ARG VCS_REF="missing" | ||
ARG BUILD_DATE="missing" | ||
|
||
ENV VCS_REF=${VCS_REF} | ||
ENV BUILD_DATE=${BUILD_DATE} | ||
ENV PORT=8080 | ||
|
||
LABEL org.label-schema.vcs-ref=${VCS_REF} \ | ||
org.label-schema.build-date=${BUILD_DATE} | ||
|
||
LABEL vendor="BCROS" | ||
|
||
ARG APP_ENV \ | ||
# Needed for fixing permissions of files created by Docker: | ||
UID=1000 \ | ||
GID=1000 | ||
|
||
ENV APP_ENV=${APP_ENV} \ | ||
# python: | ||
PYTHONFAULTHANDLER=1 \ | ||
PYTHONUNBUFFERED=1 \ | ||
PYTHONHASHSEED=random \ | ||
PYTHONDONTWRITEBYTECODE=1 \ | ||
# pip: | ||
PIP_NO_CACHE_DIR=1 \ | ||
PIP_DISABLE_PIP_VERSION_CHECK=1 \ | ||
PIP_DEFAULT_TIMEOUT=100 \ | ||
PIP_ROOT_USER_ACTION=ignore \ | ||
# poetry: | ||
POETRY_VERSION=1.8.2 \ | ||
POETRY_NO_INTERACTION=1 \ | ||
POETRY_VIRTUALENVS_CREATE=false \ | ||
POETRY_CACHE_DIR='/var/cache/pypoetry' \ | ||
POETRY_HOME='/usr/local' \ | ||
POETRY_INSTALLER_PARALLEL=false \ | ||
POETRY_INSTALLER_MODERN-INSTALLATION=false | ||
|
||
SHELL ["/bin/bash", "-eo", "pipefail", "-c"] | ||
|
||
RUN apt-get update && apt-get upgrade -y \ | ||
&& apt-get install --no-install-recommends -y \ | ||
bash \ | ||
brotli \ | ||
build-essential \ | ||
curl \ | ||
gettext \ | ||
git \ | ||
libpq-dev \ | ||
wait-for-it \ | ||
&& curl -sSL 'https://install.python-poetry.org' | python - \ | ||
&& poetry --version \ | ||
# Cleaning cache: | ||
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ | ||
&& apt-get clean -y && rm -rf /var/lib/apt/lists/* | ||
|
||
WORKDIR /code | ||
|
||
RUN groupadd -g "${GID}" -r web \ | ||
&& useradd -d '/code' -g web -l -r -u "${UID}" web \ | ||
&& chown web:web -R '/code' | ||
|
||
# Copy only requirements, to cache them in docker layer | ||
COPY --chown=web:web ./poetry.lock ./pyproject.toml /code/ | ||
|
||
COPY --chown=web:web ./src /code/src | ||
COPY --chown=web:web ./README.md /code | ||
|
||
# Project initialization: | ||
RUN --mount=type=cache,target="$POETRY_CACHE_DIR" \ | ||
echo "$APP_ENV" \ | ||
&& poetry version \ | ||
# Install deps: | ||
&& poetry run pip install -U pip \ | ||
&& poetry install \ | ||
$(if [ -z ${APP_ENV+x} ] | [ "$APP_ENV" = 'production' ]; then echo '--only main'; fi) \ | ||
--no-interaction --no-ansi | ||
|
||
# Running as non-root user: | ||
USER web | ||
|
||
# The following stage is only for production: | ||
FROM development_build AS production_build | ||
COPY --chown=web:web . /code | ||
|
||
# ENV PYTHONPATH=/opt/app-root/src | ||
|
||
CMD gunicorn --bind 0.0.0.0:${PORT} --config /code/gunicorn_config.py wsgi:app |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
Copyright © 2025 Province of British Columbia | ||
|
||
Licensed under the BSD 3 Clause License, (the "License"); | ||
you may not use this file except in compliance with the License. | ||
The template for the license can be found here | ||
https://opensource.org/license/bsd-3-clause/ | ||
|
||
Redistribution and use in source and binary forms, | ||
with or without modification, are permitted provided that the | ||
following conditions are met: | ||
|
||
1. Redistributions of source code must retain the above copyright notice, | ||
this list of conditions and the following disclaimer. | ||
|
||
2. Redistributions in binary form must reproduce the above copyright notice, | ||
this list of conditions and the following disclaimer in the documentation | ||
and/or other materials provided with the distribution. | ||
|
||
3. Neither the name of the copyright holder nor the names of its contributors | ||
may be used to endorse or promote products derived from this software | ||
without specific prior written permission. | ||
|
||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” | ||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | ||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | ||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
POSSIBILITY OF SUCH DAMAGE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
.PHONY: lint | ||
.PHONY: build | ||
|
||
MKFILE_PATH:=$(abspath $(lastword $(MAKEFILE_LIST))) | ||
CURRENT_ABS_DIR:=$(patsubst %/,%,$(dir $(MKFILE_PATH))) | ||
|
||
PROJECT_NAME:=strr_email | ||
DOCKER_NAME:=strr-email | ||
|
||
################################################################################# | ||
# COMMANDS -- Setup # | ||
################################################################################# | ||
|
||
################################################################################# | ||
# COMMANDS - CI # | ||
################################################################################# | ||
pylint: ## Linting with pylint | ||
pylint --rcfile=setup.cfg src/$(PROJECT_NAME) | ||
|
||
flake8: ## Linting with flake8 ## tests | ||
flake8 src/$(PROJECT_NAME) | ||
|
||
lint: pylint flake8 ## run all lint type scripts | ||
|
||
test: ## Unit testing | ||
pytest | ||
|
||
build: ## Build the docker container | ||
docker build . -t $(DOCKER_NAME) \ | ||
--platform linux/amd64 \ | ||
--build-arg VCS_REF=$(shell git rev-parse --short HEAD) \ | ||
--build-arg BUILD_DATE=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ") | ||
|
||
build-nc: ## Build the docker container without caching | ||
docker build --no-cache -t $(DOCKER_NAME) . | ||
|
||
################################################################################# | ||
# COMMANDS - Local # | ||
################################################################################# | ||
|
||
################################################################################# | ||
# Self Documenting Commands # | ||
################################################################################# | ||
.PHONY: help | ||
|
||
.DEFAULT_GOAL := help | ||
|
||
help: | ||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
[![License](https://img.shields.io/badge/License-BSD%203%20Clause-blue.svg)](LICENSE) | ||
[![codecov](https://codecov.io/gh/bcgov/lear/branch/master/graph/badge.svg?flag=entityepay)](https://codecov.io/gh/bcgov/lear/tree/master/queue_services/entity-pay) | ||
|
||
# Application Name | ||
|
||
BC Registries - strr-email | ||
|
||
## Technology Stack Used | ||
* Python, Flask | ||
* Postgres - SQLAlchemy, psycopg2-binary & alembic | ||
|
||
## Third-Party Products/Libraries used and the the License they are covert by | ||
|
||
|
||
## Documentation | ||
|
||
GitHub Pages (https://guides.github.com/features/pages/) are a neat way to document you application/project. | ||
|
||
## Security | ||
|
||
Future - BCGov Keycloak | ||
|
||
Current - JWT hack | ||
|
||
## Files in this repository | ||
|
||
``` | ||
docs/ - Project Documentation | ||
└── images | ||
└── icons | ||
openshift/ - OpenShift-specific files | ||
├── scripts - helper scripts | ||
└── templates - application templates | ||
``` | ||
|
||
## Deployment (Local Development) | ||
|
||
* Developer Workstation Requirements/Setup | ||
* Application Specific Setup | ||
|
||
|
||
## Getting Help or Reporting an Issue | ||
|
||
To report bugs/issues/feature requests, please file an [issue](../../issues). | ||
|
||
## How to Contribute | ||
|
||
If you would like to contribute, please see our [CONTRIBUTING](./CONTRIBUTING.md) guidelines. | ||
|
||
Please note that this project is released with a [Contributor Code of Conduct](./CODE_OF_CONDUCT.md). | ||
By participating in this project you agree to abide by its terms. | ||
|
||
## License | ||
|
||
Copyright 2018 Province of British Columbia | ||
|
||
Licensed under the Apache License, Version 2.0 (the "License"); | ||
you may not use this file except in compliance with the License. | ||
You may obtain a copy of the License at | ||
|
||
http://www.apache.org/licenses/LICENSE-2.0 | ||
|
||
Unless required by applicable law or agreed to in writing, software | ||
distributed under the License is distributed on an "AS IS" BASIS, | ||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
See the License for the specific language governing permissions and | ||
limitations under the License. | ||
|
8 changes: 8 additions & 0 deletions
8
queue_services/strr-email/email-templates/common/strr-footer.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
--- | ||
|
||
**Short-Term Rental Registry** | ||
BC STRR Contact | ||
|
||
Toll Free: [{{ toll_free_tel }}](tel:{{ toll_free_tel }}) | ||
Victoria Office: [{{ vic_office_tel }}](tel:{{ vic_office_tel }}) | ||
Email: [{{ ops_email }}](mailto:{{ ops_email }}) |
1 change: 1 addition & 0 deletions
1
...vices/strr-email/email-templates/common/strr-title-application-status-change.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# Notification that your B.C. Short-Term Rental Application status has updated |
8 changes: 8 additions & 0 deletions
8
queue_services/strr-email/email-templates/strr-HOST_FULL_REVIEW_APPROVED.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
[[strr-title-application-status-change.md]] | ||
|
||
### Placeholder Email | ||
|
||
Application Number: {{ application_num }} | ||
Your application has been approved. | ||
|
||
[[strr-footer.md]] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
# Copyright © 2025 Province of British Columbia | ||
# | ||
# Licensed under the BSD 3 Clause License, (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# The template for the license can be found here | ||
# https://opensource.org/license/bsd-3-clause/ | ||
# | ||
# Redistribution and use in source and binary forms, | ||
# with or without modification, are permitted provided that the | ||
# following conditions are met: | ||
# | ||
# 1. Redistributions of source code must retain the above copyright notice, | ||
# this list of conditions and the following disclaimer. | ||
# | ||
# 2. Redistributions in binary form must reproduce the above copyright notice, | ||
# this list of conditions and the following disclaimer in the documentation | ||
# and/or other materials provided with the distribution. | ||
# | ||
# 3. Neither the name of the copyright holder nor the names of its contributors | ||
# may be used to endorse or promote products derived from this software | ||
# without specific prior written permission. | ||
# | ||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” | ||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | ||
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | ||
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
# POSSIBILITY OF SUCH DAMAGE. | ||
"""The configuration for gunicorn, which picks up the | ||
runtime options from environment variables | ||
""" | ||
|
||
import os | ||
|
||
workers = int(os.environ.get("GUNICORN_PROCESSES", "1")) # pylint: disable=invalid-name | ||
threads = int(os.environ.get("GUNICORN_THREADS", "1")) # pylint: disable=invalid-name | ||
timeout = int(os.environ.get("GUNICORN_TIMEOUT", "600")) # pylint: disable=invalid-name | ||
|
||
forwarded_allow_ips = "*" # pylint: disable=invalid-name | ||
secure_scheme_headers = {"X-Forwarded-Proto": "https"} # pylint: disable=invalid-name |
Oops, something went wrong.