Skip to main content

timestamps for django models

Project description

Django Timestamps

Adds created_at, updated_at, and/or deleted_at (soft-delete) to django models

Usage

from django.db import models
from django_timestamps.softDeletion import SoftDeletionModel
from django_timestamps.timestamps import TimestampsModel

class Device(SoftDeletionModel, TimestampsModel):
    name = models.CharField(max_length=20)
    os = models.CharField(max_length=20)

TimestampsModel adds created_at and updated_at fields to the model. This fields are updated automatically

SoftDeletionModel adds deleted_at (soft-delete)

To soft-delete a model you must call delete() function:

device = Device.objects.filter(id=1).first()
device.delete()

To hard-delete a model you must call hard_delete() function:

device = Device.objects.filter(id=1).first()
device.hard_delete()

To restore a model you must call restore() function and use all_objects instead of objects:

device = Device.all_objects.filter(id=1).first()
device.restore()

To get all objects trashed

devices_trashed = Device.all_objects.all().dead()

ModelViewSet for rest_framework:

Adds urls for soft-deleted elements, returns deleted_at:

#Example for devices:
#    (get)   /devices/trashed/       -> trashed elements, paginated
#    (get)   /devices/4/get-trashed/ -> get trashed element
#    (patch) /devices/4/restore/     -> restore trashed element

from django_timestamps.SoftDeleteViewSet import SoftDeleteViewSet

class DeviceViewSet(viewsets.ModelViewSet, SoftDeleteViewSet):
    queryset = Device.objects.all().order_by('id')
    serializer_class = DeviceSerializer
    querysetTrashed = Device.all_objects.all().dead().order_by('id')

    #add extra filters for queryset and querysetTrashed
    def full_queryset(self, queryset):

        user_id = self.request.query_params.get('user_id', None)
        if user_id:
            queryset = queryset.filter(user_id=user_id)

        return queryset

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-timestamps-0.0.1.tar.gz (2.8 kB view details)

Uploaded Source

Built Distribution

django_timestamps-0.0.1-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file django-timestamps-0.0.1.tar.gz.

File metadata

  • Download URL: django-timestamps-0.0.1.tar.gz
  • Upload date:
  • Size: 2.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.4

File hashes

Hashes for django-timestamps-0.0.1.tar.gz
Algorithm Hash digest
SHA256 21d2788a89c79c375e7ebd5c7d0a9b272528f9e7140d20a71dbc545be8fbf14d
MD5 52e403db1e2386107c672f94152faec0
BLAKE2b-256 e287ed338a078149fcd3edcd0155bda0e2e1899c0fc7389a0b885308625123fc

See more details on using hashes here.

File details

Details for the file django_timestamps-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: django_timestamps-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.4

File hashes

Hashes for django_timestamps-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dd1e43d55149020fd3758ddd46109640c46a9ad0df3e2e5213ff5bf4c07d1050
MD5 c4ac9122294ccbb8a11e63cdbae91167
BLAKE2b-256 0baa981378666b473a23af5730cca8933b579f8967ea19efaaffe49ef8dca1e5

See more details on using hashes here.

Supported by

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