fix(members/templatetags): escape all non-ascii characters in esc_all

pull/136/head
Christian Merten 10 months ago
parent 4bd8f15e97
commit 2761efecaa
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -14,7 +14,7 @@ from django.utils.html import format_html
from django.urls import reverse
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
from django.contrib.contenttypes.models import ContentType
from utils import RestrictedFileField
from utils import RestrictedFileField, normalize_name
import os
from mailer.mailutils import send as send_mail, get_mail_confirmation_link,\
prepend_base_url, get_registration_link, get_wait_confirmation_link,\
@ -2012,8 +2012,3 @@ def import_from_csv_waitinglist(path):
for row in rows:
transform_row(row)
def normalize_name(raw):
noumlaut = raw.replace('ö', 'oe').replace('ä', 'ae').replace('ü', 'ue').replace(' ', '_')
return unicodedata.normalize('NFKD', noumlaut).encode('ascii', 'ignore').decode('ascii')

@ -1,5 +1,6 @@
from django import template
from django.utils.safestring import mark_safe
from utils import normalize_name
register = template.Library()
@ -12,7 +13,7 @@ def checked_if_true(name, value):
@register.filter
def esc_all(val):
return mark_safe(str(val).replace('_', '\\_').replace('&', '\\&'))
return mark_safe(str(normalize_name(val, False)).replace('_', '\\_').replace('&', '\\&'))
@register.filter

@ -2,6 +2,7 @@ from django.db import models
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _
from decimal import Decimal, ROUND_HALF_DOWN
import unicodedata
def file_size_validator(max_upload_size):
@ -60,3 +61,11 @@ def get_member(request):
return None
else:
return request.user.member
def normalize_name(raw, nospaces=True):
if nospaces:
noumlaut = raw.replace('ö', 'oe').replace('ä', 'ae').replace('ü', 'ue').replace(' ', '_')
else:
noumlaut = raw.replace('ö', 'oe').replace('ä', 'ae').replace('ü', 'ue')
return unicodedata.normalize('NFKD', noumlaut).encode('ascii', 'ignore').decode('ascii')

Loading…
Cancel
Save