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.py53
1 files changed, 52 insertions, 1 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py
index d4973012e..cb45d32e1 100644
--- a/ishtar_common/utils.py
+++ b/ishtar_common/utils.py
@@ -17,9 +17,13 @@
# See the file COPYING for details.
+import random
+
from django.conf import settings
from django.core.cache import cache
-from django.utils.translation import ugettext
+from django.core.urlresolvers import reverse
+from django.utils.safestring import mark_safe
+from django.utils.translation import ugettext_lazy as _, ugettext
from django.template.defaultfilters import slugify
@@ -61,3 +65,50 @@ def shortify(lbl, number=20):
def mode(array):
most = max(list(map(array.count, array)))
return list(set(filter(lambda x: array.count(x) == most, array)))
+
+
+def _get_image_link(item):
+ return mark_safe(u"""
+ <div class="welcome-image">
+ <img src="{}"/><br/>
+ <em>{} - {}</em>
+ <a href="#" onclick="load_window(\'{}\')">
+ <i class="fa fa-info-circle" aria-hidden="true"></i>
+ </a>
+ <a href="." title="{}">
+ <i class="fa fa-random" aria-hidden="true"></i>
+ </a><br/>
+ </div>""".format(
+ item.thumbnail.url,
+ unicode(item.__class__._meta.verbose_name),
+ unicode(item),
+ reverse(item.SHOW_URL, args=[item.pk, '']),
+ unicode(_(u"Load another random image?"))))
+
+
+def get_random_item_image_link():
+ from archaeological_operations.models import Operation
+ from archaeological_context_records.models import ContextRecord
+ from archaeological_finds.models import Find
+ ope_image_nb = Operation.objects.filter(image__isnull=False).count()
+ cr_image_nb = ContextRecord.objects.filter(image__isnull=False).count()
+ find_image_nb = Find.objects.filter(image__isnull=False).count()
+
+ image_total = ope_image_nb + cr_image_nb + find_image_nb
+ if not image_total:
+ return ''
+
+ 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(image__isnull=False).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(image__isnull=False).all()[
+ image_nb - ope_image_nb])
+ if image_nb >= (cr_image_nb + ope_image_nb):
+ return _get_image_link(
+ Find.objects.filter(image__isnull=False).all()[
+ image_nb - ope_image_nb - cr_image_nb])
+ # should never happen except in case of deletion during the excution
+ return ''