summaryrefslogtreecommitdiff
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
commita94ebb633c1fee844eaea33a527a4cb55d4833d7 (patch)
treed3b175131bcd8267481ac539df65da0adcc931c4
parent521497c4fc19c473777b86a7a2677abe2e08c252 (diff)
downloadIshtar-a94ebb633c1fee844eaea33a527a4cb55d4833d7.tar.bz2
Ishtar-a94ebb633c1fee844eaea33a527a4cb55d4833d7.zip
Manage migrations before overload translation is initialized
-rw-r--r--ishtar_common/migrations/0058_migrate_groups_document.py4
-rw-r--r--overload_translation/utils.py39
2 files changed, 33 insertions, 10 deletions
diff --git a/ishtar_common/migrations/0058_migrate_groups_document.py b/ishtar_common/migrations/0058_migrate_groups_document.py
index 74bb55c6e..9383ece33 100644
--- a/ishtar_common/migrations/0058_migrate_groups_document.py
+++ b/ishtar_common/migrations/0058_migrate_groups_document.py
@@ -8,8 +8,8 @@ from django.apps import apps as django_apps
def migrate_groups(apps, schema_editor):
- # create_permissions(django_apps.get_app_config('ishtar_common'),
- # verbosity=0)
+ create_permissions(django_apps.get_app_config('ishtar_common'),
+ verbosity=0)
Group = apps.get_model('auth', 'Group')
Permission = apps.get_model('auth', 'Permission')
ProfileType = apps.get_model('ishtar_common', 'ProfileType')
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: