diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-10-22 13:51:30 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-10-22 13:51:30 +0200 |
commit | cd1b777d6e95d1895780b414870ec27358ac0dd3 (patch) | |
tree | 904c5114a778b5d2bdeb688f842ef084caed4f97 /ishtar_common/utils.py | |
parent | 950cfb19a1c809e9d5e777c2750b3dd3f39bbf9f (diff) | |
parent | 480fa4f7e9a0ca6fed3b1f444807734d854de2b0 (diff) | |
download | Ishtar-cd1b777d6e95d1895780b414870ec27358ac0dd3.tar.bz2 Ishtar-cd1b777d6e95d1895780b414870ec27358ac0dd3.zip |
Merge branch 'v0.9' into wheezy
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r-- | ishtar_common/utils.py | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index 60c3ac7ef..44112bca3 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -56,10 +56,20 @@ def cached_label_changed(sender, **kwargs): if not kwargs.get('instance'): return instance = kwargs.get('instance') + if hasattr(instance, '_cached_label_checked') \ + and instance._cached_label_checked: + return + instance._cached_label_checked = True lbl = instance._generate_cached_label() if lbl != instance.cached_label: + if hasattr(instance, '_cascade_change') and instance._cascade_change: + instance.skip_history_when_saving = True instance.cached_label = lbl instance.save() + if hasattr(instance, '_get_associated_cached_labels'): + for item in instance._get_associated_cached_labels(): + item._cascade_change = True + cached_label_changed(item.__class__, instance=item) SHORTIFY_STR = ugettext(" (...)") @@ -103,19 +113,22 @@ def get_random_item_image_link(request): from archaeological_finds.models import Find ope_image_nb, cr_image_nb, find_image_nb = 0, 0, 0 + q_ope = Operation.objects.filter( + thumbnail__isnull=False).exclude(thumbnail='') + q_cr = ContextRecord.objects.filter( + thumbnail__isnull=False).exclude(thumbnail='') + q_find = Find.objects.filter( + thumbnail__isnull=False).exclude(thumbnail='') if request.user.has_perm('archaeological_operations.view_operation', Operation): - ope_image_nb = Operation.objects.filter( - thumbnail__isnull=False).count() + ope_image_nb = q_ope.count() if request.user.has_perm( 'archaeological_context_records.view_contextrecord', ContextRecord): - cr_image_nb = ContextRecord.objects.filter( - thumbnail__isnull=False).count() + cr_image_nb = q_cr.count() if request.user.has_perm('archaeological_finds.view_find', Find): - find_image_nb = Find.objects.filter( - thumbnail__isnull=False).count() + find_image_nb = q_find.count() image_total = ope_image_nb + cr_image_nb + find_image_nb if not image_total: @@ -123,15 +136,11 @@ def get_random_item_image_link(request): image_nb = random.randint(0, image_total - 1) if image_nb >= 0 and image_nb < ope_image_nb: - return _get_image_link( - Operation.objects.filter(thumbnail__isnull=False).all()[image_nb]) + return _get_image_link(q_ope.all()[image_nb]) if image_nb >= ope_image_nb and image_nb < (cr_image_nb + ope_image_nb): - return _get_image_link( - ContextRecord.objects.filter(thumbnail__isnull=False).all()[ - image_nb - ope_image_nb]) + return _get_image_link(q_cr.all()[image_nb - ope_image_nb]) if image_nb >= (cr_image_nb + ope_image_nb): - return _get_image_link( - Find.objects.filter(thumbnail__isnull=False).all()[ - image_nb - ope_image_nb - cr_image_nb]) + return _get_image_link(q_find.all()[ + image_nb - ope_image_nb - cr_image_nb]) # should never happen except in case of deletion during the excution return '' |