From 950633a9dfdf9678f253a98afd6075e93cbcecb3 Mon Sep 17 00:00:00 2001 From: Awais Jibran Date: Wed, 24 Feb 2021 12:05:38 +0500 Subject: [PATCH] refactor: use q objects when fetching user using an identifier #26683 --- .../management/commands/show_permissions.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lms/djangoapps/discussion/management/commands/show_permissions.py b/lms/djangoapps/discussion/management/commands/show_permissions.py index 3581a7b6a2..72d1450667 100644 --- a/lms/djangoapps/discussion/management/commands/show_permissions.py +++ b/lms/djangoapps/discussion/management/commands/show_permissions.py @@ -3,6 +3,7 @@ from django.contrib.auth.models import User # lint-amnesty, pylint: disable=imported-auth-user from django.core.management.base import BaseCommand +from django.db.models import Q class Command(BaseCommand): # lint-amnesty, pylint: disable=missing-class-docstring @@ -14,19 +15,16 @@ class Command(BaseCommand): # lint-amnesty, pylint: disable=missing-class-docst def handle(self, *args, **options): email_or_username = options['email_or_username'] - try: - if '@' in email_or_username: - user = User.objects.get(email=email_or_username) - else: - user = User.objects.get(username=email_or_username) - except User.DoesNotExist: + + user = User.objects.filter(Q(username=email_or_username) | Q(email=email_or_username)).first() + if not user: print(f'User {email_or_username} does not exist. ') print('Available users: ') print(User.objects.all()) return roles = user.roles.all() - print('{} has %d roles:'.format(user, len(roles))) + print(f'{user} has {len(roles)} roles:') for role in roles: print(f'\t{role}')