From bd4e74b93fe3b22f5393fdea89c0986340a56561 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 14 Feb 2019 11:22:52 +0100 Subject: [PATCH 4/6] utils: add a lazy_label helper (#30252) It allows giving a default value for a label with a getter function to allow customization. --- src/authentic2/utils.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/authentic2/utils.py b/src/authentic2/utils.py index e4bdd707..5f494844 100644 --- a/src/authentic2/utils.py +++ b/src/authentic2/utils.py @@ -3,7 +3,6 @@ import random import time import logging import urllib -import six import urlparse import uuid import datetime @@ -24,7 +23,7 @@ from django.contrib.auth import (REDIRECT_FIELD_NAME, login as auth_login, SESSI from django import forms from django.forms.utils import ErrorList, to_current_timezone from django.utils import timezone -from django.utils import html, http +from django.utils import html, http, six, encoding from django.utils.translation import ugettext as _, ungettext from django.shortcuts import resolve_url from django.template.loader import render_to_string, TemplateDoesNotExist @@ -33,7 +32,7 @@ from django.core import signing from django.core.urlresolvers import reverse, NoReverseMatch from django.utils.formats import localize from django.contrib import messages -from django.utils.functional import empty +from django.utils.functional import empty, allow_lazy from django.utils.http import urlsafe_base64_encode from django.utils.encoding import iri_to_uri, force_bytes, uri_to_iri from django.shortcuts import render @@ -1085,3 +1084,12 @@ def user_can_change_password(user, request=None): if can is False: return can return True + + +def lazy_label(default, func): + '''Allow using a getter for a label, with late binding. + + ex.: lazy_label(_('Default label'), lambda: app_settings.CUSTOM_LABEL) + ''' + return encoding.force_text(func() or default) +lazy_label = allow_lazy(lazy_label, six.text_type) -- 2.20.1