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,
       }
    
  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.1.2.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.1.2-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: django_grist_loader-0.1.2.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.1.2.tar.gz
Algorithm Hash digest
SHA256 2f4a6d5ecf5424c4d29ba0c3aa80572acf9567d14e83076d7470904198860e5d
MD5 45754a0b07f78c9038f49c4e9c8e5a24
BLAKE2b-256 33907363a2d6e3827ebf942b3e32f0182947b197c7a1eaa0f2c9fdb64c982d1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_grist_loader-0.1.2.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.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for django_grist_loader-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4ad62591fcde384f1bb273c103751b926e49a6e42b1fa1afa0eb00494acea2fb
MD5 992c56cf7a28631b085c6f75709cc9b5
BLAKE2b-256 621f6e9db09eeb6ad348ce6c3e84ebf4e80f8da95ccef447e3133202794d1d7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_grist_loader-0.1.2-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