summaryrefslogtreecommitdiff
path: root/overload_translation
diff options
context:
space:
mode:
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
commitd715f2d32f3da32e511dd56779cd05b09f2758eb (patch)
treed3b175131bcd8267481ac539df65da0adcc931c4 /overload_translation
parent9a0df0f676324e4a54072753218649dbffa8c634 (diff)
downloadIshtar-d715f2d32f3da32e511dd56779cd05b09f2758eb.tar.bz2
Ishtar-d715f2d32f3da32e511dd56779cd05b09f2758eb.zip
Manage migrations before overload translation is initialized
Diffstat (limited to 'overload_translation')
-rw-r--r--overload_translation/utils.py39
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: