Skip to content

Commit

Permalink
Merge pull request #33 from guivaloz/guivaloz/update
Browse files Browse the repository at this point in the history
Guivaloz/update
  • Loading branch information
guivaloz authored Jan 21, 2025
2 parents f474691 + 58b421b commit 14c2590
Show file tree
Hide file tree
Showing 44 changed files with 384 additions and 947 deletions.
12 changes: 10 additions & 2 deletions .gcloudignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,26 @@
.directory
.env
.gcloudignore
.github
.gitignore
.DS_Store
.~lock.*

*.py[cod]
*.log
*.sqlite3
*.sqlite3-journal
*.session.sql
*.xls
*.xlsx
*.XLS
*.XLSX

__pycache__/
/.git
/.github
/.idea
/.venv
/.vscode
/pyproject.toml
/poetry.lock
/tests
/venv
13 changes: 0 additions & 13 deletions .github/workflows/black.yml

This file was deleted.

27 changes: 27 additions & 0 deletions .github/workflows/gcloud-app-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Google Cloud App Engine deploy

on:
push:
branches: ["main"]

jobs:
production-deploy:
if: github.repository == 'PJECZ/pjecz-pagos-cliente-flask'
runs-on: ubuntu-latest
permissions:
contents: "read"
id-token: "write"
steps:
- uses: "actions/checkout@v3"
- name: "authenticate"
uses: "google-github-actions/auth@v1"
with:
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ secrets.GCP_SA_KEY }}
- name: "deploy"
uses: "google-github-actions/deploy-appengine@v1"
with:
project_id: ${{ secrets.GCP_PROJECT_ID }}
deliverables: "app.yaml"
working_directory: "."
promote: true
26 changes: 21 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,12 +1,28 @@
.bashrc
.directory
.env
.DS_Store
.~lock.*

*.csv
*.html
*.log
*.py[cod]
*.sql
*.sqlite3
*.sqlite3-journal
*.session.sql
*.txt
*.xls
*.xlsx
*.XLS
*.XLSX

.bashrc
.env
poetry.lock

__pycache__/
*.egg-info/

/.idea/
/.venv/
/venv/
/app.yaml
/requirements.txt
pagos_cliente_flask/static/img/abortado.gif
17 changes: 17 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: check-yaml
- id: check-added-large-files

- repo: https://github.com/PyCQA/isort
rev: 5.12.0
hooks:
- id: isort

- repo: https://github.com/psf/black
rev: 23.7.0
hooks:
- id: black
17 changes: 6 additions & 11 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
{
"black-formatter.args": ["--line-length", "128"],
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[jinja-html]": {
"editor.formatOnSave": false
},
"github.branchProtection": true,
"git.branchProtection": ["main"],
"pylint.args": ["--max-line-length", "128"],
"[python]": {
"editor.defaultFormatter": "ms-python.python"
},
"python.linting.pylintArgs": ["--max-line-length", "256"],
"python.formatting.provider": "black",
"python.formatting.blackArgs": ["--line-length", "256"],
"python.linting.pylintEnabled": true,
"python.linting.enabled": true,
"python.analysis.typeCheckingMode": "basic"
"editor.defaultFormatter": "ms-python.black-formatter"
}
}
201 changes: 100 additions & 101 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,149 +6,148 @@ Cliente del Portal de Pagos hecho con Flask.

Genere el `SECRET_KEY` con este comando

openssl rand -hex 32
```bash
openssl rand -hex 32
```

Crear archivo `.env` con

# API Citas V3 cliente: el cual usa success y message
API_BASE_URL="http://localhost:8000/v3"
API_TIMEOUT=12
```ini
# API Citas V3 cliente: el cual usa success y message
API_BASE_URL="http://localhost:8000/v3"
API_TIMEOUT=12

# Base URL sirve para elaborar el vinculo al comprobante del pago
BASE_URL="http://localhost:5000"
# Base URL sirve para elaborar el vinculo al comprobante del pago
BASE_URL="http://localhost:5000"

# Flask
FLASK_APP=pagos_cliente_flask.app
FLASK_DEBUG=1
# Flask
FLASK_APP=pagos_cliente.app
FLASK_DEBUG=1

# Salt sirve para cifrar el ID con HashID
SALT=XXXXXXXXXXXXXXXXXXXXXXXX
# Salt sirve para cifrar el ID con HashID
SALT=XXXXXXXXXXXXXXXXXXXXXXXX

# Secret key sirve para CSRF
SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXX
# Secret key sirve para CSRF
SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXX

# reCAPTCHA configuration
RECAPTCHA_PUBLIC_KEY=XXXXXXXXXXXXXXXXXXXXXXXX
RECAPTCHA_PRIVATE_KEY=XXXXXXXXXXXXXXXXXXXXXXXX
# reCAPTCHA configuration
RECAPTCHA_PUBLIC_KEY=XXXXXXXXXXXXXXXXXXXXXXXX
RECAPTCHA_PRIVATE_KEY=XXXXXXXXXXXXXXXXXXXXXXXX
```

Crear archivo `.bashrc` que arranque el entorno virtual y cargue las variables

if [ -f ~/.bashrc ]
then
. ~/.bashrc
fi

if command -v figlet &> /dev/null
then
figlet PJECZ Pagos Cliente Flask
else
echo "== PJECZ Pagos Cliente Flask"
fi
```bash
if [ -f ~/.bashrc ]
then
. ~/.bashrc
fi

if command -v figlet &> /dev/null
then
figlet PJECZ Pagos Cliente Flask
else
echo "== PJECZ Pagos Cliente Flask"
fi
echo

if [ -f .env ]
then
echo "-- Variables de entorno"
export $(grep -v '^#' .env | xargs)
echo " API_BASE_URL: ${API_BASE_URL}"
echo " API_TIMEOUT: ${API_TIMEOUT}"
echo " FLASK_APP: ${FLASK_APP}"
echo " FLASK_DEBUG: ${FLASK_DEBUG}"
echo " RECAPTCHA_PUBLIC_KEY: ${RECAPTCHA_PUBLIC_KEY}"
echo " RECAPTCHA_PRIVATE_KEY: ${RECAPTCHA_PRIVATE_KEY}"
echo " SALT: ${SALT}"
echo " SECRET_KEY: ${SECRET_KEY}"
echo
fi

if [ -f .env ]
then
echo "-- Variables de entorno"
export $(grep -v '^#' .env | xargs)
echo " API_BASE_URL: ${API_BASE_URL}"
echo " API_TIMEOUT: ${API_TIMEOUT}"
echo " FLASK_APP: ${FLASK_APP}"
echo " FLASK_DEBUG: ${FLASK_DEBUG}"
echo " RECAPTCHA_PUBLIC_KEY: ${RECAPTCHA_PUBLIC_KEY}"
echo " RECAPTCHA_PRIVATE_KEY: ${RECAPTCHA_PRIVATE_KEY}"
echo " SALT: ${SALT}"
echo " SECRET_KEY: ${SECRET_KEY}"
echo
fi

if [ -d .venv ]
then
echo "-- Python Virtual Environment"
source .venv/bin/activate
echo " $(python3 --version)"
export PYTHONPATH=$(pwd)
echo " PYTHONPATH: ${PYTHONPATH}"
echo
echo "-- Ejecutar Flask"
alias arrancar="flask run --port=5000"
echo " arrancar = flask run --port=5000"
echo
fi

if [ -f app.yaml ]
then
echo "-- Subir a Google Cloud"
echo " poetry export -f requirements.txt --output requirements.txt --without-hashes"
echo " gcloud app deploy"
echo
fi
if [ -d .venv ]
then
echo "-- Python Virtual Environment"
source .venv/bin/activate
echo " $(python3 --version)"
export PYTHONPATH=$(pwd)
echo " PYTHONPATH: ${PYTHONPATH}"
echo
echo "-- Ejecutar Flask"
alias arrancar="flask run --port=5000"
echo " arrancar = flask run --port=5000"
echo
fi

if [ -f app.yaml ]
then
echo "-- Subir a Google Cloud"
echo " poetry export -f requirements.txt --output requirements.txt --without-hashes"
echo " gcloud app deploy"
echo
fi
```

## Configurar Poetry

Por defecto, el entorno se guarda en un directorio unico en `~/.cache/pypoetry/virtualenvs`

Modifique para que el entorno se guarde en el mismo directorio que el proyecto

poetry config --list
poetry config virtualenvs.in-project true
```bash
poetry config --list
poetry config virtualenvs.in-project true
```

Verifique que este en True

poetry config virtualenvs.in-project
```bash
poetry config virtualenvs.in-project
```

## Instalar

Crear entorno virtual con Python 3.10
Crear entorno virtual con Python 3.11

python3.10 -m venv .venv
```bash
python3.11 -m venv .venv
```

Activar entorno virtual

source .venv/bin/activate
```bash
source .venv/bin/activate
```

Actualizar pip de ser necesario

pip install --upgrade pip
```bash
pip install --upgrade pip
```

Instalar Poetry para manejar dependencias

pip install poetry
```bash
pip install poetry
```

Instalar dependencias

poetry install
```bash
poetry install
```

## Arrancar

Ejecutar Flask con el alias arrancar
Cargar el `.bashrc`

. .bashrc
arrancar
```bash
source .bashrc
```

## Google Cloud deployment

Crear el archivo `app.yaml` con las variables para producción

runtime: python310
instance_class: F2
service: pagos-cliente
env_variables:
API_BASE_URL: "https://api.justiciadigital.gob.mx/v3"
API_TIMEOUT: 24
BASE_URL: "https://pagos.justiciadigital.gob.mx"
FLASK_APP: pagos_cliente_flask/app.py
FLASK_DEBUG: 0
SALT: XXXXXXXXXXXXXXXXXXXXXXXX
SECRET_KEY: XXXXXXXXXXXXXXXXXXXXXXXX
RECAPTCHA_PUBLIC_KEY: "XXXXXXXXXXXXXXXXXXXXXXXX"
RECAPTCHA_PRIVATE_KEY: "XXXXXXXXXXXXXXXXXXXXXXXX"
vpc_access_connector:
name: projects/justicia-digital-gob-mx/locations/us-west2/connectors/cupido

Crear el archivo `requirements.txt`

poetry export -f requirements.txt --output requirements.txt --without-hashes

Y subir a Google Cloud con
Ejecutar Flask con el alias arrancar

gcloud app deploy
```bash
arrancar
```
Loading

0 comments on commit 14c2590

Please sign in to comment.