1
2
3
4
5
6
7
8
9
10
11
12
13
| class UserQuerySet(models.QuerySet):
def filter_has_perm(self, perm_codeset: List[str]):
""" Permission code(List[app_label.codename]) の一覧のどれかを含むユーザーの検索 """
def _query(item):
return reduce(or_, [
Q(user_permissions__content_type__app_label=item[0], user_permissions__codename=item[1]),
Q(groups__permissions__content_type__app_label=item[0], groups__permissions__codename=item[1]),
])
query = reduce(or_, map(_query, map(lambda i: i.strip().split("."), perm_codeset)))
return self.filter(query)
|