tcms/core/forms/fields.py
# -*- coding: utf-8 -*- from django import formsfrom django.contrib.auth import get_user_modelfrom django.core.exceptions import ValidationErrorfrom django.db.models import Q User = get_user_model() # pylint: disable=invalid-name Cyclomatic complexity is too high in class UserField. (9)class UserField(forms.CharField): """ Custom field type. Will eventually support user selection """ Cyclomatic complexity is too high in method clean. (9)
Function `clean` has a Cognitive Complexity of 17 (exceeds 5 allowed). Consider refactoring.
Refactor this function to reduce its Cognitive Complexity from 17 to the 15 allowed. def clean(self, value): """ Form-validation: accept a string/integer. Looks at both email address and real name. """ if value == "" or value is None: if self.required: raise ValidationError("A user name or user ID is required.") return None if isinstance(value, int): try: return User.objects.get(pk=value) except User.DoesNotExist: raise ValidationError(f'Unknown user_id: "{value}"') from None else: value = value.strip() if value.isdigit(): try: return User.objects.get(pk=value) except User.DoesNotExist: raise ValidationError(f'Unknown user_id: "{value}"') from None else: try: return User.objects.get((Q(email=value) | Q(username=value))) except User.DoesNotExist: raise ValidationError(f'Unknown user: "{value}"') from None