Skip to main content

Sync remote API resources to Django models

Project description

Django remote resources

Sync remote API resources to Django models

Quick start

pip install django-remote-resources

Add AbstractRemoteResource to your model (1), and define a mapping between the fields in the remote data to your model's fields (2), and create a custom QuerySet manager for the model, inheriting from RemoteResourceQuerySet and define method get_remote_data_iterator (3). Optionally define a remote_data_key_field that points to a unique identifier on the remote data (4).

class ResourceMirrorQuerySet(  # (3)
    RemoteResourceQuerySet
):
    def get_remote_data_iterator(self, *args, **kwargs):
        client = RemoteClient()
        return client.get_data(**kwargs)  # should return an iterator, with each item representing a page of data


class ResourceMirror(
    AbstractRemoteResource,  # (1)
    models.Model
):
    remote_id = models.CharField(max_length=255)
    name = models.CharField(max_length=255)
    email = models.EmailField()

    objects = ResourceMirrorQuerySet.as_manager()  # (3)

    remote_to_model_fields_map = {  # (2)
        'id': 'remote_id',
        'name': 'name',
        'email': 'email',
    }
    remote_data_key_field = 'id'  # (4)

Development and Testing

IDE Setup

Add the example directory to the PYTHONPATH in your IDE to avoid seeing import warnings in the tests modules. If you are using PyCharm, this is already set up.

Running the Tests

Install requirements

pip install -r requirements.txt

For local environment

pytest

For all supported environments

tox

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-remote-resources-0.2.0a13.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file django-remote-resources-0.2.0a13.tar.gz.

File metadata

File hashes

Hashes for django-remote-resources-0.2.0a13.tar.gz
Algorithm Hash digest
SHA256 47ba370b712b834a0aec65d5efbdf5cc6e20d3a2dff89061dee4cfe269996f05
MD5 989a08522f0d802f195f5d5e152aa22f
BLAKE2b-256 8cc6a5f8e34af357955244ecee4a441d78fc1a89ea85865195e6a58c16dfc36a

See more details on using hashes here.

File details

Details for the file django_remote_resources-0.2.0a13-py3-none-any.whl.

File metadata

File hashes

Hashes for django_remote_resources-0.2.0a13-py3-none-any.whl
Algorithm Hash digest
SHA256 52da2d431ddb8b80e9c90b2dad173eeafbb05aaf34ddc648af090fa8f8378ce4
MD5 0e4382f8d4a99cacfe34e34e47452719
BLAKE2b-256 ed8dcd30ae029a59bb8d890f439d0f3469f1f1af8cc4dd7542babd35e9b7360e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page