Django应用程序,包含金钱到囚犯服务的常用代码和资源
项目描述
一个包含所有囚犯金钱应用程序公用工具和资源的Django应用程序。此版本仅在Django 3.2上进行了测试。
功能
构建管道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 test 或 python 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在一个目录中并列检出每个应用程序和辅助存储库
money-to-prisoners-transaction-uploader – 注意:此应用程序不提供Web界面
money-to-prisoners-deploy – 注意:这是一个私有存储库
本地运行(不需要访问私有部署存储库)
每个应用程序在其自带的read-me文件中描述了其安装过程,但这里有一个快速指南
设置本地PostgreSQL数据库服务器。如果使用默认设置,则无需创建用户或数据库。
安装Python版本3.12。
安装Node.js版本20。
为每个应用程序设置一个Python虚拟环境。这些环境用于隔离每个应用程序的Python依赖库。
您可以在每个存储库目录中直接创建一个
python3 -m venv venv
或者安装并使用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]'
运行应用程序。当使用除了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运行(需要访问私有部署存储库)
获取money-to-prisoners-deploy的访问权限,并查看其中的read-me文件以解锁。
设置本地环境
获取云平台中部署环境使用的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的值,直到第一个/。
在此存储库根目录中创建一个.env文件,添加此ECR_REGISTRY值
ECR_REGISTRY=?????????.amazonaws.com
从云平台中的私有Docker注册库中拉取镜像。在deploy存储库中
./manage.py config docker-login # only necessary if not done above
./manage.py image pull-ecr
同时启动所有应用程序。在此存储库中
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!
在此存储库中创建标准用户并使用示例数据填充数据库。
docker-compose exec api ./manage.py load_test_data
完成一次后,未来再次启动整个堆栈只需在此存储库中运行docker-compose up或docker 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根目录自由地查看日志
访问应用程序
无论应用程序如何运行,那些暴露网络界面的应用程序都将可访问
api: https://:8000/admin/
cashbook: https://:3001/
bank-admin: https://:3002/
noms-ops: https://:3003/
send-money: https://:3004/
start-page: https://:8005/
您可以在load_test_data.py中找到登录详细信息
注意事项:由于会话存储在域名的命名空间中,因此您一次只能登录一个应用程序。
额外定制包
“money-to-prisoners-common” Python 库有多个依赖项由本团队维护,因此当“money-to-prisoners-common” Python 库或任何囚犯资金应用的依赖项(例如 Django)增加时,可能需要代码更改。
囚犯资金应用中定义了额外的定制依赖项,作为 Python 依赖项。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包的信息。
源代码分布
构建分布
哈希值 for money_to_prisoners_common-17.1.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f260a72f21dd1040141a68846d5923c5fc76fda43d693d33ddbb2b6cd68fbacc |
|
MD5 | 5e81e74c01b028a8210e8a31cdb805ad |
|
BLAKE2b-256 | 741c53a9568177ad5a508b85dc96ed1379d12553e3e51f3eec57be766fbb5455 |