# HG changeset patch
# User verrierj
# Date 1327510621 -3600
# Node ID 8e9494006e7be0c1c560db2d429084fec769310b
# Parent ff060d157dae3cef0c9b55773174b160661b8511
segment abstracts + content images can be retrieved directly from search results page
diff -r ff060d157dae -r 8e9494006e7b src/ldt/ldt/indexation/__init__.py
--- a/src/ldt/ldt/indexation/__init__.py Wed Jan 25 15:47:19 2012 +0100
+++ b/src/ldt/ldt/indexation/__init__.py Wed Jan 25 17:57:01 2012 +0100
@@ -46,30 +46,30 @@
return hits.scoreDocs
-def highlight_documents(doc_list, query, field):
+def highlight_documents(results_list, query, field):
searcher = get_searcher()
analyzer = lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT)
formatter = lucene.SimpleHTMLFormatter('', '')
query = get_query_parser(field).parse(query)
highlighter = lucene.Highlighter(formatter, lucene.QueryScorer (query))
- for project in doc_list:
+ for project in results_list:
for segment in project['list']:
- lucene_doc = searcher.doc(segment['lucene_id'])
- segment['context'] = get_highlighted_text(lucene_doc, analyzer, highlighter, 'abstract')
+ lucene_doc = searcher.doc(segment.lucene_id)
+ segment.context = get_highlighted_text(lucene_doc, analyzer, highlighter, 'abstract')
tags = get_highlighted_text(lucene_doc, analyzer, highlighter, 'tags')
- segment['title'] = get_highlighted_text(lucene_doc, analyzer, highlighter, 'title')
+ segment.title = get_highlighted_text(lucene_doc, analyzer, highlighter, 'title')
- if segment['context'] == u'':
- segment['context'] = lucene_doc.getField('abstract').stringValue()
+ if segment.context == u'':
+ segment.context = lucene_doc.getField('abstract').stringValue()
if tags == u'':
tags = lucene_doc.getField('tags').stringValue()
- if segment['title'] == u'':
- segment['title'] = lucene_doc.getField('title').stringValue()
+ if segment.title == u'':
+ segment.title = lucene_doc.getField('title').stringValue()
- segment['tags'] = tags[tags.find(';')+1:]
+ segment.context_tags = tags[tags.find(';')+1:]
- return doc_list
+ return results_list
def get_highlighted_text(doc, analyzer, highlighter, field):
res = doc.getField(field).stringValue()
diff -r ff060d157dae -r 8e9494006e7b src/ldt/ldt/ldt_utils/templates/front/front_search_results.html
--- a/src/ldt/ldt/ldt_utils/templates/front/front_search_results.html Wed Jan 25 15:47:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/front/front_search_results.html Wed Jan 25 17:57:01 2012 +0100
@@ -26,11 +26,9 @@
"segments" : [ {% for segment in res.list %}
{
"id" : '{{segment.element_id}}',
- "begin" : {{segment.begin}},
+ "begin" : {{segment.start_ts}},
"duration" : {{segment.duration}},
- "cutting_id" : '{{segment.decoupage_id}}',
- "project_id" : '{{segment.project_id}}',
- "ensemble_id" : '{{segment.ensemble_id}}',
+ "cutting_id" : '{{segment.cutting_id}}',
},{% endfor %}
],
"stats" : [{{ res.content.stat_annotation }}],
@@ -38,7 +36,6 @@
];
var global_csrf_token = "{{ csrf_token }}";
- var annot_preview_url = "{% url ldt.ldt_utils.views.front.annotation_preview project_id='__PROJECT_ID__' content_id='__CONTENT_ID__' ensemble_id='__ENSEMBLE_ID__' cutting_id='__CUTTING_ID__' segment_id='__SEGMENT_ID__' %}";
@@ -76,16 +73,16 @@
+
@@ -123,14 +120,13 @@
{{i|add:'1'}}
{% endif %}
{% if i|add:'1' < results.paginator.num_pages and 1 < results.paginator.num_pages %}
- .
{% endif %}
{% endfor %}
{% endif %}
{% if results.has_next %}
- .
+
{% trans "next" %}
{% endif %}
diff -r ff060d157dae -r 8e9494006e7b src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/search_results.html
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/search_results.html Wed Jan 25 15:47:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/search_results.html Wed Jan 25 17:57:01 2012 +0100
@@ -67,13 +67,13 @@
{% for res in results.object_list %}
-
- {{res.content_title|capfirst}}
- {% ifnotequal res.content_description 'None' %}
- {{ res.content_description }}
- {% endifnotequal %}
+ {{res.content.title|capfirst}}
+
+ {{ res.content.description }}
+
{% for segment in res.list %}
- -
+
-
{% if segment.title %}
{{ segment.title }}
{% else %}
@@ -83,8 +83,8 @@
{% if segment.context %}
{{ segment.context }}
{% endif %}
- {% if segment.tags %}
-
{% trans "Tags"%} : {{ segment.tags }}
+ {% if segment.context_tags %}
+
{% trans "Tags"%} : {{ segment.context_tags }}
{% endif %}
{% endfor %}
diff -r ff060d157dae -r 8e9494006e7b src/ldt/ldt/ldt_utils/urls.py
--- a/src/ldt/ldt/ldt_utils/urls.py Wed Jan 25 15:47:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/urls.py Wed Jan 25 17:57:01 2012 +0100
@@ -48,7 +48,6 @@
url(r'^front/search/$', 'views.front.search_index'),
url(r'^front/searchListing', 'views.front.search_listing'),
url(r'^front/medias', 'views.front.all_contents'),
- url(r'^annotpreview/(?P.*)/(?P.*)/(?P.*)/(?P.*)/(?P.*)/$', 'views.front.annotation_preview'),
)
urlpatterns += patterns('',
diff -r ff060d157dae -r 8e9494006e7b src/ldt/ldt/ldt_utils/views/front.py
--- a/src/ldt/ldt/ldt_utils/views/front.py Wed Jan 25 15:47:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/front.py Wed Jan 25 17:57:01 2012 +0100
@@ -131,37 +131,3 @@
return Tag.objects.cloud_for_model(Content, steps=steps)
else :
return Tag.objects.cloud_for_model(Content, steps=steps)[:limit]
-
-
-def annotation_preview(request, project_id, content_id, ensemble_id, cutting_id, segment_id):
-
- if project_id == '_':
- project_id = ''
-
- s = get_object_or_404(Segment, iri_id=content_id, project_id=project_id, cutting_id=cutting_id, element_id=segment_id, ensemble_id=ensemble_id)
-
- annotation = {
- 'project_id': s.project_id,
- 'iri_id' : s.iri_id,
- 'ensemble_id' : s.ensemble_id,
- 'cutting_id' : s.cutting_id,
- 'element_id' : s.ensemble_id,
- 'tags' : s.tags,
- 'title': s.title,
- 'duration': s.duration,
- 'start_ts': s.start_ts,
- 'author': s.author,
- 'date': s.date,
- 'abstract': s.abstract
- }
-
- mimetype = "application/json; charset=utf-8"
- resp = HttpResponse(mimetype=mimetype)
- resp['Cache-Control'] = 'no-cache, must-revalidate'
- resp['Pragma'] = 'no-cache'
- resp.write(simplejson.dumps(annotation, indent=settings.LDT_JSON_DEFAULT_INDENT))
-
- return resp
-
-
-
diff -r ff060d157dae -r 8e9494006e7b src/ldt/ldt/ldt_utils/views/workspace.py
--- a/src/ldt/ldt/ldt_utils/views/workspace.py Wed Jan 25 15:47:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/workspace.py Wed Jan 25 17:57:01 2012 +0100
@@ -12,7 +12,7 @@
from django.utils.html import escape
from django.utils.translation import ugettext as _
from ldt.ldt_utils.forms import SearchForm
-from ldt.ldt_utils.models import Content, Project
+from ldt.ldt_utils.models import Content, Project, Segment
from ldt.ldt_utils.utils import boolean_convert
from ldt.security.utils import add_change_attr, get_userlist
from lxml.html import fragment_fromstring
@@ -165,36 +165,51 @@
url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.lignesdetemps.search_init", args=[field, queryStr])
return render_to_response('ldt/ldt_utils/init_ldt_full.html', {'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/', 'url': url}, context_instance=RequestContext(request))
else:
- results = get_results_with_context(field, search)
- complete_results = []
- # the search is made only on the published project
- proj_list = Project.safe_objects.filter(state=2)
+ results = get_results_with_context(field, search)
+
+ all_segments = Segment.safe_objects.filter(element_id__in=[e['element_id'] for e in results])
+ all_projects = Project.safe_objects.filter(ldt_id__in=[e['project_id'] for e in results], state=2)
+ all_contents = Content.safe_objects.filter(iri_id__in=[e['iri_id'] for e in results])
+ viewable_projects_id = [p.ldt_id for p in all_projects]
+
+ complete_results = []
results.sort(key=lambda k: k['iri_id'])
- for iri_id, item in groupby(results, itemgetter('iri_id')):
- try:
- content = Content.objects.get(iri_id=iri_id)
- except Content.DoesNotExist:
- continue
- segments = list(item)
- to_delete = []
- for s in segments:
+
+ for iri_id, item in groupby(results, itemgetter('iri_id')):
+ content = filter(lambda e: e.iri_id == iri_id, all_contents)[0]
+ if content.description is None:
+ content.description = ''
+
+ all_related_segments = list(item)
+
+ valid_segments = []
+ for s in all_related_segments:
+ segment = filter(lambda e: e.element_id == s['element_id'] , all_segments)[0]
+
+ segment.score = s['score']
+ segment.lucene_id = s['lucene_id']
+ segment.context = s['context']
+ segment.context_tags = s['tags']
+
if not s['project_id']:
s['project_id'] = '_'
- else:
- project = proj_list.filter(ldt_id=s['project_id'])
- if len(project) == 0:
- to_delete.append(s)
-
- for e in to_delete:
- segments.remove(e)
-
- if not segments:
- continue
+ valid_segments.append(segment)
+ elif s['project_id'] in viewable_projects_id:
+ valid_segments.append(segment)
+
+ # If all segments found belong to unpublished projects or projects
+ # the current user is not allowed to see
+ if not valid_segments:
+ continue
- 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, 'content':content })
-
+ score = sum([seg.score for seg in valid_segments])
+ complete_results.append({
+ 'list': valid_segments,
+ 'score': score,
+ 'content': content,
+ })
+
+
complete_results.sort(key=lambda k: k['score'])
cache.set('complete_results_%s' % request.user.username, complete_results)
@@ -208,9 +223,8 @@
results = paginator.page(page)
except (EmptyPage, InvalidPage):
results = paginator.page(paginator.num_pages)
-
- results.object_list = highlight_documents(results.object_list, search, field)
+ results.object_list = highlight_documents(results.object_list, search, field)
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))
diff -r ff060d157dae -r 8e9494006e7b src/ldt/ldt/user/models.py
--- a/src/ldt/ldt/user/models.py Wed Jan 25 15:47:19 2012 +0100
+++ b/src/ldt/ldt/user/models.py Wed Jan 25 17:57:01 2012 +0100
@@ -53,7 +53,9 @@
profile = GroupProfile()
profile.group_id = instance.id
profile.save()
- instance.user_set.add(User.objects.filter(is_superuser=True)[0])
+ admins = User.objects.filter(is_superuser=True)
+ if admins:
+ instance.user_set.add(admins[0])
# To keep consistency with User.get_profile() method
def get_profile(self):