summaryrefslogtreecommitdiff
path: root/ishtar_common/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r--ishtar_common/utils.py37
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 ''