MCPcopy
hub / github.com/django/django / with_perm

Method with_perm

django/contrib/auth/backends.py:200–233  ·  view source on GitHub ↗

Return users that have permission "perm". By default, filter out inactive users and include superusers.

(self, perm, is_active=True, include_superusers=True, obj=None)

Source from the content-addressed store, hash-verified

198 )
199
200 def with_perm(self, perm, is_active=True, include_superusers=True, obj=None):
201 """
202 Return users that have permission "perm". By default, filter out
203 inactive users and include superusers.
204 """
205 if isinstance(perm, str):
206 try:
207 app_label, codename = perm.split(".")
208 except ValueError:
209 raise ValueError(
210 "Permission name should be in the form "
211 "app_label.permission_codename."
212 )
213 elif not isinstance(perm, Permission):
214 raise TypeError(
215 "The `perm` argument must be a string or a permission instance."
216 )
217
218 if obj is not None:
219 return UserModel._default_manager.none()
220
221 permission_q = Q(group__user=OuterRef("pk")) | Q(user=OuterRef("pk"))
222 if isinstance(perm, Permission):
223 permission_q &= Q(pk=perm.pk)
224 else:
225 permission_q &= Q(codename=codename, content_type__app_label=app_label)
226
227 user_q = Exists(Permission.objects.filter(permission_q))
228 if include_superusers:
229 user_q |= Q(is_superuser=True)
230 if is_active is not None:
231 user_q &= Q(is_active=is_active)
232
233 return UserModel._default_manager.filter(user_q)
234
235 def get_user(self, user_id):
236 try:

Callers

nothing calls this directly

Calls 6

QClass · 0.90
OuterRefClass · 0.90
ExistsClass · 0.90
noneMethod · 0.80
splitMethod · 0.45
filterMethod · 0.45

Tested by

no test coverage detected