Skip to main content

A reusable Django app to load data from Grist to Django models

Project description

django-grist-loader

Django reusable app to load data from Grist into read-only Django models.

Installation

The usual way:

  1. Install

    uv add django-grist-loader
    
  2. Configure

    Django's settings:

    INSTALLED_APPS = (
        ...,
        "grist_loader",
        ...,
    )
    
    GRIST_PYGRISTER_CONFIG = {
        "GRIST_API_KEY": os.environ.get("GRIST_API_KEY", ""),
        "GRIST_SELF_MANAGED": "Y",
        "GRIST_SELF_MANAGED_HOME": f"{os.environ.get('GRIST_PROTOCOL', 'https://')}{os.environ.get('GRIST_HOST', '')}",
        "GRIST_SELF_MANAGED_SINGLE_ORG": "N",
        "GRIST_SERVER_PROTOCOL": os.environ.get("GRIST_PROTOCOL", "https://"),
        "GRIST_API_SERVER": os.environ.get("GRIST_HOST", ""),
        "GRIST_API_ROOT": os.environ.get("GRIST_API_ROOT", "api"),
        "GRIST_TEAM_SITE": os.environ.get("GRIST_API_DOCS", "docs"),
        "GRIST_WORKSPACE_ID": os.environ.get("GRIST_WORKSPACE_ID", ""),
        "GRIST_DOC_ID": os.environ.get("GRIST_DOC_ID", ""),
        "GRIST_RAISE_ERROR": "Y",
        "GRIST_SAFEMODE": "N",
    } 
    
  3. Define the required envvars that make sense to your project

Usage

  1. Define a Django model that subclasses GristModel:

    from django.db import models
    from grist_loader.models import GristModel
    
    
    class MyModel(GristModel):
       my_char_field = models.CharField(max_length=100)
       my_int_field = models.IntegerField()
       my_date_field = models.DateField()
    
  2. Within a grist.py module, define a loader class that subclasses GristLoader:

    from grist_loader.loader import GristLoader, register_grist_loader
    
    from .models import MyModel
    
    
    @register_grist_loader
    class MyLoader(GristLoader):
       model = MyModel
       table = "MyGristTableName"
       required_cols = ("MyChar",)
       fields = {
         "MyChar": MyModel.my_char_field,
         "MyInt": MyModel.my_int_field,
         "MyDate": MyModel.my_date_field,
       }
       filter = {
           "MyChar": ["some value"],
       }
    
  3. Load your data

    python manage.py grist_load_all
    
  4. Profit!

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_grist_loader-0.2.0.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_grist_loader-0.2.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file django_grist_loader-0.2.0.tar.gz.

File metadata

  • Download URL: django_grist_loader-0.2.0.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for django_grist_loader-0.2.0.tar.gz
Algorithm Hash digest
SHA256 903c979bdb90e882a063b91e19996803e6ce361d070c6acd7425ddbfec56eb83
MD5 4d14c0be5feba618503b2b2e5da50f30
BLAKE2b-256 6d980ce3a3e22182520f73d97bb4b187caeafbfbd423b2a989a5f947ce7d808d

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_grist_loader-0.2.0.tar.gz:

Publisher: main.yml on David-Guillot/django-grist-loader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_grist_loader-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_grist_loader-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 29e87d2ed918b9b1bf34d9a87a0de652c924fd80ae968db08c8d09d0adbbf1ce
MD5 fdaf692c9f14bb39a99bfe945c77cc63
BLAKE2b-256 ee2e662f10e68c7f58a84e6ab962621abeba3952d5d65d3d473a6c114632ed1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_grist_loader-0.2.0-py3-none-any.whl:

Publisher: main.yml on David-Guillot/django-grist-loader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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