跳转到主要内容

Django应用程序,包含金钱到囚犯服务的常用代码和资源

项目描述

一个包含所有囚犯金钱应用程序公用工具和资源的Django应用程序。此版本仅在Django 3.2上进行了测试。

https://circleci.com/gh/ministryofjustice/money-to-prisoners-common.svg?style=svg

功能

  • 构建管道CLI,具有可依赖其他操作的动作(受invoke/fabric启发)

  • 基本SCSS、JS和静态资源

  • 员工和公共应用程序的基本模板

  • 构建操作以包括GOV.UK设计系统资源

  • 可重用表单字段和错误的模板

  • 连接到money-to-prisoners-api的认证实用程序和视图

  • 用户账户管理表单和视图

  • money-to-prisoners-api通信的REST实用程序

  • 与HMPPS监狱API(NOMIS)通信的实用程序

  • 使用selenium进行集成和可访问性测试

  • Python代码风格测试

  • 为ELK发送日志的格式化

  • 匿名用户并允许他们进行选择的Cookie管理工具

  • 提供应用程序版本信息的Prometheus度量视图

  • 应用程序之间共享的常量

  • 使用GOV.UK Notify发送电子邮件

使用方法

这不是一个独立的Django应用程序,它是作为Prisoner Money应用程序的要求之一被包含的。

  • 进行代码更改并添加必要的任何测试

  • 使用 ./run.py testpython setup.py test 进行测试

  • 使用 ./run.py bump_version [--major | --minor | --patch] 升级包版本

  • 通过以下方式提交到PyPi

    • 在Github上创建一个新的版本(包版本来自代码,而不是Github发布标题)

    • ./run.py upload 本地(如果由于某些原因无法在Github上发布)

money-to-prisoners-common~=<major version>.<minor version>.0 添加或更新到应用程序的requirements base.txt中。还有一个额外的setuptools extra 变体安装:对于需要测试的环境,使用 money-to-prisoners-common[testing]~=<major version>.<minor version>.0;这些放在应用程序的requirements dev.txt中。增加构建/补丁版本用于推送小修复,上述要求将自动包含它们。

在更改此库时,您可以在本地以“可编辑”模式安装它。请参阅 python_dependencies --common-path 构建任务。

翻译

使用 ./run.py make_messages 更新翻译文件 - 每次任何可翻译文本更新时都需要这样做。

编译消息 ./run.py compile_messages - 仅在本地测试或开发期间需要,构建或上传期间会自动进行。

需要 [transifex cli工具](https://github.com/transifex/cli#installation) 进行同步

使用 ./run.py translations --pull 从Transifex拉取更新。之后需要更新翻译文件,并手动检查合并是否正确发生。

使用 ./run.py translations --push 将最新的英文推送到Transifex。注意:在推送之前应该拉取更新以正确合并。

资产

Prisoner Money应用程序使用的所有共享资产都保存在此包中。每个应用程序的构建脚本都会自动安装此包,并引入GOV.UK设计系统。

需要编译的资产在 mtp_common/assets-src/mtp_common 中。静态资产在 mtp_common/static/mtp_common 中。

客户端应用程序使用的常用模板保存在 mtp_common/templates/(govuk-frontend|mtp_common) 中。在 govuk-frontend 中的模板基本上是从GOV.UK设计系统翻译过来的,而在 mtp_common 中的模板是自定义组件或进行了大量修改。

本地开发环境

Prisoner Money应用程序可以通过本地(即直接在您的机器上使用python)或使用docker-compose运行。使用docker-compose可能是启动所有Prisoner Money应用程序的最简单方法,但它需要访问私有的 money-to-prisoners-deploy 基础设施。然而,当编辑此通用库时,直接运行它们会更简单,因为此包可以以“可编辑”模式安装。

使用git在一个目录中并列检出每个应用程序和辅助存储库

本地运行(不需要访问私有部署存储库)

每个应用程序在其自带的read-me文件中描述了其安装过程,但这里有一个快速指南

  1. 设置本地PostgreSQL数据库服务器。如果使用默认设置,则无需创建用户或数据库。

  2. 安装Python版本3.12。

  3. 安装Node.js版本20。

  4. 为每个应用程序设置一个Python虚拟环境。这些环境用于隔离每个应用程序的Python依赖库。

    1. 您可以在每个存储库目录中直接创建一个

    python3 -m venv venv
    1. 或者安装并使用virtualenvwrapper,它允许您从任何位置通过名称激活虚拟环境。此选项在git钩子或通常在docker-compose中运行应用程序时特别有用。在包含所有存储库的目录中

    for app in api cashbook bank-admin noms-ops transaction-uploader send-money start-page deploy; do
      cd money-to-prisoners-$app
      mkvirtualenv -a . money-to-prisoners-$app
      [[ -f requirements/dev.txt ]] && pip install -r requirements/dev.txt
      [[ -f requirements.txt ]] && pip install -r requirements.txt
      cd -
    done
    cd money-to-prisoners-common
    mkvirtualenv -a . money-to-prisoners-common
    pip install -e '.[testing]'
  5. 运行应用程序。当使用除了start-page之外的其他应用程序时,总是需要运行api

    cd <app repository root>
    # activate the virtual environment if one was made directly
    . venv/bin/activate
    # OR activate the virtual environment using virtualenvwrapper
    workon money-to-prisoners-<app name>
    
    # run the app
    ./run.py serve
    # OR if it’s the api, this automatically alternative also creates a fresh database with sample data
    ./run.py start --test-mode

完成一次后,再次启动应用程序只需重复步骤5。

使用docker-compose运行(需要访问私有部署存储库)

  1. 获取money-to-prisoners-deploy的访问权限,并查看其中的read-me文件以解锁。

  2. 设置本地环境

    1. 获取云平台中部署环境使用的ECR(Elastic Container Registry)地址。在deploy存储库中

    ./manage.py config docker-login  # log docker into ECR
    ./manage.py app ci-settings [any mtp app name]  # note the $ECR_REGISTRY value

    或者,此值可以从云平台生产命名空间中的ecr Kubernetes机密中推导出来。使用repo_url的值,直到第一个/

    1. 在此存储库根目录中创建一个.env文件,添加此ECR_REGISTRY

    ECR_REGISTRY=?????????.amazonaws.com
  3. 从云平台中的私有Docker注册库中拉取镜像。在deploy存储库中

./manage.py config docker-login  # only necessary if not done above
./manage.py image pull-ecr
  1. 同时启动所有应用程序。在此存储库中

docker-compose up

 NB: The newer ``docker compose up`` form only works after the ``docker-compose up`` has already built the containers the first time!
  1. 在此存储库中创建标准用户并使用示例数据填充数据库。

docker-compose exec api ./manage.py load_test_data

完成一次后,未来再次启动整个堆栈只需在此存储库中运行docker-compose updocker compose up。删除Docker镜像、容器或卷需要重复步骤3到5。

如果您在Docker化开发环境中遇到问题,以下故障排除步骤应会重置状态

  • 关闭现有的docker-compose容器,并从此存储库的根目录中删除卷/网络/镜像,使用docker-compose down -v --rmi all(注意这将清除您的本地数据库,省略-v以防止此操作)

  • 拉取新的基本镜像(上面的步骤3)

  • 从此存储库的根目录使用docker-compose build --no-cache无缓存方式重新构建应用程序镜像

  • 从此存储库的根目录使用docker-compose up -d在后台重新启动应用程序

  • 通过docker-compose logs <app>从money-to-prisoners-common根目录自由地查看日志

访问应用程序

无论应用程序如何运行,那些暴露网络界面的应用程序都将可访问

您可以在load_test_data.py中找到登录详细信息

注意事项:由于会话存储在域名的命名空间中,因此您一次只能登录一个应用程序。

额外定制包

“money-to-prisoners-common” Python 库有多个依赖项由本团队维护,因此当“money-to-prisoners-common” Python 库或任何囚犯资金应用的依赖项(例如 Django)增加时,可能需要代码更改。

囚犯资金应用中定义了额外的定制依赖项,作为 Python 依赖项。

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包的信息

源代码分布

money_to_prisoners_common-17.1.0.tar.gz (252.5 kB 查看哈希值)

上传时间 源代码

构建分布

money_to_prisoners_common-17.1.0-py3-none-any.whl (332.0 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面