##// END OF EJS Templates
Add users and groups
Add users and groups

File last commit:

r445:046e9870ce02
r445:046e9870ce02
Show More
create_groups.py
70 lines | 2.8 KiB | text/x-python | PythonLexer
Add users and groups
r445 from django.core.management import BaseCommand
from django.contrib.auth.models import User, Group , Permission
import logging
GROUPS = {
"Developer": {
#General permissions
#"log entry" : ["add","delete","change","view"],
#"group" : ["add","delete","change","view"],
#"permission" : ["add","delete","change","view"],
#"user" : ["add","delete","change","view"],
#"content type" : ["add","delete","change","view"],
#"session" : ["add","delete","change","view"],
#Specific permissions
"profile" : ["add","delete","change","view"],
"experiment" : ["add","delete","change","view"],
"configuration" : ["add","delete","change","view"],
"device" : ["add","delete","change","view"],
"device type" : ["add","delete","change","view"],
"generator configuration" : ["add","delete","change","view"],
"pedestal configuration" : ["add","delete","change","view"],
"usrprx configuration" : ["add","delete","change","view"],
"tx code" : ["add","delete","change","view"],
"usrptx configuration" : ["add","delete","change","view"],
},
"Operator": {
#Specific permissions
"profile" : ["view"],
"experiment" : ["view"],
"configuration" : ["view"],
"device" : ["view"],
"device type" : ["view"],
"generator configuration" : ["view"],
"pedestal configuration" : ["view"],
"usrprx configuration" : ["view"],
"tx code" : ["view"],
"usrptx configuration" : ["view"],
},
}
class Command(BaseCommand):
help = "Creates read only default permission groups for users"
def handle(self, *args, **options):
for group_name in GROUPS:
try:
Group.objects.get(name=group_name)
self.stdout.write(f'Local group "{group_name}" currently exists')
continue
except:
new_group = Group.objects.create(name=group_name)
# Loop models in group
for app_model in GROUPS[group_name]:
# Loop permissions in group/model
for permission_name in GROUPS[group_name][app_model]:
# Generate permission name as Django would generate it
name = "Can {} {}".format(permission_name, app_model)
self.stdout.write(f'Creating "{name}"')
try:
model_add_perm = Permission.objects.get(name=name)
except Permission.DoesNotExist:
logging.warning("Permission not found with name '{}'.".format(name))
continue
new_group.permissions.add(model_add_perm)