summaryrefslogtreecommitdiff
path: root/ishtar_common/utils.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-09-05 19:10:39 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-09-05 19:28:48 +0200
commitab4922e895dda6ce778f2cce785dc69f8d210288 (patch)
tree2039c5911319a7c2930584ec0e2b5c6977c2bdeb /ishtar_common/utils.py
parent7fb1ff25e2491e94c3446a401e644de9793006f5 (diff)
downloadIshtar-ab4922e895dda6ce778f2cce785dc69f8d210288.tar.bz2
Ishtar-ab4922e895dda6ce778f2cce785dc69f8d210288.zip
Random image feature (refs #2958)
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 ''