kopia lustrzana https://github.com/jedie/PyInventory
61 wiersze
1.4 KiB
Python
61 wiersze
1.4 KiB
Python
from django.contrib.auth.models import Group, Permission
|
|
from django.contrib.contenttypes.models import ContentType
|
|
|
|
from inventory.models import (
|
|
ItemFileModel,
|
|
ItemImageModel,
|
|
ItemLinkModel,
|
|
ItemModel,
|
|
LocationModel,
|
|
MemoFileModel,
|
|
MemoImageModel,
|
|
MemoLinkModel,
|
|
MemoModel,
|
|
)
|
|
|
|
|
|
NORMAL_USER_GROUP_NAME = 'normal user'
|
|
|
|
|
|
def get_permissions(*models):
|
|
content_types = []
|
|
for model in models:
|
|
content_types.append(ContentType.objects.get_for_model(model))
|
|
|
|
return Permission.objects.filter(content_type__in=content_types)
|
|
|
|
|
|
def get_or_create_normal_user_group():
|
|
"""
|
|
Will be called by:
|
|
inventory.signals.post_migrate_callback()
|
|
"""
|
|
return Group.objects.get_or_create(name=NORMAL_USER_GROUP_NAME)
|
|
|
|
|
|
def setup_normal_user_permissions(normal_user_group):
|
|
"""
|
|
Setup PyInventory "normal user" permissions.
|
|
Will be called by:
|
|
inventory.signals.post_migrate_callback()
|
|
"""
|
|
assert normal_user_group.name == NORMAL_USER_GROUP_NAME
|
|
permissions = get_permissions(
|
|
ItemFileModel,
|
|
ItemImageModel,
|
|
ItemLinkModel,
|
|
ItemModel,
|
|
LocationModel,
|
|
MemoFileModel,
|
|
MemoImageModel,
|
|
MemoLinkModel,
|
|
MemoModel,
|
|
)
|
|
existing_permissions = normal_user_group.permissions.all()
|
|
|
|
if set(permissions) != set(existing_permissions):
|
|
normal_user_group.permissions.set(permissions)
|
|
return True
|
|
|
|
return False
|