From 463298460868a7e46b35d9a0e1b0a6f139ab9706 Mon Sep 17 00:00:00 2001 From: DoyunShin Date: Tue, 9 Jan 2024 15:30:48 +0000 Subject: [PATCH] refactor(permission): Fix type hinting --- apps/user/models/group.py | 2 +- apps/user/models/user_profile.py | 3 ++- apps/user/models/usergroup.py | 16 ++++++++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/apps/user/models/group.py b/apps/user/models/group.py index bb51cada..888eb56b 100644 --- a/apps/user/models/group.py +++ b/apps/user/models/group.py @@ -32,7 +32,7 @@ def __str__(self) -> str: return self.name @staticmethod - def search_by_name(name: str) -> list: + def search_by_name(name: str) -> list["Group"]: return Group.objects.filter(name=name) @staticmethod diff --git a/apps/user/models/user_profile.py b/apps/user/models/user_profile.py index 76142df6..8e592b10 100644 --- a/apps/user/models/user_profile.py +++ b/apps/user/models/user_profile.py @@ -7,6 +7,7 @@ from django.utils.functional import cached_property from django.utils.translation import gettext_lazy +from apps.user.models import Group from ara.db.models import MetaDataModel from ara.settings import MIN_TIME @@ -148,5 +149,5 @@ def is_school_admin(self) -> bool: return self.group == UserProfile.UserGroup.COMMUNICATION_BOARD_ADMIN @cached_property - def groups(self) -> list: + def groups(self) -> list[Group]: return UserGroup.search_by_user(self.user) diff --git a/apps/user/models/usergroup.py b/apps/user/models/usergroup.py index d1717376..cd1af235 100644 --- a/apps/user/models/usergroup.py +++ b/apps/user/models/usergroup.py @@ -26,9 +26,17 @@ class Meta: ) @staticmethod - def search_by_user(self, user: UserProfile): - return UserGroup.objects.filter(user=user) + def search_by_user(self, user: UserProfile) -> list[Group]: + groups = [] + for usergroup in UserGroup.objects.filter(user=user): + groups.append(usergroup.group) + return groups @staticmethod - def search_by_group(self, group: Group): # WARNING: Too many results - return UserGroup.objects.filter(group=group) + def search_by_group( + self, group: Group + ) -> list[UserProfile]: # WARNING: Too many results + users = [] + for usergroup in UserGroup.objects.filter(group=group): + users.append(usergroup.user) + return users