Choose most specific domains first

If we had organisations for GDS and Cabinet Office, then we’d always
want someone whose email address ends in `@cabinet-office.gov.uk` to
match to `cabinet-office.gov.uk` before matching to
`digital.cabinet-office.gov.uk`.

Sorting the list by shortest first addresses this.
This commit is contained in:
Chris Hill-Scott
2019-03-07 11:23:42 +00:00
parent c0fb9267bd
commit 6e8ce78603
2 changed files with 8 additions and 1 deletions

View File

@@ -1,3 +1,5 @@
from sqlalchemy.sql.expression import func
from app import db
from app.dao.dao_utils import transactional
from app.models import (
@@ -28,7 +30,8 @@ def dao_get_organisation_by_email_address(email_address):
email_address = email_address.lower()
for domain in Domain().query.all():
for domain in Domain.query.order_by(func.char_length(Domain.domain).desc()).all():
if (
email_address.endswith("@{}".format(domain.domain)) or
email_address.endswith(".{}".format(domain.domain))