from django.core.management.base import BaseCommand, CommandError from django.contrib.auth.models import Group, Permission from django.contrib.contenttypes.models import ContentType class Command(BaseCommand): ''' Creates initial skeleton for the webapp. This command MUST do nothing if already run. ''' def create_infoscreen_moderator(self): self.stdout.write("Creating infoscreen moderator group") infoscreen_group, created = Group.objects.get_or_create(name="infoscreen moderators") if not created: self.stdout.write('The group "infoscreen moderators" already existed ' 'and was not therefore created') cts = ContentType.objects.filter(app_label='infoscreen') permissions = Permission.objects.filter(content_type__in=cts) infoscreen_group.permissions.add(*permissions) def create_member_register_viewer(self): self.stdout.write("Creating member register viewer group") viewers_group, created = Group.objects.get_or_create(name="member register viewers") if not created: self.stdout.write('The group "member register viewers" already existed ' 'and was not therefore created') cts = ContentType.objects.filter(app_label='members') members_permissions = Permission.objects.filter(content_type__in=cts, codename__contains='read') viewers_group.permissions.add(*members_permissions) def create_member_register_administrator(self): self.stdout.write("Creating member register administrator group") admins_group, created = Group.objects.get_or_create(name="member register administrators") if not created: self.stdout.write('The group "member register administrators" already existed ' 'and was not therefore created') cts = ContentType.objects.filter(app_label='members') permissions = Permission.objects.filter(content_type__in=cts) admins_group.permissions.add(*permissions) def create_official(self): self.stdout.write("Creating official group") officials_group, created = Group.objects.get_or_create(name="officials") if not created: self.stdout.write('The group "officials" already existed ' 'and was not therefore created') feed_permissions = Permission.objects.filter(codename__contains='feed') officials_group.permissions.add(*feed_permissions) def handle(self, *args, **options): self.stdout.write("Creating sikadmin group") sikadmin_group, created = Group.objects.get_or_create(name="sikadmin") if not created: self.stdout.write('The group "sikadmin" already existed ' 'and was not therefore created') self.stdout.write("Creating sikadmin permission") # TODO Use some sikadmin native model when such exists group_ctype = ContentType.objects.get_for_model(Group) sikadmin_permission, created = Permission.objects.get_or_create( codename='sikadmin', content_type=group_ctype, name='SIK Admin') if not created: self.stdout.write('The permission "sikadmin" already existed ' 'and was not therefore created') self.stdout.write("Giving sikadmin group permission to sikadmin") if sikadmin_group.permissions.filter(id=sikadmin_permission.id).exists(): self.stdout.write("Permission already existed. skipping...") else: sikadmin_group.permissions.add(sikadmin_permission) self.create_infoscreen_moderator() self.create_member_register_viewer() self.create_member_register_administrator() self.create_official() self.stdout.write("Initialization successful")