feat: Implement supervisor trainee management features, including search, add, and remove functionalities
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -835,6 +835,37 @@ class TraineeForm(Form):
|
||||
|
||||
|
||||
class SupervisorForm(ModelForm):
|
||||
# UserSearchWidget returns list-like values; this field normalises to a
|
||||
# single selected user for the Supervisor.user OneToOne relation.
|
||||
user = ModelChoiceField(
|
||||
queryset=User.objects.all(),
|
||||
required=False,
|
||||
widget=UserSearchWidget(),
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
user_field = self.fields.get("user")
|
||||
if user_field:
|
||||
user_field.widget = UserSearchWidget(user_field)
|
||||
|
||||
def clean_user(self):
|
||||
value = self.cleaned_data.get("user")
|
||||
|
||||
if isinstance(value, (list, tuple)):
|
||||
value = value[0] if value else None
|
||||
|
||||
if value is None:
|
||||
return None
|
||||
|
||||
if isinstance(value, User):
|
||||
return value
|
||||
|
||||
try:
|
||||
return User.objects.get(pk=value)
|
||||
except (TypeError, ValueError, User.DoesNotExist):
|
||||
raise ValidationError("Select a valid user.")
|
||||
|
||||
class Meta:
|
||||
model = Supervisor
|
||||
exclude = ("",)
|
||||
|
||||
Reference in New Issue
Block a user