diff --git a/opentech/apply/users/groups.py b/opentech/apply/users/groups.py index 42a49daa26f41ef5674bb083df6a342098fb35d2..a3e7bbe881d062c04a225103d1446362cc84cdc9 100644 --- a/opentech/apply/users/groups.py +++ b/opentech/apply/users/groups.py @@ -1,5 +1,7 @@ STAFF_GROUP_NAME = 'Staff' REVIEWER_GROUP_NAME = 'Reviewer' +TEAMADMIN_GROUP_NAME = 'Team Admin' +PARTNER_GROUP_NAME = 'Partner' GROUPS = [ { @@ -10,4 +12,12 @@ GROUPS = [ 'name': STAFF_GROUP_NAME, 'permissions': [], }, + { + 'name': TEAMADMIN_GROUP_NAME, + 'permissions': [], + }, + { + 'name': PARTNER_GROUP_NAME, + 'permissions': [], + }, ] diff --git a/opentech/apply/users/migrations/0008_add_partner_group.py b/opentech/apply/users/migrations/0008_add_partner_group.py new file mode 100644 index 0000000000000000000000000000000000000000..c639f4918461ad467cc7202cd6ba9ef99e919d5d --- /dev/null +++ b/opentech/apply/users/migrations/0008_add_partner_group.py @@ -0,0 +1,42 @@ + +# Generated by Django 2.0.9 on 2018-12-19 13:21 +from __future__ import unicode_literals + +from django.core.exceptions import ObjectDoesNotExist +from django.core.management.sql import emit_post_migrate_signal +from django.db import migrations + +from opentech.apply.users.groups import GROUPS, TEAMADMIN_GROUP_NAME, PARTNER_GROUP_NAME + + +def add_groups(apps, schema_editor): + # Workaround for https://code.djangoproject.com/ticket/23422 + db_alias = schema_editor.connection.alias + emit_post_migrate_signal(2, False, db_alias) + + Group = apps.get_model('auth.Group') + Permission = apps.get_model('auth.Permission') + + for group_data in GROUPS: + group, created = Group.objects.get_or_create(name=group_data['name']) + for permission in group_data['permissions']: + try: + group.permissions.add(Permission.objects.get(codename=permission)) + except ObjectDoesNotExist: + print("Could not find the '%s' permission" % permission) + + +def remove_groups(apps, schema_editor): + Group = apps.get_model('auth.Group') + Group.objects.filter(name__in=[TEAMADMIN_GROUP_NAME, PARTNER_GROUP_NAME]).delete() + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0007_user_slack'), + ] + + operations = [ + migrations.RunPython(add_groups, remove_groups) + ]