Skip to content
Snippets Groups Projects
Verified Commit f3bc9744 authored by Ernesto Rico Schmidt's avatar Ernesto Rico Schmidt
Browse files

feat: update the default set of permissions and how they’re added

parent 15304233
No related branches found
No related tags found
No related merge requests found
Pipeline #8380 canceled
from django.conf import settings from django.conf import settings
from django.contrib.auth.models import Group, Permission from django.contrib.auth.models import Group, Permission
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from django.db.models import QuerySet from django.db.models import Q, QuerySet
PERMISSIONS = {
settings.PRIVILEGED_GROUP: {
"app": Permission.objects.filter(
~Q(codename__startswith="edit"),
content_type__app_label="program",
),
"custom_add": Permission.objects.filter(
codename__startswith="add__",
content_type__model="playlist",
),
"custom_display": Permission.objects.filter(codename="display__show__internal_note"),
"custom_update": Permission.objects.filter(
codename__startswith="update",
content_type__model__in=["host", "note", "show"],
),
},
settings.ENTITLED_GROUPS[0]: {
"default_note_notelink": Permission.objects.filter(
~Q(codename__startswith="create"),
~Q(codename__startswith="edit"),
~Q(codename__startswith="update"),
content_type__model__in=["note", "notelink"],
),
},
settings.ENTITLED_GROUPS[1]: {
"extra_change": Permission.objects.filter(
codename__startswith="change",
content_type__model__in=["host", "note", "show"],
),
"custom_add": Permission.objects.filter(
~Q(codename__startswith="add__m3ufile"),
codename__startswith="add__",
content_type__model="playlist",
),
"custom_edit": Permission.objects.filter(
codename__startswith="edit",
content_type__model__in=["host", "note", "show"],
),
},
}
class Command(BaseCommand): class Command(BaseCommand):
...@@ -14,46 +55,8 @@ class Command(BaseCommand): ...@@ -14,46 +55,8 @@ class Command(BaseCommand):
self.stdout.write(self.style.SUCCESS(str(len(permissions)))) self.stdout.write(self.style.SUCCESS(str(len(permissions))))
def handle(self, *args, **options): def handle(self, *args, **options):
privileged_group = Group.objects.get(name=settings.PRIVILEGED_GROUP) for group_name in PERMISSIONS:
host_group = Group.objects.get(name=settings.ENTITLED_GROUPS[0]) group = Group.objects.get(name=group_name)
host_plus_group = Group.objects.get(name=settings.ENTITLED_GROUPS[1])
app_permissions = Permission.objects.filter(content_type__app_label="program").exclude( for name, permissions in PERMISSIONS[group_name].items():
codename__startswith="edit" self.add_permissions(group, permissions, name)
)
default_model_permissions = (
Permission.objects.filter(content_type__model__in=["note", "notelink"])
.exclude(codename__startswith="edit")
.exclude(codename__startswith="create")
.exclude(codename__startswith="update")
)
change_permissions = Permission.objects.filter(
codename__startswith="change", content_type__model__in=["host", "note", "show"]
)
edit_permissions = Permission.objects.filter(
codename__startswith="edit", content_type__model__in=["host", "note", "show"]
)
create_permissions = Permission.objects.filter(
codename__startswith="create", content_type__model__in=["note"]
)
update_permissions = Permission.objects.filter(
codename__startswith="update", content_type__model__in=["host", "note", "show"]
)
custom_add_permissions = Permission.objects.filter(
codename__startswith="add__", content_type__model="playlist"
)
self.add_permissions(privileged_group, app_permissions, "default app level")
self.add_permissions(privileged_group, edit_permissions, "custom edit field")
self.add_permissions(privileged_group, create_permissions, "custom create")
self.add_permissions(privileged_group, update_permissions, "custom update")
self.add_permissions(privileged_group, custom_add_permissions, "custom add")
self.add_permissions(host_group, default_model_permissions, "default model")
self.add_permissions(host_plus_group, change_permissions, "default change")
self.add_permissions(host_plus_group, edit_permissions, "custom edit field")
self.add_permissions(
host_plus_group, custom_add_permissions.exclude(codename="add__m3ufile"), "custom add"
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment