All notable changes to django-fernet-encrypted-fields are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
CHANGELOG.mddocumenting the full release history of the project.
- Applied
ruff formatacross the codebase and enforced formatting in CI (#40). - Moved
rufflint configuration into a dedicated[tool.ruff.lint]section and lowered thetarget-versionto the earliest supported Python version. pre-commitnow runsruff formatin addition toruff check.- Packaging metadata now sources the version directly from
pyproject.toml.
- CI no longer runs
ruff checkduring the installation step.
- Jazzband contributing guide (#37).
devdependency group inpyproject.toml(mypy, pre-commit, ruff, pytest, pytest-cov, coverage).- Django 6.0 compatibility (#32).
- Migrated project to a
src/layout (#39). - Bumped minimum required Python version to 3.10.
- CI now installs the package before running the test suite and uses the
devdependency group.
requirements.txt(dependencies are now fully managed viapyproject.tomlwith version ranges).
- Raised minimum Django requirement to Django 4.2 (#28).
- Updated the supported Python / Django version matrix in CI (excluded Python 3.13 with Django 4.2, etc.).
- Project moved to the Jazzband organization (author, URL, and maintainer metadata updated) (#25).
- Support for Django's
SECRET_KEY_FALLBACKSto enable secret key rotation (#24). - README documentation describing the secret-key rotation workflow.
pre-commitconfiguration.
SECRET_KEY_FALLBACKShandling for Django< 4.1.- Lint errors and GitHub Actions workflow triggers.
- Support for encrypted JSON fields (
EncryptedJSONField) with tests ensuring key retention (#14).
- Set minimum required Django version to 3.2.
EncryptedIntegerField: correctedget_prep_value/to_pythonbehavior (#11).
EncryptedIntegerFieldnow properly exposes default validators via acached_property, restoring expected validation behavior (#10).
- Django Admin no longer raises an exception when saving encrypted fields. A semaphore
flag in
clean()preventsto_python()from attempting to decrypt an already-decrypted value during form cleaning (#4).
- Support for multiple
SALT_KEYvalues, enabling SALT rotation while still decrypting data encrypted with legacy salts. - Unit tests covering salt rotation with a retained legacy salt.
- README documentation for rotating salts.
- GitHub Actions CI: linting (black, flake8), testing, and coverage across multiple Python versions.
long_description(sourced fromREADME.md) andlong_description_content_typeinsetup.pyso the project description renders correctly on PyPI.
- Initial release inspired by
django-encrypted-fields. - Symmetric encryption for Django model fields backed by Fernet, including:
EncryptedFieldMixin,EncryptedTextField,EncryptedCharField,EncryptedDateTimeField,EncryptedIntegerField,EncryptedDateField,EncryptedFloatField,EncryptedEmailField,EncryptedBooleanField.