src/make_queue/forms/quota.py
from django import formsfrom django.db.models.functions import Concatfrom django.utils.text import capfirstfrom django.utils.translation import gettext_lazy as _from js_asset import JS from users.models import Userfrom web.widgets import SemanticChoiceInput, SemanticSearchableChoiceInputfrom ..formfields import UserModelChoiceFieldfrom ..models.machine import MachineTypefrom ..models.reservation import Quota Cyclomatic complexity is too high in class QuotaForm. (7)class QuotaForm(forms.ModelForm): user = UserModelChoiceField( queryset=User.objects.order_by(Concat('first_name', 'last_name'), 'username'), widget=SemanticSearchableChoiceInput(prompt_text=_("Select user")), # `capfirst()` to avoid duplicate translation differing only in case label=capfirst(_("user")), required=False, ) machine_type = forms.ModelChoiceField( queryset=MachineType.objects.order_by('priority'), label=capfirst(_("machine type")), empty_label=_("Select machine type"), widget=SemanticChoiceInput, ) class Meta: model = Quota fields = '__all__' class Media: js = ( JS('make_queue/js/quota_form.js', attrs={'defer': True}), ) Cyclomatic complexity is too high in method clean. (6) def clean(self): cleaned_data = super().clean() user = cleaned_data.get('user') all_users = cleaned_data.get('all') user_error_message = None if not user and not all_users: user_error_message = _("User must be set when “All users” is not set.") if user and all_users: user_error_message = _("User cannot be set when “All users” is set.") if user_error_message: # Can't raise ValidationError when adding errors for both a specific field and the whole form (field=None) self.add_error('user', user_error_message) self.add_error(None, _("Must select either specific user or all users.")) return return cleaned_data class AdminQuotaPanelQueryForm(forms.Form): user = forms.ModelChoiceField( User.objects.all(), error_messages={ 'invalid_choice': "User with pk=%(value)s was not found." }, )