Skip to main content

A package to use transitions with a Django model.

Project description

django-model-fsm

A package to use transitions with a Django model.

Usage

from django.db import models

from django_model_fsm.dataclasses import StateData, TriggerData, WorkflowData
from django_model_fsm.models import TransitionsMixin

# States
# fmt: off
S_CREATED = StateData(
    id="created",
    label="Created",
)
S_PUBLISHED = StateData(
    id="published",
    label="Published",
)
S_ARCHIVED = StateData(
    id="archived",
    label="Archived",
)
# fmt: on

# Triggers
# fmt: off
T_PUBLISHED_CHALLENGE_MODEL = TriggerData(
    id="published_challenge_model",
    label="Publish",
    order=150,
    need_confirmation=False,
)
T_UNPUBLISHED_CHALLENGE_MODEL = TriggerData(
    id="unpublished_challenge_model",
    label="Unpublish",
    order=175,
    need_confirmation=True,
)
T_ARCHIVE_CHALLENGE_MODEL = TriggerData(
    id="archive_challenge_model",
    label="Archive",
    order=350,
    need_confirmation=True,
)
# fmt: on

challenge_model_workflow = WorkflowData(
    initial_state=S_CREATED,
    transitions_data=[
        # fmt: off
        {"trigger": T_PUBLISHED_CHALLENGE_MODEL, "source": S_CREATED, "dest": S_PUBLISHED},
        {"trigger": T_UNPUBLISHED_CHALLENGE_MODEL, "source": S_PUBLISHED, "dest": S_CREATED},
        {"trigger": T_ARCHIVE_CHALLENGE_MODEL, "source": S_PUBLISHED, "dest": S_ARCHIVED},
        # fmt: on
    ],
)


class MyModel(models.Model, TransitionsMixin):
    workflow_data = challenge_model_workflow
    workflow_callbacks = []

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_model_fsm-0.1.9.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

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

django_model_fsm-0.1.9-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file django_model_fsm-0.1.9.tar.gz.

File metadata

  • Download URL: django_model_fsm-0.1.9.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.11.6 Linux/6.12.85+deb13-amd64

File hashes

Hashes for django_model_fsm-0.1.9.tar.gz
Algorithm Hash digest
SHA256 7bb1212edf8d4d0c700f7e65ad6c54dbcfa5cc3a4abc4984e83db859ef6328d5
MD5 b12164866736d487b6db84e7a167a2ba
BLAKE2b-256 f61c5955b4c5f3cf08768ffa772e54b738279f70f292c32af59a44e606b69b0b

See more details on using hashes here.

File details

Details for the file django_model_fsm-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: django_model_fsm-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.11.6 Linux/6.12.85+deb13-amd64

File hashes

Hashes for django_model_fsm-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 9107eebba3bf0f2641b8067ac1c2b70a8e08c0284dbcf7a9de4991240ac7d183
MD5 e913cd3c9c5fac04101bf0e8542e0b41
BLAKE2b-256 e57a2c06b74cef1a57a1b60c58640526195088ca7a58fc0a021d1f792fd66411

See more details on using hashes here.

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