Handle django-popolo data from multiple separate sources
Project description
This package provides a PopoloSource Django model to represent a URL from which you can fetch Popolo JSON data. It allows you to import data from multiple such sources into django-popolo models while maintaining an association with the source they came from, and making sure that a change in one source doesn’t affect the models from any other.
In addition, this package allows you to track objects that have been deleted from a source; they are marked as having disappeared, but the django-popolo models are not deleted. If they reappear with the same ID in the Popolo JSON source, the disappeared flag (deleted_from_source) will be set back to True.
It is only the objects that are listed at the top level of a Popolo JSON file that are tracked by the code in this package. That includes:
Area
Membership
Organization
Person
Post
But does not include, for example, ContactDetail.
Usage
To create a new PopoloSource you can do:
from popolo_sources.models import PopoloSource
ps = PopoloSource(url='http://example.com/parliament.json')
To then create django-popolo models (Person, Organization, etc.) based on the Popolo JSON at that URL, you can now do:
ps.update_from_source()
You can run .update_from_source() again to update the models based on any changes in the Popolo JSON source.
The model that represents the join table linking PopoloSource models with django-popolo models is popolo_sources.models.LinkToPopoloSource. This model has the deleted_from_source attributed, so you can find all non-deleted top-level django-popolo with code like:
for ltps in LinkToPopoloSource.filter(deleted_from_source=False):
print ltps.popolo_object
Tests
To run the tests you can do:
pip install -e .[test]
./runtests.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for multiple-django-popolo-sources-0.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 156d115cb4ad030342938da15fd0dd5f02d1cb282a14fef49f7c3d8b95092233 |
|
MD5 | 6c817feb06d17aa07fc8a8f55db0c502 |
|
BLAKE2b-256 | 2346f4ff4cf46208261703dfdd0cb8ce0445d9ed001dbe9032e6f0c2f70b5c3e |