为councilmatic.org系列的核心功能
项目描述
django-councilmatic
django-councilmatic应用程序为Councilmatic系列提供核心功能,这是一套用于跟踪当地市议会的网络应用程序。它基于开放公民数据标准,并最终使Councilmatic在新城市中重新部署变得更加容易。
要求
Python >= 3.8
功能
法案、人员、组织、事件等模型的建模
法案、人员、组织、事件列表和详情页的基础视图
由
django-haystack
和Solr驱动的搜索基础设施
费城Councilmatic(由Mjumbe Poe创建的第一个和最重要的Councilmatic,是DataMade的django-councilmatic的重要前身)
您所在城市的Councilmatic
如果您有兴趣将Councilmatic引入您的城市,请联系我们!我们很乐意帮助。
想要自己构建自己的Councilmatic?查看我们的启动模板。它包含从零开始创建自己的Councilmatic所需的一切。
扩展Open Civic Data/Councilmatic模型
django-councilmatic利用并扩展了在Django中实现的Open Civic Data标准(作为python-opencivicdata
)。如果您想为模型添加额外的属性或Python属性,请注意以下两种方法:子类化和代理。
子类化
利用多表继承向OCD模型添加额外字段。在django-councilmatic中的主要用途是为一级模型添加slugs - Person、Event、Bill和Organization - 并添加OCD标准之外的元数据,例如Person的头像和Post的行政区划边界。
我们建议使用pupa
抓取立法数据。由于pupa
创建OCD对象,django-councilmatic包括针对每个子类化模型的Django信号来在保存时创建相关的Councilmatic模型。它还包括导入元数据的管理命令(见上文)。
如果您子类化了一个模型,请确保包含一个信号,以便在创建父类实例时创建子类实例,并在适用的情况下,添加任何元数据,例如管理命令或管理界面。
代理
django-councilmatic广泛使用代理模型来为模型类添加自定义管理器、额外的属性和方法。为了在代码的其他地方利用这些功能,希望相关对象以其他代理类或子类的实例形式返回,而不是上游OCD模型类。为了强制相关对象以Councilmatic模型的形式返回,django-councilmatic使用django-proxy-overrides。
如果您希望自定义相关对象的类,首先代理一个OCD模型,然后用ProxyForeignKey
实例覆盖其相关对象属性中的一个或多个。参见councilmatic_core.models.BillAction以获取示例。
运行测试
您对django-councilmatic进行了更改?在您发起拉取请求之前,请运行一些测试。
首先,安装测试需求
pip install -r tests/requirements.txt
我们使用pytest测试功能。
pytest
如果您对Councilmatic模型进行了实质性更改,请从本地实例数据库刷新测试固定装置。从您的实例目录(假设您已经使用pip install -e /path/to/django-councilmatic
安装了django-councilmatic
),安装测试需求。
pip install -r /path/to/django-councilmatic/tests/test_requirements.txt
在settings.py中将fixture_magic
添加到实例的INSTALLED_APPS
中。
运行管理命令以更新测试固定装置。
python manage.py make_fixtures
运行测试,并使用您的PR提交更新的固定装置!
补丁和贡献
我们持续改进django-councilmatic,并欢迎您的想法!您可以通过github issues(错误报告、功能请求、一般问题)提出建议,或者您可以通过拉取请求提交代码贡献。
如何贡献代码
叉项目。
创建您的功能添加或错误修复。
发送给我们一个包含您工作描述的拉取请求!不要担心它是否完美无缺 - 将PR视为对话的开始,而不是成品。
版权
版权(c)2023参与式政治基金会和数据制作。在MIT许可证下发布。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
django-councilmatic-3.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8847d436af89f5eea4ff648a3d8e67473d1848dea8e1cf4f2f4c4007c1e60cc1 |
|
MD5 | 5987fe06d87130d43dc635a5e530b1e2 |
|
BLAKE2b-256 | aa7b108eab0621465a3dd858a9ec384f7b1db4fd445eefb03a151e754fd799a0 |
django_councilmatic-3.3-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cba5ad406afd3a70af26157ee08c3778038e0300f083dfb15fe0a059a7439214 |
|
MD5 | b5b205b94847deea60591a01ff4fbfd0 |
|
BLAKE2b-256 | ca728f3e259410d1c3a68d812f92c47b157a2de1f36ac5d2a77edab2a7da518c |