Source code for intranet.apps.eighth.forms.fields

from django import forms
from django.contrib.auth import get_user_model
from django.core.validators import ValidationError


[docs]class UserMultipleChoiceField(forms.ModelMultipleChoiceField): """Choose any user from the database."""
[docs] def clean(self, value): if not value and not self.required: return self.queryset.none() elif self.required: raise ValidationError(self.error_messages["required"], code="required") try: users = get_user_model().objects.filter(id__in=value) if len(users) != len(value): raise ValidationError(self.error_messages["invalid_choice"], code="invalid_choice") except (ValueError, TypeError) as e: raise ValidationError(self.error_messages["invalid_choice"], code="invalid_choice") from e return users
[docs] def label_from_instance(self, obj): if isinstance(obj, get_user_model()): return f"{obj.get_full_name()} ({obj.username})" return super().label_from_instance(obj)