Skip to main content

A package for adding a django-reversion history endpoint to django-rest-framework ModelViewSet

Project description

django-reversion-rest-framework

A package for adding a django-reversion history endpoint to django-rest-framework ModelViewSet.

Installation

pip install django-reversion-rest-framework

Configuration

Follow the official website for the installation and the integration of django-reversion in your project, otherwise future steps won't work.

You might need to enable the ReversionMiddleware for storing a version for each API change.
Follow the instructions here, you should add 'reversion.middleware.RevisionMiddleware' to your MIDDLEWARE setting.

Using the HistoryModelViewSet

The HistoryModelViewSet extends django-rest-framework's ModelViewSet adding

  • a GET history action in the detail (/my-model-url/<pk>/history/)

    displaying a list of all revisions of that specific record

  • a GET version action in the history detail (/my-model-url/<pk>/history/<version_pk>/)

    displaying a specific revisions of that specific record

  • a GET deleted action in the list (/my-model-url/deleted/)

    displaying a list of all deleted records

  • a POST revert action in the detail (/my-model-url/<pk>/revert/<version_pk>/)

    allowing users to revert to a previous revision of the object

You can use the HistoryModelViewSet in place of the ModelViewSet during viewsets definition.

from reversion_rest_framework.viewsets import HistoryModelViewSet


class MyModelViewSet(HistoryModelViewSet):
    # ...

For advanced or selective implementation, you can use reversion_rest_framework.mixins.

  • HistoryMixin contains history and version actions

  • DeletedMixin contains only the deleted action

  • RevertMixin contains history, version and revert actions

from rest_framework.viewsets import ModelViewSet
from reversion_rest_framework.mixins import HistoryMixin, DeletedMixin


class ReadOnlyHistoryViewSet(HistoryMixin, DeletedMixin, ModelViewSet):
    # history + version + deleted, without revert
    # ...

Customizing the VersionSerializer

The HistoryModelViewSet comes up with actions using a VersionSerializer.
To customize the serializer with one of your own, you can use version_serializer.
For example, if you want to customize the user serializer inside a revision, you can use the following code:

from django.contrib.auth.models import User
from rest_framework import serializers
from reversion.models import Revision, Version
from reversion_rest_framework.serializers import (
    RevisionSerializer,
    VersionSerializer,
)
from reversion_rest_framework.viewsets import HistoryModelViewSet


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ["id", "username"]


class CustomRevisionSerializer(RevisionSerializer):
    user = UserSerializer()


class CustomVersionSerializer(VersionSerializer):
    revision = CustomRevisionSerializer()


class MyModelViewSet(HistoryModelViewSet):
    version_serializer = CustomVersionSerializer
    # ...

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_reversion_rest_framework-4.0.1.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

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

File details

Details for the file django_reversion_rest_framework-4.0.1.tar.gz.

File metadata

  • Download URL: django_reversion_rest_framework-4.0.1.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for django_reversion_rest_framework-4.0.1.tar.gz
Algorithm Hash digest
SHA256 9395b2b3952e1299484207df8f1a32835f1bd245b5f4baaf152eaa9c36ff7e59
MD5 800cfd5e0e523e2790a9930f6918d8de
BLAKE2b-256 62998cefbff554f72d1e0e13b48fd15b2502b6dea9b6b27baa36593a76d71a54

See more details on using hashes here.

File details

Details for the file django_reversion_rest_framework-4.0.1-py3-none-any.whl.

File metadata

  • Download URL: django_reversion_rest_framework-4.0.1-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for django_reversion_rest_framework-4.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9aeef1f6723d3a24630c515e10b238b46d068fdb26dfeeb9fb895e2b665f8566
MD5 7c5b473bdca6c26f3c8cb302a67df9f8
BLAKE2b-256 c58c2df3f2d1369283d735d986f5da5a780a5312fd712e36d3859b2c54e14686

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