diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-05 20:09:46 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-05 20:09:46 +0200 | 
| commit | 6d53f660453552414207a711cef2cad2f09bf8d3 (patch) | |
| tree | da14d18d48ba4c5217f466ade0aad79c40bb3bca /ishtar_common/utils.py | |
| parent | 4190b4a7dc03c0b9f1ca4113b4d0706c1bfffa19 (diff) | |
| parent | edfe798c15c8589933cb41314d01ff73a8d7c0c8 (diff) | |
| download | Ishtar-6d53f660453552414207a711cef2cad2f09bf8d3.tar.bz2 Ishtar-6d53f660453552414207a711cef2cad2f09bf8d3.zip  | |
Merge branch 'master' into v0.9
Diffstat (limited to 'ishtar_common/utils.py')
| -rw-r--r-- | ishtar_common/utils.py | 58 | 
1 files changed, 57 insertions, 1 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index 9fe7a3a00..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 @@ -56,3 +60,55 @@ def shortify(lbl, number=20):      if len(lbl) <= number:          return lbl      return lbl[:number - len(SHORTIFY_STR)] + SHORTIFY_STR + + +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 ''  | 
