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.0a5.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

File details

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

File metadata

File hashes

Hashes for django-remote-resources-0.2.0a5.tar.gz
Algorithm Hash digest
SHA256 1333993a071f258f30aa4291e657645954afe92cec2798a92e68d91d1474a20f
MD5 6b58856ce3d89521f59dd1363457eb09
BLAKE2b-256 e2f8ce2292326585cb3246f4d531ffc29b31039b847b145c148e7614b517ae8e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_remote_resources-0.2.0a5-py3-none-any.whl
Algorithm Hash digest
SHA256 b792dbd17091cb89fd1938c4caab22fcca26600c1c13425a9c794cc72fe9c65b
MD5 dea2bc825b73dcb35a873949bdd171e7
BLAKE2b-256 8ada14c26337fc7eea5b01afe90c101a56d116371468f5f60e7c9c567c514ca2

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