diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-11-16 19:58:55 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-11-16 19:58:55 +0100 |
commit | d715f2d32f3da32e511dd56779cd05b09f2758eb (patch) | |
tree | d3b175131bcd8267481ac539df65da0adcc931c4 /overload_translation | |
parent | 9a0df0f676324e4a54072753218649dbffa8c634 (diff) | |
download | Ishtar-d715f2d32f3da32e511dd56779cd05b09f2758eb.tar.bz2 Ishtar-d715f2d32f3da32e511dd56779cd05b09f2758eb.zip |
Manage migrations before overload translation is initialized
Diffstat (limited to 'overload_translation')
-rw-r--r-- | overload_translation/utils.py | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/overload_translation/utils.py b/overload_translation/utils.py index 2b9b69ab0..575de0102 100644 --- a/overload_translation/utils.py +++ b/overload_translation/utils.py @@ -1,5 +1,6 @@ from django.conf import settings from django.core.cache import cache +from django.db import connection from django.db.utils import DatabaseError from django.utils.functional import lazy from django.utils.translation import ugettext as _, pgettext as _p, get_language @@ -12,6 +13,35 @@ from overload_translation import models NO_VALUE = "<<no-value>>" +def check_db_is_init(): + """ + Not yet initialized for first migrations + """ + with connection.cursor() as cursor: + sql = """SELECT EXISTS ( + SELECT 1 FROM information_schema.tables + WHERE table_name = 'overload_translation_translationoverload');""" + cursor.execute(sql) + res = cursor.fetchall() + return res and res[0][0] + + +def check_has_translations(): + if not check_db_is_init(): + return False + try: + nb = models.TranslationOverload.objects.count() + except DatabaseError: + return False + has_translation_key = "{}-has-dynamic-translation".format( + settings.PROJECT_SLUG) + if not nb: + cache.set(has_translation_key, False, settings.CACHE_TIMEOUT) + return False + cache.set(has_translation_key, True, settings.CACHE_TIMEOUT) + return True + + def simple_trans(message, context): if context: s = _p(context, message) @@ -33,14 +63,7 @@ def ugettext(message, context=""): if has_translations is False: return simple_trans(message, context) elif has_translations is None: - try: - nb = models.TranslationOverload.objects.count() - except DatabaseError: - return simple_trans(message, context) - if nb: - cache.set(has_translation_key, True, settings.CACHE_TIMEOUT) - else: - cache.set(has_translation_key, False, settings.CACHE_TIMEOUT) + if not check_has_translations(): return simple_trans(message, context) current_language = get_language() if not current_language: |