Metadata-Version: 2.1
Name: django-timestamps
Version: 0.0.1
Summary: timestamps for django models
Home-page: https://github.com/adrian-cataldo/django-timestamps
Author: Adrian Cataldo
Author-email: adrian.cataldo093@gmail.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown


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






