# -*- coding: utf-8 -*- from django import template from django.template.defaultfilters import stringfilter register = template.Library() @register.filter @stringfilter def gruppercase(value): """Correctly uppercases all Gr characters in a string""" grletters = [u'α', u'β', u'γ', u'δ', u'ε', u'ζ', u'η', u'θ', u'ι', u'κ', u'λ', u'μ', u'ν', u'ξ', u'ο', u'Ï€', u'Ï', u'σ', u'Ï„', u'Ï…', u'φ', u'χ', u'ψ', u'ω'] grletters_accent = [u'ά', u'Î', u'ή', u'ί', u'ÏŒ', u'Ï', u'ÏŽ'] grletters_upper_accent = [u'Ά', u'Έ', u'Ή', u'Ί', u'ÎŒ', u'ÎŽ', u'Î'] grletters_upper_solvents = [u'ÏŠ', u'Ï‹'] grletters_other = [u'Ï‚'] grletters_to_uppercase = [u'Α', u'Î’', u'Γ', u'Δ', u'Ε', u'Ζ', u'Η', u'Θ', u'Ι', u'Κ', u'Λ', u'Îœ', u'Î', u'Ξ', u'Ο', u'Î ', u'Ρ', u'Σ', u'Τ', u'Î¥', u'Φ', u'Χ', u'Ψ', u'Ω'] grletters_accent_to_uppercase = [u'Α', u'Ε', u'Η', u'Ι', u'Ο', u'Î¥', u'Ω'] grletters_upper_accent_to_uppercase = [u'Α', u'Ε', u'Η', u'Ι', u'Ο', u'Î¥', u'Ω'] grletters_upper_solvents_to_uppercase = [u'Ι', u'Î¥'] grletters_other_to_uppercase = [u'Σ'] grlowercase = grletters + grletters_accent + grletters_upper_accent + grletters_upper_solvents + grletters_other gruppercase = grletters_to_uppercase + grletters_accent_to_uppercase + grletters_upper_accent_to_uppercase + grletters_upper_solvents_to_uppercase + grletters_other_to_uppercase grkeys = dict(zip(grlowercase, gruppercase)) import re pattern = "|".join(grkeys.keys()) return re.sub(pattern, lambda m: grkeys[m.group()], value.upper())