Normalize supervisor emails and add unique constraint for case-insensitive email uniqueness
This commit is contained in:
+12
-2
@@ -5,6 +5,8 @@ import os
|
||||
from typing import Optional, Self, Tuple
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.db import models
|
||||
from django.db.models import UniqueConstraint
|
||||
from django.db.models.functions import Lower
|
||||
from django.forms import ValidationError
|
||||
from django.http import Http404, HttpRequest
|
||||
from django.shortcuts import render
|
||||
@@ -1859,8 +1861,16 @@ class Supervisor(models.Model):
|
||||
return reverse("generic:supervisor_detail", kwargs={"pk": self.pk})
|
||||
|
||||
def clean(self):
|
||||
self.email = self.email.strip()
|
||||
self.name = self.name.strip()
|
||||
if self.email:
|
||||
# normalize email: strip and lowercase for consistency
|
||||
self.email = self.email.strip().lower()
|
||||
if self.name:
|
||||
self.name = self.name.strip()
|
||||
|
||||
class Meta:
|
||||
constraints = [
|
||||
UniqueConstraint(Lower('email'), name='unique_supervisor_email_ci')
|
||||
]
|
||||
|
||||
|
||||
@receiver(post_save, sender=User)
|
||||
|
||||
Reference in New Issue
Block a user