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.10.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.10-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: django_model_fsm-0.1.10.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.10.13 Linux/6.12.48+deb13-amd64

File hashes

Hashes for django_model_fsm-0.1.10.tar.gz
Algorithm Hash digest
SHA256 4f32a98c1e6ec6e3591e01bfbd8b8fbb17d92189a7daf7d543c2d3ba4871370a
MD5 5ba8e7f666b3f20371cb5956d2d5db61
BLAKE2b-256 4c3ff83f9291598852aa1d8fa866e9abb4fe33d5534ec9919b08d0b9b04dd136

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for django_model_fsm-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 4b6d6d8ea8ade4fd2dcfd323d3c459c70f4618dc9129b03c0e6e9fc60d203bf7
MD5 58b38605aa46bc7b7c90faeb2f2c4f9d
BLAKE2b-256 6728ff4577ce8e70ae2764d66721f15523b567354428dd6c3bcb5a09f6aa118e

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