From 728936052f22bf0395fccd98ca5449afda79a642 Mon Sep 17 00:00:00 2001 From: flavis Date: Tue, 20 Aug 2019 18:51:58 +0200 Subject: [PATCH] handle umlaute in association emails --- .../management/commands/get_forward_addrs.py | 13 ++++++++----- jdav_web/members/models.py | 3 ++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/jdav_web/members/management/commands/get_forward_addrs.py b/jdav_web/members/management/commands/get_forward_addrs.py index 618c654..ff2646d 100644 --- a/jdav_web/members/management/commands/get_forward_addrs.py +++ b/jdav_web/members/management/commands/get_forward_addrs.py @@ -1,6 +1,5 @@ from django.core.management.base import BaseCommand from members.models import Member -from django.db.models import Q import re @@ -19,10 +18,10 @@ class Command(BaseCommand): prename, lastname = match.groups() try: jugendleiter = Member.objects.filter(group__name='Jugendleiter') - matching = [jl.email for jl in jugendleiter if matches(jl.prename.lower(), - jl.lastname.lower(), - prename.lower(), - lastname.lower())] + matching = [jl.email for jl in jugendleiter if matches(simplify(jl.prename), + simplify(jl.lastname), + simplify(prename), + simplify(lastname))] if not matching: return self.stdout.write(" ".join(matching)) @@ -30,6 +29,10 @@ class Command(BaseCommand): pass +def simplify(name): + return name.lower().replace('ä', 'ae').replace('ö', 'oe').replace('ü', 'ue') + + def matches(prename, lastname, matched_pre, matched_last): if not matched_last and matched_pre and len(matched_pre) > 2: return prename.startswith(matched_pre) or lastname.startswith(matched_pre) diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index 9c17607..cbbc483 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -113,7 +113,8 @@ class Member(models.Model): @property def association_email(self): """Returning the association email of the member""" - return "{0}.{1}@{2}".format(self.prename.lower(), self.lastname.lower(), HOST) + raw = "{0}.{1}@{2}".format(self.prename.lower(), self.lastname.lower(), HOST) + return raw.replace('ö', 'oe').replace('ä', 'ae').replace('ü', 'ue') def get_group(self): """Returns a string of groups in which the member is."""