diff --git a/user/graphql_inputs.py b/user/graphql_inputs.py index ae62a968d4f1d4edfed3e32d492c5f2a023d3cf5..b0947f9fda5ac643c76ac86905500b7e2da545cc 100644 --- a/user/graphql_inputs.py +++ b/user/graphql_inputs.py @@ -1,9 +1,11 @@ import graphene +from common_lib.schema_types import GroupEnum + class ChangeUserBase: user_id = graphene.UUID(required=True) - group = graphene.String(required=False, default_value=None) + group = graphene.Field(GroupEnum, required=False, default_value=None) active = graphene.Boolean(required=False, default_value=None) @@ -20,7 +22,7 @@ class FilterUsersBase: first_name = graphene.String(required=False, default_value=None) last_name = graphene.String(required=False, default_value=None) active = graphene.Boolean(required=False, default_value=None) - group = graphene.List(graphene.String, required=False, default_value=None) + groups = graphene.List(GroupEnum, required=False, default_value=None) tags = graphene.List(graphene.String, required=False, default_value=None) limit = graphene.Int(required=False, default_value=None) skip = graphene.Int(required=False, default_value=None) diff --git a/user/migrations/0006_auto_20240731_1426.py b/user/migrations/0006_auto_20240731_1426.py new file mode 100644 index 0000000000000000000000000000000000000000..54f938822329de3767ca13cdcd6c3fd10e9b2cc9 --- /dev/null +++ b/user/migrations/0006_auto_20240731_1426.py @@ -0,0 +1,21 @@ +# Generated by Django 3.2.22 on 2024-07-31 14:26 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('user', '0005_alter_user_group'), + ] + + operations = [ + migrations.RemoveField( + model_name='user', + name='is_staff', + ), + migrations.RemoveField( + model_name='user', + name='is_superuser', + ), + ] diff --git a/user/models.py b/user/models.py index 335df7f3a4a9cde22eb4cc11c0d9c4344185ed81..5b60232c58db2cb2a28c5dfe58caa5517a5516e3 100644 --- a/user/models.py +++ b/user/models.py @@ -43,22 +43,16 @@ class UserManager(BaseUserManager): return user def create_superuser(self, username, password, **extra_fields): - extra_fields.setdefault("is_staff", True) - extra_fields.setdefault("is_superuser", True) return self._create_user( username, password, User.AuthGroup.ADMIN, **extra_fields ) def create_staffuser(self, username, password, **extra_fields): - extra_fields.setdefault("is_staff", True) - extra_fields.setdefault("is_superuser", False) return self._create_user( username, password, User.AuthGroup.INSTRUCTOR, **extra_fields ) def create_user(self, username, password, **extra_fields): - extra_fields.setdefault("is_staff", False) - extra_fields.setdefault("is_superuser", False) return self._create_user( username, password, User.AuthGroup.TRAINEE, **extra_fields ) @@ -135,8 +129,6 @@ class User(AbstractBaseUser): group = models.IntegerField( choices=AuthGroup.choices(), default=AuthGroup.TRAINEE ) - is_staff = models.BooleanField(default=False) - is_superuser = models.BooleanField(default=False) is_active = models.BooleanField(default=True) is_imported = models.BooleanField(default=False) teams = models.ManyToManyField(Team, through="UserInTeam") diff --git a/user/schema/query.py b/user/schema/query.py index 0ce6dfb0e6d4e94ce0121f293d0a02c75e3d960e..e8ab34ff3c2737e797068bc235655796a2684b5b 100644 --- a/user/schema/query.py +++ b/user/schema/query.py @@ -56,8 +56,8 @@ class Query(graphene.ObjectType): last_name__icontains=filter_users_input.last_name ) - if filter_users_input.group is not None: - users = users.filter(group__name__in=filter_users_input.group) + if filter_users_input.groups is not None: + users = users.filter(group__in=filter_users_input.groups) if filter_users_input.tags is not None: for tag in filter_users_input.tags: diff --git a/user/schema/validators.py b/user/schema/validators.py index 21b179969f4e8e694b0f007babfad1e6f7110693..c7a660acc44644d7b3f8a3a4338cc5da7c4bc89c 100644 --- a/user/schema/validators.py +++ b/user/schema/validators.py @@ -224,19 +224,11 @@ def execute_change_userdata( _validate_group_change( requester, changing_user, change_user_input.group ) - changing_user.group = User.AuthGroup.from_str(change_user_input.group) - if change_user_input.group == "admin": - changing_user.is_superuser = True - changing_user.is_staff = True - changes.append(f"group=(old: {old_group}, new: admin)") - elif change_user_input.group == "instructor": - changing_user.is_staff = True - changing_user.is_superuser = False - changes.append(f"group=(old: {old_group}, new: instructor)") - elif change_user_input.group == "trainee": - changing_user.is_staff = False - changing_user.is_superuser = False - changes.append(f"group=(old: {old_group}, new: trainee)") + changing_user.group = change_user_input.group + changes.append( + f"group=(old: {User.AuthGroup(old_group).name}," + f" new: {User.AuthGroup(changing_user.group).name})" + ) if change_user_input.active is not None: _validate_active_change(requester, changing_user, change_user_input) changing_user.is_active = change_user_input.active