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

Uploaded Source

Built Distribution

File details

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

File metadata

File hashes

Hashes for django-remote-resources-0.2.0a7.tar.gz
Algorithm Hash digest
SHA256 8ed1000109663d7a7b764dd4540a28f8d66b14dda427feca4a576cd69cf7d0bf
MD5 7271f28538e2564bbaf00e562d3df347
BLAKE2b-256 7da14bff042c097726fabce5b64da5cedfa65ec836bb17381606c88bd84aaa6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_remote_resources-0.2.0a7-py3-none-any.whl
Algorithm Hash digest
SHA256 8e0650b1b6ccea60ed5ef2ea36676b61f5ebda6aa9e17567a6223365cca75d3f
MD5 00a5a674d23c4fa544daf83f45184295
BLAKE2b-256 8afdf92fb50e34c28abd2da1e31920e13e86d191dfcb436b3f3854a48f44b528

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