跳转到主要内容

为councilmatic.org系列的核心功能

项目描述

django-councilmatic

django-councilmatic应用程序为Councilmatic系列提供核心功能,这是一套用于跟踪当地市议会的网络应用程序。它基于开放公民数据标准,并最终使Councilmatic在新城市中重新部署变得更加容易。

要求

  • Python >= 3.8

功能

  • 法案、人员、组织、事件等模型的建模

  • 法案、人员、组织、事件列表和详情页的基础视图

  • django-haystack和Solr驱动的搜索基础设施

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视为对话的开始,而不是成品。

项目详情


发布历史 发布通知 | RSS源

下载文件

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

源代码分发

django-councilmatic-3.3.tar.gz (892.5 kB 查看哈希值)

上传时间 源代码

构建分发

django_councilmatic-3.3-py3-none-any.whl (978.3 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

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