Skip to main content

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

  1. make env
  2. make reqs
  3. make makemigrations
  4. make migrate
  5. 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

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 or GroupAdmin were already registered.

[0.2.0] - 2022-08-11

  • Merged HIDE_APPS and HIDE_PERMS to make more clear that we're hiding perms only.
  • Added ability to extend your own custom UserAdmin and GroupAdmin 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

django-perm-filter-0.2.3.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

django_perm_filter-0.2.3-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file django-perm-filter-0.2.3.tar.gz.

File metadata

  • Download URL: django-perm-filter-0.2.3.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.11

File hashes

Hashes for django-perm-filter-0.2.3.tar.gz
Algorithm Hash digest
SHA256 02620d903e64b810c4db1ae25f895a3c20fc591d4d40e4afb32db1f93386fa73
MD5 8dab3fb28e301ff9c167f420b3ae6eba
BLAKE2b-256 0b990823093e0a07d7d231431479c9f4af20fafdfe3df74c3cc80720877c77a8

See more details on using hashes here.

File details

Details for the file django_perm_filter-0.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for django_perm_filter-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 babf48dafa299a206a8902299c64e8a215e973b62e9990fea43844b8cec3dc5f
MD5 4433697a601b07093f610233f216333c
BLAKE2b-256 75523f93e7b363e58eaf81e7d4b91f04d745f4a30b1330a8e73eeb3e31867ca2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page