Django groups manager through django-mptt.
Project description
Django groups manager
This application allows to create hierarchical groups by using django-mptt tree structure.
It is also possible to synchronize the groups with Django's auth.models
Group and User, in order to take advantage of permissions applications like django-guardian.
Documentation
Online documentation is available at http://django-groups-manager.readthedocs.org/.
Note
Version 1.1.0
changed the default slugify function from awesome-slugify
to django.utils.text.slugify
.
To keep using awesome-slugify
you need to install it separately, and then
customize the settings:
from slugify import slugify
GROUPS_MANAGER = {
# ... other settings
'SLUGIFY_FUNCTION': lambda s: slugify(s, to_lower=True),
'SLUGIFY_USERNAME_FUNCTION': lambda s: slugify(s, to_lower=True, separator="_")
}
Requirements
- Python >= 3.8
- Django >= 3.2
- django-guardian for user permissions
- jsonfield == 3.1.0
For older versions of Python or Django, please look at 1.2.0 (Django <3.2, Python < 3.8>) or 0.6.2 version (Django 1.x, Python < 3.5).
Installation
Use pip to install django-groups-manager
:
pip install django-groups-manager
To use per-object permissions related features, django-guardian
is required as well:
pip install django-guardian
Django Configuration
-
Add
groups_manager
into yourINSTALLED_APPS
:INSTALLED_APPS = ( ... # 'guardian', # add as well to use permissions related features 'groups_manager', )
-
Create models with
migrate
:python manage.py migrate groups_manager
Note: for users that are upgrading from <0.4.2, launch:
python manage.py migrate groups_manager 0001 --fake python manage.py migrate groups_manager
-
To enable django
auth.models
synchronization, add to the settings module:GROUPS_MANAGER = { 'AUTH_MODELS_SYNC': True, }
Basic usage
The common case is to create a simple parent-son relation:
from groups_manager.models import Group, Member
fc_internazionale = Group.objects.create(name='F.C. Internazionale Milan')
staff = Group.objects.create(name='Staff', parent=fc_internazionale)
players = Group.objects.create(name='Players', parent=fc_internazionale)
thohir = Member.objects.create(first_name='Eric', last_name='Thohir')
staff.add_member(thohir)
palacio = Member.objects.create(first_name='Rodrigo', last_name='Palacio')
players.add_member(palacio)
Per-object permissions handling is done by django-guardian
. The Group/Member relation can be used to assing objects:
from football.models import TeamBudget
small_budget = TeamBudget.objects.create(euros='1000')
thohir.assign_object(staff, small_budget)
thohir.has_perm('change_teambudget', small_budget) # True
palacio.has_perm('change_teambudget', small_budget) # False
# or via group
mid_budget = TeamBudget.objects.create(euros='3000')
staff.assign_object(mid_budget)
thohir.has_perm('change_teambudget', mid_budget) # True
palacio.has_perm('change_teambudget', mid_budget) # False
Owner/Group members policies can be defined via PERMISSIONS
setting, as a dictionary of GROUPS_MANAGER
, but can also be overwritten via custom_permissions
kwarg
:
from football.models import Match
fc_barcelona = Group.objects.create(name='FC Barcelona')
friendly_match = Match.objects.create(home=fc_internazionale, away=fc_barcelona)
palacio.assign_match(players, friendly_match, custom_permissions={'group': ['play']})
thohir.has_perm('play_match', friendly_match) # False
palacio.has_perm('play_match', friendly_match) # True
For more complex cases, see documentation.
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file django-groups-manager-1.3.0.tar.gz
.
File metadata
- Download URL: django-groups-manager-1.3.0.tar.gz
- Upload date:
- Size: 61.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fcc099ac8ce8efc1a620f679728d26de1f9cc8068482b9cfb06bfef1d08ad3a8 |
|
MD5 | f3242097030b8d90aae2b284cc2203bc |
|
BLAKE2b-256 | a6473420f49d6316cb194e9ad26e3490573791f0829d24ba6a5913c3c8849818 |
File details
Details for the file django_groups_manager-1.3.0-py3-none-any.whl
.
File metadata
- Download URL: django_groups_manager-1.3.0-py3-none-any.whl
- Upload date:
- Size: 68.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2588ec3e93ea89559f9f2f77563b18e40e414895b810ab80e9641e3e8bc41ff3 |
|
MD5 | 6a3845c94d2333d07c78c44d97729ba2 |
|
BLAKE2b-256 | fbc51ab733e6541b9e0830c50f2bdb9da51586bc2e3eb97891bf7df2fa2799e6 |