diff options
| -rw-r--r-- | ishtar_common/migrations/0058_migrate_groups_document.py | 4 | ||||
| -rw-r--r-- | overload_translation/utils.py | 39 | 
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: | 
