# HG changeset patch # User verrierj # Date 1326359580 -3600 # Node ID 6fa2e1f8ddaad3534eee40e8faa11129a8fef398 # Parent 74f898bd09833a948d3838ac8b9369482dd9f085# Parent 63f729155d8156d81c2fa714d78946cd8c2ccbf8 Merge with 63f729155d8156d81c2fa714d78946cd8c2ccbf8 diff -r 74f898bd0983 -r 6fa2e1f8ddaa crea/inte-crea/groupe.html --- a/crea/inte-crea/groupe.html Thu Jan 12 10:09:21 2012 +0100 +++ b/crea/inte-crea/groupe.html Thu Jan 12 10:13:00 2012 +0100 @@ -113,6 +113,30 @@

Lorem Ipsum

par Ars Industrialis | 1h30

+
  • + +
    120
    +

    Lorem Ipsum

    +

    par Ars Industrialis | 1h30

    +
  • +
  • + +
    120
    +

    Lorem Ipsum

    +

    par Ars Industrialis | 1h30

    +
  • +
  • + +
    120
    +

    Lorem Ipsum

    +

    par Ars Industrialis | 1h30

    +
  • +
  • + +
    120
    +

    Lorem Ipsum

    +

    par Ars Industrialis | 1h30

    +
  • 1 diff -r 74f898bd0983 -r 6fa2e1f8ddaa crea/inte-crea/player.html --- a/crea/inte-crea/player.html Thu Jan 12 10:09:21 2012 +0100 +++ b/crea/inte-crea/player.html Thu Jan 12 10:13:00 2012 +0100 @@ -44,7 +44,7 @@

    diff -r 74f898bd0983 -r 6fa2e1f8ddaa src/ldt/ldt/ldt_utils/templates/front/front_home.html --- a/src/ldt/ldt/ldt_utils/templates/front/front_home.html Thu Jan 12 10:09:21 2012 +0100 +++ b/src/ldt/ldt/ldt_utils/templates/front/front_home.html Thu Jan 12 10:13:00 2012 +0100 @@ -1,6 +1,8 @@ {% extends "front/front_base.html" %} {% load i18n %} {% load thumbnail %} +{% load str_duration %} + {% block title %}Lignes de temps : Home{% endblock %} @@ -21,7 +23,7 @@ {% thumbnail content.image "294x165" format="PNG" crop="center" as im %}{% endthumbnail %}
    {{ content.nb_annotation }}

    {{content.title}}

    -

    {% trans 'by' %} IRI | {{content.duration_str}}

    +

    {% trans 'by' %} IRI | {{content.duration|str_duration:"h"}}

  • {% endfor %} @@ -35,7 +37,7 @@ {% thumbnail content.image "134x75" format="PNG" crop="center" as im %}{% endthumbnail %}
    {{ content.nb_annotation }}

    {% if content.title|length > 69 %}{{content.title|slice:":69"}}...{% else %}{{content.title}}{% endif %}

    -

    {% trans 'by' %} IRI | {{content.duration_str}}

    +

    {% trans 'by' %} IRI | {{content.duration|str_duration:"h"}}

    {% endfor %} diff -r 74f898bd0983 -r 6fa2e1f8ddaa src/ldt/ldt/ldt_utils/templates/front/front_search_results.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ldt/ldt/ldt_utils/templates/front/front_search_results.html Thu Jan 12 10:13:00 2012 +0100 @@ -0,0 +1,114 @@ +{% extends "front/front_base.html" %} +{% load i18n %} +{% load thumbnail %} +{% load str_duration %} + +{% block title %}Lignes de temps : {% trans 'search' %} ""{% endblock %} + +{% block css_import %} +{{block.super}} + +{% endblock %} + +{% block body %} +{{block.super}} + +{% if msg %} +{{ msg }} +{% else %} + {% ifequal nb_results 0 %} + {% blocktrans %} No results for {{ search }}.{% endblocktrans %} + {% else %} + + + + + + +
    +
      + +
    • +
        +
      • +

        {% trans "Search results for " %} {{ search }}

        +
      • +
      • +

        {{ nb_results }} {% trans "Result" %}{{ nb_results|pluralize }}

        +
      • + +
      +
    • + + + + {% autoescape off %} + {% for res in results.object_list %} +
    • +
      +
      +

      {{res.content_title|capfirst}}

      +
      +
      +

      {{res.content.duration}}

      +
      +
      + graph de volume +
      +
      + + + +
    • + {% endfor %} + {% endautoescape %} + + +
    • +

      + {% if results.has_previous %} + {% trans "previous" %} + {% endif %} + + {% if results.paginator.num_pages > 1 %} + + {% blocktrans with number=results.number num_pages=results.paginator.num_pages%}Page {{number}} of {{num_pages}}{% endblocktrans %} + + {% endif %} + + {% if results.has_next %} + {% trans "next" %} + {% endif %} +

      +
    • + +
    + + + + +
    +

    ICI PREVIEW ?

    +

    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem …

    +
    + + {% endifequal %} +{% endif %} + +{% endblock %} + diff -r 74f898bd0983 -r 6fa2e1f8ddaa src/ldt/ldt/ldt_utils/urls.py --- a/src/ldt/ldt/ldt_utils/urls.py Thu Jan 12 10:09:21 2012 +0100 +++ b/src/ldt/ldt/ldt_utils/urls.py Thu Jan 12 10:13:00 2012 +0100 @@ -43,6 +43,8 @@ url(r'^front/$', 'views.front.front_home'), url(r'^front/group/(?P.*)$', 'views.front.group_info'), url(r'^front/player/(?P.*)$', 'views.front.annot_content'), + url(r'^front/search/$', 'views.front.search_index'), + url(r'^front/searchListing', 'views.front.search_listing'), ) urlpatterns += patterns('', diff -r 74f898bd0983 -r 6fa2e1f8ddaa src/ldt/ldt/ldt_utils/views/front.py --- a/src/ldt/ldt/ldt_utils/views/front.py Thu Jan 12 10:09:21 2012 +0100 +++ b/src/ldt/ldt/ldt_utils/views/front.py Thu Jan 12 10:13:00 2012 +0100 @@ -7,6 +7,8 @@ from django.template import RequestContext from guardian.shortcuts import get_objects_for_group from ldt.ldt_utils.models import Content, Project +from ldt.ldt_utils.views.workspace import search_index as ws_search_index, search_listing as ws_search_listing +from ldt.security.utils import add_change_attr @login_required @@ -71,4 +73,14 @@ context_instance=RequestContext(request)) +@login_required +def search_index(request): + return ws_search_index(request, front_template=True) + + +@login_required +def search_listing(request): + return ws_search_listing(request, front_template=True) + + diff -r 74f898bd0983 -r 6fa2e1f8ddaa src/ldt/ldt/ldt_utils/views/workspace.py --- a/src/ldt/ldt/ldt_utils/views/workspace.py Thu Jan 12 10:09:21 2012 +0100 +++ b/src/ldt/ldt/ldt_utils/views/workspace.py Thu Jan 12 10:13:00 2012 +0100 @@ -152,7 +152,7 @@ @login_required -def search_index(request): +def search_index(request, front_template=False): sform = SearchForm(request.POST) if sform.is_valid(): @@ -167,7 +167,8 @@ else: results = get_results_with_context(field, search) complete_results = [] - proj_list = Project.safe_objects.all() + # the search is made only on the published project + proj_list = Project.safe_objects.filter(state=2) results.sort(key=lambda k: k['iri_id']) for iri_id, item in groupby(results, itemgetter('iri_id')): try: @@ -192,7 +193,7 @@ score = sum([seg['score'] for seg in segments]) desc = content.description if content.description else '' - complete_results.append({'list' : segments, 'score' : score, 'content_title' : content.title, 'content_id' : content.iri_id, 'content_description' : desc }) + complete_results.append({'list' : segments, 'score' : score, 'content_title' : content.title, 'content_id' : content.iri_id, 'content_description' : desc, 'content':content }) complete_results.sort(key=lambda k: k['score']) @@ -210,15 +211,25 @@ results.object_list = highlight_documents(results.object_list, search, field) - return render_to_response('ldt/ldt_utils/search_results.html', {'results': results, 'nb_results' : paginator.count, 'search' : search, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request)) + + if front_template : + return render_to_response('front/front_search_results.html', {'results': results, 'nb_results' : paginator.count, 'search' : search, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request)) + else : + return render_to_response('ldt/ldt_utils/search_results.html', {'results': results, 'nb_results' : paginator.count, 'search' : search, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request)) else: - return HttpResponseRedirect(reverse('ldt.ldt_utils.views.workspace.published_project')) + if front_template : + return HttpResponseRedirect(reverse('ldt.ldt_utils.views.front.front_home')) + else : + return HttpResponseRedirect(reverse('ldt.ldt_utils.views.workspace.published_project')) -def search_listing(request): +def search_listing(request, front_template=False): if not cache.get('complete_results_%s' % request.user.username): - return HttpResponseRedirect(reverse('ldt.ldt_utils.views.workspace.published_project')) + if front_template : + return HttpResponseRedirect(reverse('ldt.ldt_utils.views.front.front_home')) + else : + return HttpResponseRedirect(reverse('ldt.ldt_utils.views.workspace.published_project')) complete_results = cache.get('complete_results_%s' % request.user.username) search = cache.get('search_%s' % request.user.username) @@ -238,7 +249,10 @@ results.object_list = highlight_documents(results.object_list, search, field) - return render_to_response('ldt/ldt_utils/search_results.html', {'results': results, 'nb_results' : paginator.count, 'search' : search, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request)) + if front_template : + return render_to_response('front/front_search_results.html', {'results': results, 'nb_results' : paginator.count, 'search' : search, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request)) + else : + return render_to_response('ldt/ldt_utils/search_results.html', {'results': results, 'nb_results' : paginator.count, 'search' : search, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request)) diff -r 74f898bd0983 -r 6fa2e1f8ddaa src/ldt/ldt/static/ldt/css/front_common.css --- a/src/ldt/ldt/static/ldt/css/front_common.css Thu Jan 12 10:09:21 2012 +0100 +++ b/src/ldt/ldt/static/ldt/css/front_common.css Thu Jan 12 10:13:00 2012 +0100 @@ -201,7 +201,7 @@ position: relative; width: 378px; margin: 2px 0; height: 20px; border: 1px solid #000000; background: url(./imgs/search_icon.png) left no-repeat #ffffff; } -#search_text { +#id_search { position: absolute; top: 0; left: 25px; width: 250px; height: 20px; border: 0; padding: 0; } diff -r 74f898bd0983 -r 6fa2e1f8ddaa src/ldt/ldt/templatetags/str_duration.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ldt/ldt/templatetags/str_duration.py Thu Jan 12 10:13:00 2012 +0100 @@ -0,0 +1,46 @@ +from django.template import Library, TemplateSyntaxError + +register = Library() + +@register.filter +def str_duration(value, arg=None): + """Takes an integer value of milliseconds and write a human readable duration like 1h23, 01:23 (hours:minutes), 01:23:45 (hours:minutes:seconds), or number of seconds """ + # Error management + if value is None : + return "" + if not isinstance(value, (int,long,float,str,unicode)) : + raise TemplateSyntaxError('str_duration value error : value must be integer or long or float or string. type = ' + str(type(value))) + if isinstance(value, (str,unicode)) : + try: + value = int(value) + except : + raise TemplateSyntaxError('str_duration value error : can not convert value "' + value + '" into integer') + # We take off the milliseconds + ms = abs(value) + sec = ms//1000 + if arg is None : + arg = "::" + if arg=="::" or arg=="h" or arg==":" : + hours = sec//3600 + min = (sec - (hours * 3600))//60 + if min<10: + min_str = "0" + str(min) + else: + min_str = str(min) + if (arg=="::" or arg==":") and hours<10 : + hours_str = "0" + str(hours) + else : + hours_str = str(hours) + if arg=="h" or arg==":" : + return hours_str + arg + min_str + sec = (sec - (hours * 3600) - (min*60)) + if sec<10: + sec_str = "0" + str(sec) + else: + sec_str = str(sec) + return hours_str + ":" + min_str + ":" + sec_str + elif arg=="s" : + return sec + else : + raise TemplateSyntaxError('str_duration filter error : filters argument must be None, "::", ":", "h" or "s"') +str_duration.is_safe = True