Metadata-Version: 2.1
Name: dj_soft_delete
Version: 1.0.0
Summary: this application is for handling delete operations in the system
Home-page: https://github.com/fritill-team/DjSoftDelete
Author: fritill
Author-email: sohype.khaled@fritill.com
License: MIT
Keywords: django translation custom
Platform: any
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Description-Content-Type: text/markdown
License-File: LICENSE

# Soft Delete

This package is used for implementing soft delete functionality in models,
when used you can delete and restore deleted items unless it was hard deleted from the database.


## Installation

```
pip install django-soft-delete
```

## Usage

you can use it by extending `HasSoftDelete` class in your model

```
    from django_soft_delete.models import HasSoftDelete
    
    
    class Item(HasSoftDelete):
        ...
```

* **retrieving items without deleted**
```
    Item.objects.all()
```

* **retrieving items with deleted**
```
    Item.with_trashed_objects.all()
```

* **retrieving deleted items only
```
    Item.with_trashed_objects.deleted()
```
* **Soft deleting item**
```
    # via objects manager
    Item.objects.filter(...).delete()

    # via model instance
    item = Item.objects.get(...)
    item.delete()
```
* **herd deleting items**
```
    # via objects manager
    Item.objects.filter(...).hard_delete()

    # via model instance
    item = Item.objects.get(...)
    item.hard_delete()
```

* **Restore soft deleted items**

```
    # via objects manager
    Item.with_trashed_objects.filter(...).restore()
    
    # via model instance
    item = Item.with_trashed_objects.get(...)
    item.restore()
```
