=========
CHANGELOG
=========

1.3.2 (2023-04-05)
==================

- Fix undelete count in admin #220
- Fix de translation
- Fix argument type passed to db_for_write #222
- Django 4.2 support #223
- Fix SafeDeleteQueryset.as_manager() now returns SafeDeleteManager

1.3.1 (2022-10-03)
==================

- Fix exclude exception #216

1.3.0 (2022-08-17)
==================

- Add typings #213
- Drop support for Django < 3.2 and Python 3.6
- Add an index for deleted field #153

1.2.3 (2022-08-17)
==================

- Implement NO_DELETE and HARD_DELETE for queries #209
- Soft-delete-cascade raises an exception when trying to delete a object that related object is PROTECT #210

1.2.2 (2022-05-03)
==================

- Fix soft delete cascade for generic relations #207
- Add count return to delete and undelete methods #204

1.2.1 (2022-04-29)
==================

- Fix related_objects for non-safedelete models.

1.2.0 (2022-04-26)
==================

- Adding SafeDeleteCascadeControlModel #197
- Primary key uniqueness not considered in update_or_create #200

1.1.2 (2021-12-16)
==================

- Add django 4.0 and python 3.10 compatibility and tests #191
- Fix highlight_deleted_field translations #183 

1.1.1 (2021-11-15)
==================

- Add highlight_deleted_field #177
- Add new safedelete admin filter #175
- Bug: has_unique_fields() returns false for models.UniqueConstraint #179

1.1.0 (2021-09-23)
==================

- Fix attribute error when union queryset of safe delete model with others #152 
- SET related objects after deleting #156
- Avoiding recursive call for delete function. #121
- Add SAFE_DELETE_FIELD_NAME setting #164
- Move filter visibility logic to Query to fix subquery in annotations #160
- Add functions to customize the policies delete behavior #167


1.0.0 (2021-02-15)
==================

- Drop support for Django < 2.2
- Fix deprecation warnings for Django 4.0

0.5.7 (2021-01-28)
==================

- Add visibility filter for union operations #145
- Set related fields when soft deleted #144
- has_unique_fields() now takes into account unique_together option #147
- Fix filtering in subqueries #148

0.5.6 (2020-07-20)
==================

- call self.save() instead of super in delete()

0.5.5 (2020-05-14)
==================

- Admin action now warns if some objects weren't undeleted
- Remove some pre-Django 1.11 support

0.5.4 (2019-12-02)
==================

- Django 3.0 compatibility

0.5.3 (2019-12-02)
==================

- Fix "Doing a .get on a queryset adds deleted objects #131"

0.5.2 (2019-08-19)
==================

- Fix performance issue with Django 2.2
- Fix executing soft delete on already soft-deleted items during cascade soft delete

0.5.1 (2018-07-02)
==================

- Fix possible unicode error in admin

0.5.0 (2018-05-29)
==================

- Remove support for Django 1.8 to 1.10 and Python 3.3.
     (it should still works for now but isn't tested, use at your own risks).
- Fix update_or_create (#98)

0.4.5 (2018-01-31)
==================

- Fix an issue with Django 1.8 and `values_list`
- Django 2.0 compatibility


0.4.4 (2018-01-09)
==================

** Bugfixes **

- Fix latest and earliest

0.4.3
=====

** Bugfixes **

- Set SafeDeleteMixin as abstract


0.4.2
=====

** Bugfixes **

- iterator() now filter the deleted objects correctly.
- Fix prefetch_related() with all()
- Fix: "Cannot filter a query once a slice has been taken" error.

** Refactoring **

- Resolve Django 1.9+ allow_tags deprecation warning
- Fix docstring typo in SafeDeleteManager, SOFT_DELETE should be DELETED_INVISIBLE


0.4.1
=====

** New **

- Filtering on the deleted field is done on evaluation.
- Added specific managers: all_objects and deleted_objects.
- Added 'force_policy' feature to SafeDeleteQuerySet.

** Removed **

-

** Bugfixes **

- Fixed abstract intermediate models not working with SOFT_DELETE_CASCADE

** Refactoring **

- Renamed SafeDeleteMixin to SafeDeleteModel to better reflect the intended behavior. Using SafeDeleteMixin now throws a DeprecationWarning.
- Moved SafeDeleteQueryset


0.4.0
=====

** New **

- ``deleted`` is now a datetime.

** Refactoring **

- Globals (HARD_DELETE, SOFT_DELETE, ...) have been moved `to config.py`.
- Removed support for Django 1.4 to 1.7. You should use the 0.3.x branch if you need to use safedelete in Django <= 1.7.
- Remove factories to use mixins instead.

0.3.5
=====

** New **

- Change ``DELETED_VISIBLE_BY_PK`` to ``DELETED_VISIBLE_BY_FIELD`` to be able to change the field used.

0.3.4
=====

** New **

- Add a ``SOFT_DELETE_CASCADE`` policy which perform a SOFT_DELETE on safedelete related objects
- Django 1.8 compatibility

0.3.2
=====

- Prevent migration errors on django 1.8 by declaring the SafeDeleteManager (internal class in managers) as global

0.3.1
=====

- Fix issue with release on pypi not being the good one


0.3.0
=====

** New **

- Add a ``NO_DELETE`` policy which never soft or hard deletes an instance
- Django 1.8 compatibility

** Removed **

- Support of Django 1.2 and Django 1.3 has been removed

** Bugfixes **

- ``all_with_deleted`` method doesn't lose current queryset on a related manager
- uniqueness is now checked against soft deleted instances too
- prefetch_related() now works with SafedeleteQuerySet
- Fix the undelete action in the administration for active objects.


0.2.1 (2014-12-15)
==================

** New **

- Extends Django compatibility to Django 1.2


0.2.0 (2014-12-09)
==================

** New **

- Django compatilibty 1.3 => 1.7
- Add administration utilities
