Skip to content

Commit

Permalink
Added conditional validation based on user's category in credential app
Browse files Browse the repository at this point in the history
Check user's email address to see if it's an academic email address or not based on the category they apply with for credential applications.
  • Loading branch information
mscanlan-git committed Dec 7, 2023
1 parent ca267f2 commit 31dd642
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
4 changes: 2 additions & 2 deletions physionet-django/user/fixtures/demo-user.json
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@
"pk": 6,
"fields": {
"password": "pbkdf2_sha256$150000$6e8RyzxeUEDC$XjhKiSVwTTucKJIvpC2gYWL/6jCeSBWuZQRMSe8bm3g=",
"email": "eula_easley@fake_gmail.com",
"email": "eula_easley@mit.edu",
"username": "eulaeasley",
"join_date": "2020-03-29",
"last_login": null,
Expand Down Expand Up @@ -3438,7 +3438,7 @@
"user": [
"eulaeasley"
],
"email": "eula_easley@fake_gmail.com",
"email": "eula_easley@mit.edu",
"is_primary_email": true,
"added_date": "2020-03-29T21:51:08.458Z",
"verification_date": "2020-03-29T21:51:08.458Z",
Expand Down
9 changes: 8 additions & 1 deletion physionet-django/user/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from django.conf import settings
from django.contrib.auth import forms as auth_forms
from django.contrib.auth import password_validation
from django.core.exceptions import ValidationError
from django.core.files.uploadedfile import UploadedFile
from django.db import transaction
from django.db.models import F, Q
Expand All @@ -29,7 +30,7 @@
from user.trainingreport import TrainingCertificateError, find_training_report_url
from user.userfiles import UserFiles
from user.validators import UsernameValidator, validate_name, validate_training_file_size
from user.validators import validate_institutional_email
from user.validators import validate_institutional_email, academic_email
from user.widgets import ProfilePhotoInput

from django.db.models import OuterRef, Exists
Expand Down Expand Up @@ -474,6 +475,12 @@ def __init__(self, user, *args, **kwargs):
'organization_name':self.profile.affiliation,
'webpage':self.profile.website}

def clean(self):
email = self.user.email
category = self.cleaned_data.get('researcher_category')

if category in [0, 1, 2, 7]:
academic_email(email)

class ResearchCAF(forms.ModelForm):
"""
Expand Down
15 changes: 14 additions & 1 deletion physionet-django/user/validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,11 +257,24 @@ def validate_institutional_email(value):
Validate that the email address is from an institutional domain.
"""
validate_email(value)
domains = ["yahoo.com", "163.com", "126.com", "outlook.com", "gmail.com", "qq.com", "foxmail.com"]
domains = ["yahoo.com", "163.com", "126.com", "outlook.com", "gmail.com", "qq.com",
"foxmail.com", "hotmail.com", "168.com"]
if value.split('@')[-1].lower() in domains:
raise ValidationError('Please provide an academic or institutional email address.')


def academic_email(value):
"""
Validate that the academic email address is being used in credential application
"""
validate_email(value)
domains = ["yahoo.com", "163.com", "126.com", "outlook.com", "gmail.com", "qq.com",
"foxmail.com", "hotmail.com", "168.com"]
if value.split('@')[-1].lower() in domains:
raise ValidationError('Please provide your academic email address in your email settings.'
'Select your academic email as your primary email address.')


def is_institutional_email(value):
"""
Returns True if the email address is from an institutional domain.
Expand Down

0 comments on commit 31dd642

Please sign in to comment.