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

Uploaded Source

Built Distribution

File details

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

File metadata

File hashes

Hashes for django-remote-resources-0.2.0a8.tar.gz
Algorithm Hash digest
SHA256 360cd74a9e86b38c2c95f3aaadc61d110d81c98b6b29ab539bc48631ecc7fbd8
MD5 ff4e01c3d2c03e394f73b2096cf9cdb5
BLAKE2b-256 24840ca47adad0c59bd4fc55f4946038948b7ded1f2f8622f628e217a80c46c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_remote_resources-0.2.0a8-py3-none-any.whl
Algorithm Hash digest
SHA256 8cb5ff707d3cddf710e9d983ea350054496fe43024cb4002f0fa2d8c156fa021
MD5 29d2b3906bc7747cb3fd2d0ec6391678
BLAKE2b-256 6429b48a721f9cac02b208048b7e264b896dc60aa1401939bcd90104cfd1929a

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