A simple app that can be included in Django projects which hides app specific permissions from any type of User.
Project description
Django Perm Filter
A simple app that can be included in Django projects which hides app specific permissions from any type of User. Easily add entire apps, specific permissions or models and it will take care of the rest. Non-destructive (Does not delete permissions).
For example, typically we have no reason, in any Django project, to expose the following permissions for Users or Groups:
App | Model | Permission |
---|---|---|
admin | log entry | Can view/add/change/delete log entry |
auth | permission | Can view/add/change/delete permission |
contenttypes | content type | Can view/add/change/delete content type |
sessions | session | Can view/add/change/delete session |
Features
- Hide all permissions for an App
- Hide permissions using app and codename (more granular)
- Hide models from the Django Admin
Requirements
Django 3 or 4 Python 3
Quickstart
Install Django Perm Filter::
python3 -m pip install django-perm-filter
Add it to your INSTALLED_APPS
at the bottom:
INSTALLED_APPS = (
...
'django_perm_filter',
)
Settings
In your settings.py
add a entry for PERM_FILTER
:
PERM_FILTER = {
"HIDE_PERMS": [
# Use app name only to hide all app related permissions
"admin",
"contenttypes",
"sessions",
"sites",
# Use app.codename to get more granular
"auth.view_permission",
"auth.add_permission",
"auth.change_permission",
"auth.delete_permission",
],
"UNREGISTER_MODELS": [
"django.contrib.sites.models.Site",
],
}
Overrides
By default django_perm_filter
will register a new UserAdmin
and GroupAdmin
which extend django.contrib.auth.admin.UserAdmin
and django.contrib.auth.admin.GroupAdmin
that simply adds permissions filtering. If you would like it to extend your own custom UserAdmin
or GroupAdmin
classes, then set the class path in the PERM_FILTER
settings.
PERM_FILTER = {
...
"USER_ADMIN": "myapp.users.admin.UserAdmin",
"GROUP_ADMIN": "myapp.users.admin.GroupAdmin",
}
Local Development
make env
make reqs
make makemigrations
make migrate
make serve
- Visit
http://127.0.0.1:8000/admin/
for the Django Admin - Visit
http://127.0.0.1:8000/api/docs/
for the API docs
Testing
Currently django_perm_filter
has 73% test coverage.
- Pytest:
make pytest
- Coverage:
make coverage
- Open Report:
make open_coverage
- Open Report:
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.2.3] - 2024-04-02
- Update to use
ruff
and added more tests.
[0.2.2] - 2023-06-22
- Update packaging method to use
pyproject.toml
.
[0.2.1] - 2022-09-19
- Fixed issue if
UserAdmin
orGroupAdmin
were already registered.
[0.2.0] - 2022-08-11
- Merged
HIDE_APPS
andHIDE_PERMS
to make more clear that we're hiding perms only. - Added ability to extend your own custom
UserAdmin
andGroupAdmin
if need be.
[0.1.1] - 2022-04-19
- Sorry, pushed copy/pasted changelog on first release!
[0.1.0] - 2022-04-19
- First release on PyPI.
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
Built Distribution
Hashes for django_perm_filter-0.2.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | babf48dafa299a206a8902299c64e8a215e973b62e9990fea43844b8cec3dc5f |
|
MD5 | 4433697a601b07093f610233f216333c |
|
BLAKE2b-256 | 75523f93e7b363e58eaf81e7d4b91f04d745f4a30b1330a8e73eeb3e31867ca2 |