Merge with upstream
authorhamidouk
Thu, 02 Feb 2012 15:35:47 +0100
changeset 509 13ed4a934a72
parent 508 cebc62a93563 (current diff)
parent 507 9b3ad1aa1868 (diff)
child 510 496917cf614a
child 512 6977273dac24
Merge with upstream
virtualenv/res/src/sorl-sorl-thumbnail-v10.12.1-65-g2285451.tar.gz
Binary file .DS_Store has changed
--- a/.settings/org.eclipse.core.resources.prefs	Thu Feb 02 15:35:19 2012 +0100
+++ b/.settings/org.eclipse.core.resources.prefs	Thu Feb 02 15:35:47 2012 +0100
@@ -1,4 +1,4 @@
-#Wed Jan 25 12:23:22 CET 2012
+#Wed Feb 01 17:37:13 CET 2012
 eclipse.preferences.version=1
 encoding//src/ldt/ldt/core/migrations/0001_initial.py=utf-8
 encoding//src/ldt/ldt/core/migrations/0002_auto__del_owner.py=utf-8
@@ -11,6 +11,7 @@
 encoding//src/ldt/ldt/ldt_utils/migrations/0009_auto__chg_field_content_image__chg_field_project_image.py=utf-8
 encoding//src/ldt/ldt/ldt_utils/migrations/0010_auto__add_annotationstat.py=utf-8
 encoding//src/ldt/ldt/ldt_utils/migrations/0011_gen_stat_annotation.py=utf-8
+encoding//src/ldt/ldt/management/utils.py=utf-8
 encoding//src/ldt/ldt/text/migrations/0001_initial.py=utf-8
 encoding//src/ldt/ldt/user/migrations/0001_initial.py=utf-8
 encoding//src/ldt/ldt/user/migrations/0002_auto__del_irigroup.py=utf-8
--- a/src/ldt/ldt/ldt_utils/models.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/models.py	Thu Feb 02 15:35:47 2012 +0100
@@ -224,9 +224,7 @@
             create_front_project = True
             
             if not self.nb_annotation:
-                self.nb_annotation = 0
-            if not self.stat_annotation:
-                self.stat_annotation = ('0,' * settings.DIVISIONS_FOR_STAT_ANNOTATION)[:-1]     
+                self.nb_annotation = 0    
 
         super(Content, self).save(*args, **kwargs)
         
@@ -403,12 +401,16 @@
 
     def __make_getter(self, i):
         def inner_getter(self):
+            if not self.stat_annotation:
+                self.stat_annotation =  self.__list2str([0] * (settings.DIVISIONS_FOR_STAT_ANNOTATION + len(settings.SYNTAX.keys())))
             l = self.__str2list(self.stat_annotation)
             return l[Content.__pol_indices[i]]
         return inner_getter
     
     def __make_setter(self, i):
         def inner_setter(self, value):
+            if not self.stat_annotation:
+                self.stat_annotation =  self.__list2str([0] * (settings.DIVISIONS_FOR_STAT_ANNOTATION + len(settings.SYNTAX.keys())))
             l = self.__str2list(self.stat_annotation)
             l[Content.__pol_indices[i]] = value
             self.stat_annotation = self.__list2str(l)
@@ -607,7 +609,7 @@
     polemics = models.IntegerField(null=True, blank=True, default=0)
     
     
-    # Mask is 0000, representing OK|KO|Q|REF
+    # Mask is 0000, representing OK|KO|Q|REF, 1 if the syntax is in the segment, 0 else
     mask = {
             'OK': set([8,9,10,11,12,13,14,15]),
             'KO': set([4,5,6,7,12,13,14,15]),
--- a/src/ldt/ldt/ldt_utils/stat.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/stat.py	Thu Feb 02 15:35:47 2012 +0100
@@ -53,7 +53,7 @@
     return True
     
 
-def add_annotation_to_stat(content, begin, end, polemics=[]):
+def add_annotation_to_stat(content, begin, end):
     nb_division = settings.DIVISIONS_FOR_STAT_ANNOTATION
 
     if not content.nb_annotation or not content.stat_annotation:
@@ -66,10 +66,7 @@
     buckets = find_buckets(content.annotation_volume, limits, begin, end)
     content.annotation_volume = buckets
     content.last_annotated = datetime.datetime.now()
-    
-    for polemic in polemics:
-        update_polemic_stat(content, polemic)
-    
+      
     content.save()        
 
 def get_string_from_buckets(buckets):
@@ -106,16 +103,3 @@
             buckets[i] += 1
             
     return buckets
-
-def update_polemic_stat(content, polemic_hashtag):
-    if polemic_hashtag == "OK":
-        content.pol_positive += 1
-    if polemic_hashtag == "KO":
-        content.pol_negative += 1
-    if polemic_hashtag == "Q":
-        content.pol_question += 1
-    if polemic_hashtag == "REF":
-        content.pol_reference += 1
-        
-    return content
-
--- a/src/ldt/ldt/ldt_utils/templates/front/front_all_contents.html	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/front/front_all_contents.html	Thu Feb 02 15:35:47 2012 +0100
@@ -3,7 +3,16 @@
 {% load thumbnail %}
 {% load front_tags %}
 
-{% block title %}Lignes de temps : groupe "{{group.name}}"{% endblock %}
+{% block title %}
+
+{% if tag_label %}
+{% blocktrans %}Lignes de temps : {{tag_label}}{% endblocktrans %}
+{% else %}
+{% trans "Lignes de temps : all medias" %}
+{% endif %}
+
+
+{% endblock %}
 
 {% block js_import %}
 {{block.super}}
--- a/src/ldt/ldt/ldt_utils/templates/front/front_base.html	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/front/front_base.html	Thu Feb 02 15:35:47 2012 +0100
@@ -36,14 +36,18 @@
         <li id="li_annotation">
             <div class="fl">
                 <!-- a href="#"><img src="{{LDT_MEDIA_PREFIX}}img/annot_icon.png" id="annot_icon" /></a -->
-                <a href="http://www.iri.centrepompidou.fr" target="_blank" title="{% trans 'link IRI' %}">IRI</a>
+                <a href="{% url root-view %}"  title="{% trans "back" %}">{% trans "back" %}</a>
             </div>
             <div class="fl">
                 <!-- a href="{% url root-view %}">{% trans 'Annotate' %}</a -->
             </div>
         </li>
         <li id="li_connexion">
-            <a href="{% url ldt.user.views.logout_view %}" title="{% trans "Log out" %}">{% trans "Log out" %}</a>
+             {% if user.is_authenticated %}
+             	<a href="{% url ldt.user.views.logout_view %}" title="{% trans "Log out" %}">{% trans "Log out" %}</a>
+             {% else %}
+             	<a href="{% url auth_login %}" title="{% trans "Log in" %}">{% trans "Log in" %}</a>
+             {% endif %}       
         </li>
     </ul>
 {% block body %}
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_player.html	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_player.html	Thu Feb 02 15:35:47 2012 +0100
@@ -1,5 +1,6 @@
 {% spaceless %}
 {% load i18n %}
+{% load thumbnail %}
 <div>
 <div id="{{ player_id }}_embed" class="iri_player_embed">
 </div>
@@ -17,7 +18,10 @@
   IriSP.widgetsDefaults["AnnotationsListWidget"] = {};
   IriSP.widgetsDefaults["AnnotationsListWidget"].platform_url = "{{WEB_URL}}{% url segment_api iri_id='{content}' begin='{begin}' end='{end}' %}";
   
-  IriSP.platform_url = "{{WEB_URL}}{{BASE_URL}}"; 
+  IriSP.platform_url = "{{WEB_URL}}{{BASE_URL}}";
+  IriSP.user = {name: '{{request.user.username}}',
+		  		avatar: '{% thumbnail request.user.get_profile.image "48x48" format="PNG" crop="center" as im %}{{WEB_URL}}{{ im.url }}{% endthumbnail %}',
+				};
   
 	  
     var config = {            
--- a/src/ldt/ldt/ldt_utils/urls.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/urls.py	Thu Feb 02 15:35:47 2012 +0100
@@ -28,7 +28,7 @@
     url(r'^cljson/externalid/(?P<id>.*)$', 'views.json.project_json_externalid'),
     url(r'cljson/idcutting/(?P<id>.*)/(?P<cutting_id>.*)$', 'views.json.project_json_cutting_id'),
     url(r'^rdf/id/(?P<ldt_id>.*)$', 'views.rdf.project_annotations_rdf'),
-    url(r'^/?$', "views.workspace.home", name="root-view"),
+    url(r'^workspace/?$', "views.workspace.home", name="root-view"),
     url(r'^filterprojects/_(?P<filter>[\w\%\_\-\+]*?)/(?P<is_owner>true|false)/(?P<status>\d)$', "views.project.projects_filter",),
     url(r'^filterprojects/_(?P<filter>[\w\%\_\-\+]*?)/(?P<is_owner>true|false)/(?P<status>\d)/(?P<id_group>.*)$', "views.project.projects_filter",),
     url(r'^filtercontents/_(?P<filter>[\w\%\_\-\+]*?)/$', "views.content.contents_filter",),
@@ -41,7 +41,7 @@
     url(r'^segmentHighlight/(?P<project_id>.*)/(?P<content_id>.*)/(?P<ensemble_id>.*)/(?P<cutting_id>.*)/(?P<segment_id>.*)/$', 'views.lignesdetemps.highlight_segment'),
     url(r'^createGroup/$', 'views.group.create_group'),
     url(r'^updateGroup/(?P<group_id>.*)$', 'views.group.update_group'),
-    url(r'^front/$', 'views.front.front_home'),
+    url(r'^$', 'views.front.front_home', name='front_home'),
     url(r'^front/group/(?P<group_id>.*)$', 'views.front.group_info'),
     url(r'^front/player/(?P<content_iri_id>.*)/$', 'views.front.annot_content'),
     url(r'^front/player/(?P<content_iri_id>.*)/(?P<project_id>.*)/(?P<cutting_id>.*)$', 'views.front.annot_content'),
--- a/src/ldt/ldt/ldt_utils/utils.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/utils.py	Thu Feb 02 15:35:47 2012 +0100
@@ -289,15 +289,11 @@
        
     def get_polemic_syntax(self, text):
         polemics = []
-        if '++' in text:
-            polemics.append('OK')
-        if '--' in text:
-            polemics.append('KO')
-        if '==' in text:
-            polemics.append('REF')
-        if '??' in text:
-            polemics.append('Q')
-        return polemics   
+        for key in settings.SYNTAX.keys():
+            if key in text:
+                polemics.append(settings.SYNTAX[key])
+                
+        return polemics
     
     def __del__(self):
        self.save()
--- a/src/ldt/ldt/ldt_utils/views/content.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/content.py	Thu Feb 02 15:35:47 2012 +0100
@@ -211,15 +211,19 @@
                 
                 if not created:
                     content.save() # Check if user is allowed to change object before assigning permissions.
+
                 cached_assign('change_content', request.user, content)
                 cached_assign('view_content', request.user, content)
                 everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME)
+                print content_form.cleaned_data
+                
                 if content_form.cleaned_data['is_public']:
                     cached_assign('view_content', everyone, content)
                     if media:
                         cached_assign('view_media', everyone, media)
-                elif content_form.cleaned_data["share"]:
+                else:
                     remove_perm('view_content', everyone, content)
+                    remove_perm('view_media', everyone, media)
                     assign_perm_to_obj(content, content_form.cleaned_data['read_list'], content_form.cleaned_data['write_list'], request.user)
                     if media:
                         assign_perm_to_obj(media, content_form.cleaned_data['read_list'], content_form.cleaned_data['write_list'], request.user)
@@ -230,7 +234,6 @@
                     if request.user.is_staff and content_defaults.has_key('front_project'):
                         content.front_project = content_defaults['front_project']
                 content.save()
-               
                 picture_form.model = content
                 picture_form.save()  
 
--- a/src/ldt/ldt/ldt_utils/views/front.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/front.py	Thu Feb 02 15:35:47 2012 +0100
@@ -10,7 +10,6 @@
 from tagging.models import Tag, TaggedItem
 
 
-@login_required
 def front_home(request):
     # Get the 3 last annotated contents
     last_contents = Content.objects.order_by('-last_annotated')[:3]
@@ -30,7 +29,6 @@
                               context_instance=RequestContext(request))
 
 
-@login_required
 def group_info(request, group_id):
     # Get the active group
     group = Group.objects.get(id=group_id)
@@ -48,15 +46,15 @@
                               context_instance=RequestContext(request))
 
 
-@login_required
+
 def all_contents(request):
     # Get the tag parameter if possible
     tag_label = request.GET.get("tag")
     # Get all the public contents group
     if tag_label is None :
-        content_list = Content.safe_objects.all()
+        content_list = Content.objects.all()
     else :
-        content_list = TaggedItem.objects.get_by_model(Content.safe_objects.all(), '"'+tag_label+'"')
+        content_list = TaggedItem.objects.get_by_model(Content.objects.all(), '"'+tag_label+'"')
     # Get the main tag list
     front_tags = settings.FRONT_TAG_LIST
     # Get the all tags list
@@ -70,7 +68,6 @@
                               context_instance=RequestContext(request))
 
 
-@login_required
 def annot_content(request, content_iri_id, project_id=None, cutting_id=None):
     # Get the wanted content
     content = Content.objects.get(iri_id=content_iri_id)
@@ -94,7 +91,12 @@
                 proj = proj[0]           
     else:
         proj = Project.safe_objects.get(ldt_id=project_id)
-    
+        
+    if not proj.state == 2: # If the original front project is unpublished
+        content.create_front_project()
+        proj = content.front_project
+        
+        
     # Vars for player
     player_id = "player_project_" + proj.ldt_id
     
--- a/src/ldt/ldt/ldt_utils/views/json.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/json.py	Thu Feb 02 15:35:47 2012 +0100
@@ -1,10 +1,11 @@
 from django.conf import settings
-from django.http import HttpResponse
+from django.http import HttpResponse, HttpResponseForbidden
 from django.shortcuts import get_object_or_404, get_list_or_404
 from django.utils import simplejson
 from django.utils.html import escape
 from ldt.ldt_utils.models import Project
 from ldt.ldt_utils.projectserializer import ProjectSerializer
+import ldt.auth as ldt_auth
 
 
 def project_json_id(request, id): 
@@ -29,10 +30,8 @@
 
 def project_json(request, project, serialize_contents=True, first_cutting=None):
     
-# TODO : the following lines have been commented for tests only
-# they should not be commented for production
-#    if not ldt_auth.check_access(request.user, project):
-#        return HttpResponseForbidden(_("You can not access this project"))
+    if not ldt_auth.check_access(request.user, project):
+        return HttpResponseForbidden(_("You can not access this project"))
         
     mimetype = request.REQUEST.get("mimetype")
     if mimetype is None:
Binary file src/ldt/ldt/locale/en/LC_MESSAGES/django.mo has changed
--- a/src/ldt/ldt/locale/en/LC_MESSAGES/django.po	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/locale/en/LC_MESSAGES/django.po	Thu Feb 02 15:35:47 2012 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-20 17:24+0100\n"
+"POT-Creation-Date: 2012-02-02 14:07+0100\n"
 "PO-Revision-Date: 2010-02-17 03:53+0100\n"
 "Last-Translator: Yves-Marie Haussonne <ymh.work@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,7 +24,7 @@
 msgid "Time"
 msgstr "Time"
 
-#: .\ldt_utils\forms.py:32 .\ldt_utils\templates\front\front_base.html.py:33
+#: .\ldt_utils\forms.py:32 .\ldt_utils\templates\front\front_base.html.py:34
 #: .\ldt_utils\templates\ldt\ldt_utils\published_projects.html.py:52
 msgid "Search"
 msgstr "search"
@@ -170,11 +170,11 @@
 msgid "content.duration"
 msgstr "duration (ms)"
 
-#: .\ldt_utils\models.py:134 .\ldt_utils\models.py:530
+#: .\ldt_utils\models.py:134
 msgid "content.stat_annotation"
 msgstr "annotation distribution"
 
-#: .\ldt_utils\models.py:135 .\ldt_utils\models.py:531
+#: .\ldt_utils\models.py:135
 msgid "content.nb_annotation"
 msgstr "annotation number"
 
@@ -182,15 +182,15 @@
 msgid "content.last_annotated"
 msgstr "last updated"
 
-#: .\ldt_utils\models.py:395
+#: .\ldt_utils\models.py:461
 msgid "created by"
 msgstr "created by"
 
-#: .\ldt_utils\models.py:396
+#: .\ldt_utils\models.py:462
 msgid "changed by"
 msgstr "changed by"
 
-#: .\ldt_utils\utils.py:208
+#: .\ldt_utils\utils.py:208 .\ldt_utils\utils.py:391
 msgid "Personal cutting"
 msgstr "Personal cutting"
 
@@ -203,77 +203,98 @@
 msgid "Home"
 msgstr "Home"
 
-#: .\ldt_utils\templates\front\front_all_contents.html.py:66
-#: .\ldt_utils\templates\front\front_home.html.py:17
+#: .\ldt_utils\templates\front\front_all_contents.html.py:9
+#, python-format
+msgid "Lignes de temps : %(tag_label)s"
+msgstr "Lignes de temps : %(tag_label)s"
+
+#: .\ldt_utils\templates\front\front_all_contents.html.py:11
+msgid "Lignes de temps : all medias"
+msgstr "Lignes de temps : all medias"
+
+#: .\ldt_utils\templates\front\front_all_contents.html.py:32
+#: .\ldt_utils\templates\front\front_home.html.py:24
 msgid "Filter the medias"
 msgstr "Filter the medias"
 
-#: .\ldt_utils\templates\front\front_all_contents.html.py:69
-#: .\ldt_utils\templates\front\front_all_contents.html.py:70
-#: .\ldt_utils\templates\front\front_home.html.py:23
-#: .\ldt_utils\templates\front\front_home.html.py:43
+#: .\ldt_utils\templates\front\front_all_contents.html.py:35
+#: .\ldt_utils\templates\front\front_all_contents.html.py:36
+#: .\ldt_utils\templates\front\front_home.html.py:30
+#: .\ldt_utils\templates\front\front_home.html.py:61
 msgid "All medias"
 msgstr "All medias"
 
-#: .\ldt_utils\templates\front\front_all_contents.html.py:74
+#: .\ldt_utils\templates\front\front_all_contents.html.py:42
 #: .\ldt_utils\templates\front\front_group.html.py:22
 #: .\ldt_utils\templates\front\front_group.html.py:24
-#: .\ldt_utils\templates\front\front_home.html.py:29
-#: .\ldt_utils\templates\front\front_home.html.py:31
+#: .\ldt_utils\templates\front\front_home.html.py:38
 #: .\ldt_utils\templates\front\front_home.html.py:49
-#: .\ldt_utils\templates\front\front_home.html.py:51
+#: .\ldt_utils\templates\front\front_home.html.py:69
+#: .\ldt_utils\templates\front\front_home.html.py:78
 msgid "open this media"
 msgstr "Play this media"
 
-#: .\ldt_utils\templates\front\front_all_contents.html.py:76
+#: .\ldt_utils\templates\front\front_all_contents.html.py:54
 #: .\ldt_utils\templates\front\front_group.html.py:23
-#: .\ldt_utils\templates\front\front_home.html.py:30
-#: .\ldt_utils\templates\front\front_home.html.py:50
+#: .\ldt_utils\templates\front\front_home.html.py:48
+#: .\ldt_utils\templates\front\front_home.html.py:77
 #, python-format
 msgid "%(nb)s annotation on this media"
 msgid_plural "%(nb)s annotations on this media"
 msgstr[0] "%(nb)s annotation on this media"
 msgstr[1] "%(nb)s annotations on this media"
 
-#: .\ldt_utils\templates\front\front_all_contents.html.py:78
+#: .\ldt_utils\templates\front\front_all_contents.html.py:56
 #: .\ldt_utils\templates\front\front_group.html.py:25
-#: .\ldt_utils\templates\front\front_home.html.py:32
-#: .\ldt_utils\templates\front\front_home.html.py:52
+#: .\ldt_utils\templates\front\front_home.html.py:50
+#: .\ldt_utils\templates\front\front_home.html.py:79
 msgid "by"
 msgstr "by"
 
-#: .\ldt_utils\templates\front\front_all_contents.html.py:82
+#: .\ldt_utils\templates\front\front_all_contents.html.py:60
 msgid "All tags"
 msgstr "All tags"
 
-#: .\ldt_utils\templates\front\front_base.html.py:25
+#: .\ldt_utils\templates\front\front_base.html.py:26
 msgid "homepage"
 msgstr "Home page"
 
-#: .\ldt_utils\templates\front\front_base.html.py:25
+#: .\ldt_utils\templates\front\front_base.html.py:26
 msgid "<b>Lignes</b> de temps"
 msgstr "<b>Lignes</b> de temps"
 
-#: .\ldt_utils\templates\front\front_base.html.py:38
-#: .\ldt_utils\templates\front\front_base.html.py:56
+#: .\ldt_utils\templates\front\front_base.html.py:39
+#: .\ldt_utils\templates\front\front_base.html.py:61
 msgid "link IRI"
 msgstr "IRI's website"
 
-#: .\ldt_utils\templates\front\front_base.html.py:41
+#: .\ldt_utils\templates\front\front_base.html.py:42
 #: .\ldt_utils\templates\front\front_player.html.py:5
 msgid "Annotate"
 msgstr "Annotate"
 
-#: .\ldt_utils\templates\front\front_base.html.py:45
-msgid "connection"
-msgstr "Login"
+#: .\ldt_utils\templates\front\front_base.html.py:47
+#: .\templates\cms\admin\cms\page\change_form.html.py:11
+#: .\templates\ldt\ldt_base.html.py:97
+#: .\user\templates\ldt\user\login_form.html.py:34
+msgid "Log out"
+msgstr "Log out"
 
-#: .\ldt_utils\templates\front\front_base.html.py:53
+#: .\ldt_utils\templates\front\front_base.html.py:49
+#: .\templates\admin\page_login.html.py:32
+#: .\user\templates\ldt\user\login_form.html.py:37
+#: .\user\templates\ldt\user\login_form.html.py:45
+#: .\user\templates\registration\login.html.py:21
+#: .\user\templates\registration\password_reset_complete.html.py:14
+msgid "Log in"
+msgstr "Log in"
+
+#: .\ldt_utils\templates\front\front_base.html.py:58
 #, python-format
 msgid "%(WEB_VERSION)s | %(VERSION)s"
 msgstr "v%(WEB_VERSION)s | v%(VERSION)s"
 
-#: .\ldt_utils\templates\front\front_base.html.py:56
+#: .\ldt_utils\templates\front\front_base.html.py:61
 msgid "about"
 msgstr "about"
 
@@ -297,38 +318,38 @@
 msgid "front.home"
 msgstr ""
 
-#: .\ldt_utils\templates\front\front_home.html.py:21
+#: .\ldt_utils\templates\front\front_home.html.py:28
 msgid "Last annotated medias"
 msgstr "Last annotated medias"
 
-#: .\ldt_utils\templates\front\front_home.html.py:23
-#: .\ldt_utils\templates\front\front_home.html.py:43
+#: .\ldt_utils\templates\front\front_home.html.py:30
+#: .\ldt_utils\templates\front\front_home.html.py:61
 msgid "view all medias"
 msgstr "view all medias"
 
-#: .\ldt_utils\templates\front\front_home.html.py:41
+#: .\ldt_utils\templates\front\front_home.html.py:59
 msgid "Most annotated medias"
 msgstr "Most annotated medias"
 
-#: .\ldt_utils\templates\front\front_home.html.py:59
+#: .\ldt_utils\templates\front\front_home.html.py:86
 msgid "Active groups"
 msgstr "Active groups"
 
-#: .\ldt_utils\templates\front\front_home.html.py:64
+#: .\ldt_utils\templates\front\front_home.html.py:91
 msgid "group picture"
 msgstr "group picture"
 
-#: .\ldt_utils\templates\front\front_home.html.py:64
-#: .\ldt_utils\templates\front\front_home.html.py:68
+#: .\ldt_utils\templates\front\front_home.html.py:91
+#: .\ldt_utils\templates\front\front_home.html.py:95
 msgid "view more infos on this group"
 msgstr "View more information on this group"
 
-#: .\ldt_utils\templates\front\front_home.html.py:67
-#, fuzzy, python-format
+#: .\ldt_utils\templates\front\front_home.html.py:94
+#, python-format
 msgid "%(nb)s user in this group"
 msgid_plural "%(nb)s users in this group"
-msgstr[0] "%(count)s user in this group"
-msgstr[1] "%(count)s users in this group"
+msgstr[0] "%(nb)s user in this group"
+msgstr[1] "%(nb)s users in this group"
 
 #: .\ldt_utils\templates\front\front_player.html.py:87
 msgid "All annotations on the media"
@@ -342,53 +363,55 @@
 #: .\ldt_utils\templates\ldt\ldt_utils\workspace_base.html.py:56
 #: .\ldt_utils\templates\ldt\ldt_utils\workspace_base.html.py:68
 #: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:121
-#: .\templates\ldt\ldt_base.html.py:126
+#: .\templates\ldt\ldt_base.html.py:127
 msgid "search"
 msgstr "search"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:99
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:59
+#: .\ldt_utils\templates\front\front_search_results.html.py:50
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:58
 #, python-format
 msgid " No results for <b>%(search)s</b>."
 msgstr "No results for <b>%(search)s</b>."
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:111
+#: .\ldt_utils\templates\front\front_search_results.html.py:62
 msgid "Search results for "
 msgstr "Search results for"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:114
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:62
+#: .\ldt_utils\templates\front\front_search_results.html.py:65
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:61
 msgid "Result"
 msgstr "Result"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:133
+#: .\ldt_utils\templates\front\front_search_results.html.py:84
 msgid "annotation distribution"
 msgstr "annotation distribution"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:148
+#: .\ldt_utils\templates\front\front_search_results.html.py:98
+#: .\ldt_utils\templates\front\front_search_results.html.py:103
 msgid "view this annotation in the player"
 msgstr "view this annotation in the player"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:149
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:80
+#: .\ldt_utils\templates\front\front_search_results.html.py:99
+#: .\ldt_utils\templates\front\front_search_results.html.py:104
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:79
 msgid "No title"
 msgstr "No title"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:150
+#: .\ldt_utils\templates\front\front_search_results.html.py:100
 msgid "Begin"
 msgstr "Begin"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:150
+#: .\ldt_utils\templates\front\front_search_results.html.py:100
 msgid "duration"
 msgstr "duration"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:162
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:101
+#: .\ldt_utils\templates\front\front_search_results.html.py:122
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:100
 msgid "previous"
 msgstr "Previous"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:183
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:111
+#: .\ldt_utils\templates\front\front_search_results.html.py:142
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:110
 msgid "next"
 msgstr "Next"
 
@@ -613,7 +636,7 @@
 msgstr "Do you want to leave this group ?"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:92
-#: .\templates\ldt\ldt_base.html.py:114
+#: .\templates\ldt\ldt_base.html.py:115
 msgid "My groups"
 msgstr "My groups"
 
@@ -642,7 +665,7 @@
 msgstr "Submit"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\published_projects.html.py:67
-#: .\templates\ldt\ldt_base.html.py:115
+#: .\templates\ldt\ldt_base.html.py:116
 msgid "Published projects"
 msgstr "Published projects"
 
@@ -655,11 +678,11 @@
 msgid "The search field can not be empty."
 msgstr "The search field can not be empty."
 
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:62
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:61
 msgid "Results for "
 msgstr "Results for"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:76
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:75
 #: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:16
 #: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:18
 #: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:24
@@ -669,11 +692,11 @@
 msgid "open ldt"
 msgstr "open ldt"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:87
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:86
 msgid "Tags"
 msgstr "Tags"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:106
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:105
 #, python-format
 msgid "Page %(number)s of  %(num_pages)s"
 msgstr "Page %(number)s of  %(num_pages)s"
@@ -852,6 +875,11 @@
 "Content '%(title)s' is referenced by %(count)d projects: %(project_titles)s. "
 "Please delete them beforehand."
 
+#: .\ldt_utils\views\json.py:34 .\ldt_utils\views\rdf.py:15
+#: .\ldt_utils\views\workspace.py:109
+msgid "You can not access this project"
+msgstr "You can not access this project"
+
 #: .\ldt_utils\views\project.py:110
 #, python-format
 msgid "the project %(title)s is published. please unpublish before deleting."
@@ -883,10 +911,6 @@
 msgid "confirm deletion"
 msgstr "Confirm deletion"
 
-#: .\ldt_utils\views\rdf.py:15 .\ldt_utils\views\workspace.py:109
-msgid "You can not access this project"
-msgstr "You can not access this project"
-
 #: .\templates\admin\cms_change_form.html.py:30
 msgid "Approve page deletion"
 msgstr "Approve page deletion"
@@ -1080,14 +1104,6 @@
 msgid "Forget password?"
 msgstr "Forget password?"
 
-#: .\templates\admin\page_login.html.py:32
-#: .\user\templates\ldt\user\login_form.html.py:37
-#: .\user\templates\ldt\user\login_form.html.py:45
-#: .\user\templates\registration\login.html.py:21
-#: .\user\templates\registration\password_reset_complete.html.py:14
-msgid "Log in"
-msgstr "Log in"
-
 #: .\templates\cms\admin\cms\page\change_form.html.py:11
 msgid "Documentation"
 msgstr "Documentation"
@@ -1096,12 +1112,6 @@
 msgid "Change password"
 msgstr "Change password"
 
-#: .\templates\cms\admin\cms\page\change_form.html.py:11
-#: .\templates\ldt\ldt_base.html.py:96
-#: .\user\templates\ldt\user\login_form.html.py:34
-msgid "Log out"
-msgstr "Log out"
-
 #: .\templates\cms\admin\cms\page\change_form.html.py:42
 msgid "Ordering"
 msgstr "Ordering"
@@ -1123,19 +1133,23 @@
 msgstr "admin"
 
 #: .\templates\ldt\ldt_base.html.py:93
+msgid "front link"
+msgstr "front"
+
+#: .\templates\ldt\ldt_base.html.py:94
 #: .\user\templates\ldt\user\change_profile.html.py:95
 msgid "Profile change"
 msgstr "Profile change"
 
-#: .\templates\ldt\ldt_base.html.py:113 .\templates\ldt\ldt_base.html.py:114
+#: .\templates\ldt\ldt_base.html.py:114 .\templates\ldt\ldt_base.html.py:115
 msgid "home"
 msgstr "home"
 
-#: .\templates\ldt\ldt_base.html.py:148
+#: .\templates\ldt\ldt_base.html.py:149
 msgid "Version number"
 msgstr "Version number"
 
-#: .\templates\ldt\ldt_base.html.py:148
+#: .\templates\ldt\ldt_base.html.py:149
 #, python-format
 msgid " web %(WEB_VERSION)s | platform %(VERSION)s"
 msgstr "web v%(WEB_VERSION)s | platform v%(VERSION)s"
@@ -1530,3 +1544,9 @@
 msgstr ""
 "We've e-mailed you instructions for activate your account to the e-mail "
 "address you submitted. You should be receiving it shortly."
+
+#~ msgid "back link"
+#~ msgstr "platform"
+
+#~ msgid "connection"
+#~ msgstr "Login"
Binary file src/ldt/ldt/locale/fr/LC_MESSAGES/django.mo has changed
--- a/src/ldt/ldt/locale/fr/LC_MESSAGES/django.po	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/locale/fr/LC_MESSAGES/django.po	Thu Feb 02 15:35:47 2012 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-20 17:24+0100\n"
+"POT-Creation-Date: 2012-02-02 14:07+0100\n"
 "PO-Revision-Date: 2010-03-09 15:52+0100\n"
 "Last-Translator: Yves-Marie Haussonne <ymh.work@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,7 +24,7 @@
 msgid "Time"
 msgstr "Heure"
 
-#: .\ldt_utils\forms.py:32 .\ldt_utils\templates\front\front_base.html.py:33
+#: .\ldt_utils\forms.py:32 .\ldt_utils\templates\front\front_base.html.py:34
 #: .\ldt_utils\templates\ldt\ldt_utils\published_projects.html.py:52
 msgid "Search"
 msgstr "Recherche"
@@ -170,11 +170,11 @@
 msgid "content.duration"
 msgstr "Durée (ms)"
 
-#: .\ldt_utils\models.py:134 .\ldt_utils\models.py:530
+#: .\ldt_utils\models.py:134
 msgid "content.stat_annotation"
 msgstr "statistiques d'annotation"
 
-#: .\ldt_utils\models.py:135 .\ldt_utils\models.py:531
+#: .\ldt_utils\models.py:135
 msgid "content.nb_annotation"
 msgstr "nombre d'annotations"
 
@@ -182,15 +182,15 @@
 msgid "content.last_annotated"
 msgstr "annoté pour la dernière foiss"
 
-#: .\ldt_utils\models.py:395
+#: .\ldt_utils\models.py:461
 msgid "created by"
 msgstr "créé par"
 
-#: .\ldt_utils\models.py:396
+#: .\ldt_utils\models.py:462
 msgid "changed by"
 msgstr "modifié par"
 
-#: .\ldt_utils\utils.py:208
+#: .\ldt_utils\utils.py:208 .\ldt_utils\utils.py:391
 msgid "Personal cutting"
 msgstr "Découpages personnels"
 
@@ -203,77 +203,98 @@
 msgid "Home"
 msgstr "Accueil"
 
-#: .\ldt_utils\templates\front\front_all_contents.html.py:66
-#: .\ldt_utils\templates\front\front_home.html.py:17
+#: .\ldt_utils\templates\front\front_all_contents.html.py:9
+#, python-format
+msgid "Lignes de temps : %(tag_label)s"
+msgstr "Lignes de temps : %(tag_label)s"
+
+#: .\ldt_utils\templates\front\front_all_contents.html.py:11
+msgid "Lignes de temps : all medias"
+msgstr "Lignes de temps : tous les médias"
+
+#: .\ldt_utils\templates\front\front_all_contents.html.py:32
+#: .\ldt_utils\templates\front\front_home.html.py:24
 msgid "Filter the medias"
 msgstr "Filtrer les médias"
 
-#: .\ldt_utils\templates\front\front_all_contents.html.py:69
-#: .\ldt_utils\templates\front\front_all_contents.html.py:70
-#: .\ldt_utils\templates\front\front_home.html.py:23
-#: .\ldt_utils\templates\front\front_home.html.py:43
+#: .\ldt_utils\templates\front\front_all_contents.html.py:35
+#: .\ldt_utils\templates\front\front_all_contents.html.py:36
+#: .\ldt_utils\templates\front\front_home.html.py:30
+#: .\ldt_utils\templates\front\front_home.html.py:61
 msgid "All medias"
 msgstr "Tous les médias"
 
-#: .\ldt_utils\templates\front\front_all_contents.html.py:74
+#: .\ldt_utils\templates\front\front_all_contents.html.py:42
 #: .\ldt_utils\templates\front\front_group.html.py:22
 #: .\ldt_utils\templates\front\front_group.html.py:24
-#: .\ldt_utils\templates\front\front_home.html.py:29
-#: .\ldt_utils\templates\front\front_home.html.py:31
+#: .\ldt_utils\templates\front\front_home.html.py:38
 #: .\ldt_utils\templates\front\front_home.html.py:49
-#: .\ldt_utils\templates\front\front_home.html.py:51
+#: .\ldt_utils\templates\front\front_home.html.py:69
+#: .\ldt_utils\templates\front\front_home.html.py:78
 msgid "open this media"
 msgstr "voir ce média"
 
-#: .\ldt_utils\templates\front\front_all_contents.html.py:76
+#: .\ldt_utils\templates\front\front_all_contents.html.py:54
 #: .\ldt_utils\templates\front\front_group.html.py:23
-#: .\ldt_utils\templates\front\front_home.html.py:30
-#: .\ldt_utils\templates\front\front_home.html.py:50
+#: .\ldt_utils\templates\front\front_home.html.py:48
+#: .\ldt_utils\templates\front\front_home.html.py:77
 #, python-format
 msgid "%(nb)s annotation on this media"
 msgid_plural "%(nb)s annotations on this media"
 msgstr[0] "%(nb)s annotation sur ce média"
 msgstr[1] "%(nb)s annotations sur ce média"
 
-#: .\ldt_utils\templates\front\front_all_contents.html.py:78
+#: .\ldt_utils\templates\front\front_all_contents.html.py:56
 #: .\ldt_utils\templates\front\front_group.html.py:25
-#: .\ldt_utils\templates\front\front_home.html.py:32
-#: .\ldt_utils\templates\front\front_home.html.py:52
+#: .\ldt_utils\templates\front\front_home.html.py:50
+#: .\ldt_utils\templates\front\front_home.html.py:79
 msgid "by"
 msgstr "par"
 
-#: .\ldt_utils\templates\front\front_all_contents.html.py:82
+#: .\ldt_utils\templates\front\front_all_contents.html.py:60
 msgid "All tags"
 msgstr "Tous les tags"
 
-#: .\ldt_utils\templates\front\front_base.html.py:25
+#: .\ldt_utils\templates\front\front_base.html.py:26
 msgid "homepage"
 msgstr "Accueil"
 
-#: .\ldt_utils\templates\front\front_base.html.py:25
+#: .\ldt_utils\templates\front\front_base.html.py:26
 msgid "<b>Lignes</b> de temps"
 msgstr "<b>Lignes</b> de temps"
 
-#: .\ldt_utils\templates\front\front_base.html.py:38
-#: .\ldt_utils\templates\front\front_base.html.py:56
+#: .\ldt_utils\templates\front\front_base.html.py:39
+#: .\ldt_utils\templates\front\front_base.html.py:61
 msgid "link IRI"
 msgstr "Site de l'IRI"
 
-#: .\ldt_utils\templates\front\front_base.html.py:41
+#: .\ldt_utils\templates\front\front_base.html.py:42
 #: .\ldt_utils\templates\front\front_player.html.py:5
 msgid "Annotate"
 msgstr "Annoter"
 
-#: .\ldt_utils\templates\front\front_base.html.py:45
-msgid "connection"
-msgstr "connexion"
+#: .\ldt_utils\templates\front\front_base.html.py:47
+#: .\templates\cms\admin\cms\page\change_form.html.py:11
+#: .\templates\ldt\ldt_base.html.py:97
+#: .\user\templates\ldt\user\login_form.html.py:34
+msgid "Log out"
+msgstr "Déconnexion"
 
-#: .\ldt_utils\templates\front\front_base.html.py:53
+#: .\ldt_utils\templates\front\front_base.html.py:49
+#: .\templates\admin\page_login.html.py:32
+#: .\user\templates\ldt\user\login_form.html.py:37
+#: .\user\templates\ldt\user\login_form.html.py:45
+#: .\user\templates\registration\login.html.py:21
+#: .\user\templates\registration\password_reset_complete.html.py:14
+msgid "Log in"
+msgstr "Connexion"
+
+#: .\ldt_utils\templates\front\front_base.html.py:58
 #, python-format
 msgid "%(WEB_VERSION)s | %(VERSION)s"
 msgstr "v%(WEB_VERSION)s | v%(VERSION)s "
 
-#: .\ldt_utils\templates\front\front_base.html.py:56
+#: .\ldt_utils\templates\front\front_base.html.py:61
 msgid "about"
 msgstr "A propos"
 
@@ -297,33 +318,33 @@
 msgid "front.home"
 msgstr "Plateforme ligne de temps"
 
-#: .\ldt_utils\templates\front\front_home.html.py:21
+#: .\ldt_utils\templates\front\front_home.html.py:28
 msgid "Last annotated medias"
 msgstr "Derniers médias annotés"
 
-#: .\ldt_utils\templates\front\front_home.html.py:23
-#: .\ldt_utils\templates\front\front_home.html.py:43
+#: .\ldt_utils\templates\front\front_home.html.py:30
+#: .\ldt_utils\templates\front\front_home.html.py:61
 msgid "view all medias"
 msgstr "Voir tous les médias"
 
-#: .\ldt_utils\templates\front\front_home.html.py:41
+#: .\ldt_utils\templates\front\front_home.html.py:59
 msgid "Most annotated medias"
 msgstr "Médias les plus annotés"
 
-#: .\ldt_utils\templates\front\front_home.html.py:59
+#: .\ldt_utils\templates\front\front_home.html.py:86
 msgid "Active groups"
 msgstr "Groupes actifs"
 
-#: .\ldt_utils\templates\front\front_home.html.py:64
+#: .\ldt_utils\templates\front\front_home.html.py:91
 msgid "group picture"
 msgstr "image du groupe"
 
-#: .\ldt_utils\templates\front\front_home.html.py:64
-#: .\ldt_utils\templates\front\front_home.html.py:68
+#: .\ldt_utils\templates\front\front_home.html.py:91
+#: .\ldt_utils\templates\front\front_home.html.py:95
 msgid "view more infos on this group"
 msgstr "Voir plus d'informations sur ce groupe"
 
-#: .\ldt_utils\templates\front\front_home.html.py:67
+#: .\ldt_utils\templates\front\front_home.html.py:94
 #, python-format
 msgid "%(nb)s user in this group"
 msgid_plural "%(nb)s users in this group"
@@ -342,53 +363,55 @@
 #: .\ldt_utils\templates\ldt\ldt_utils\workspace_base.html.py:56
 #: .\ldt_utils\templates\ldt\ldt_utils\workspace_base.html.py:68
 #: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:121
-#: .\templates\ldt\ldt_base.html.py:126
+#: .\templates\ldt\ldt_base.html.py:127
 msgid "search"
 msgstr "Recherche"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:99
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:59
+#: .\ldt_utils\templates\front\front_search_results.html.py:50
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:58
 #, python-format
 msgid " No results for <b>%(search)s</b>."
 msgstr "Aucun résultat pour <b>%(search)s</b>."
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:111
+#: .\ldt_utils\templates\front\front_search_results.html.py:62
 msgid "Search results for "
 msgstr "Résultats de recherche pour "
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:114
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:62
+#: .\ldt_utils\templates\front\front_search_results.html.py:65
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:61
 msgid "Result"
 msgstr "Résultat"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:133
+#: .\ldt_utils\templates\front\front_search_results.html.py:84
 msgid "annotation distribution"
 msgstr "Répartition des annotations"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:148
+#: .\ldt_utils\templates\front\front_search_results.html.py:98
+#: .\ldt_utils\templates\front\front_search_results.html.py:103
 msgid "view this annotation in the player"
 msgstr "Visionner cette annotation"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:149
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:80
+#: .\ldt_utils\templates\front\front_search_results.html.py:99
+#: .\ldt_utils\templates\front\front_search_results.html.py:104
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:79
 msgid "No title"
 msgstr "Sans titre"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:150
+#: .\ldt_utils\templates\front\front_search_results.html.py:100
 msgid "Begin"
 msgstr "Début"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:150
+#: .\ldt_utils\templates\front\front_search_results.html.py:100
 msgid "duration"
 msgstr "durée"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:162
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:101
+#: .\ldt_utils\templates\front\front_search_results.html.py:122
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:100
 msgid "previous"
 msgstr "Précedent"
 
-#: .\ldt_utils\templates\front\front_search_results.html.py:183
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:111
+#: .\ldt_utils\templates\front\front_search_results.html.py:142
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:110
 msgid "next"
 msgstr "Suivant"
 
@@ -614,7 +637,7 @@
 msgstr "Voulez-vous quitter ce groupe ?"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:92
-#: .\templates\ldt\ldt_base.html.py:114
+#: .\templates\ldt\ldt_base.html.py:115
 msgid "My groups"
 msgstr "Groupes"
 
@@ -643,7 +666,7 @@
 msgstr "Chercher"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\published_projects.html.py:67
-#: .\templates\ldt\ldt_base.html.py:115
+#: .\templates\ldt\ldt_base.html.py:116
 msgid "Published projects"
 msgstr "Projets publiés"
 
@@ -656,11 +679,11 @@
 msgid "The search field can not be empty."
 msgstr "Le champ de recherche ne peut pas être vide."
 
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:62
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:61
 msgid "Results for "
 msgstr "Résultats pour "
 
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:76
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:75
 #: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:16
 #: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:18
 #: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:24
@@ -670,12 +693,12 @@
 msgid "open ldt"
 msgstr "Ouvrir sous Lignes de Temps"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:87
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:86
 #, fuzzy
 msgid "Tags"
 msgstr "tags"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:106
+#: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:105
 #, python-format
 msgid "Page %(number)s of  %(num_pages)s"
 msgstr "Page %(number)s de  %(num_pages)s"
@@ -854,6 +877,11 @@
 "Le contenu '%(title)s' est référencé par les projets suivants : '%"
 "(project_titles)s'.Veuillez les effacer préalablement."
 
+#: .\ldt_utils\views\json.py:34 .\ldt_utils\views\rdf.py:15
+#: .\ldt_utils\views\workspace.py:109
+msgid "You can not access this project"
+msgstr "vous n'avez pas l'autorisation d'accéder à ce projet"
+
 #: .\ldt_utils\views\project.py:110
 #, python-format
 msgid "the project %(title)s is published. please unpublish before deleting."
@@ -886,10 +914,6 @@
 msgid "confirm deletion"
 msgstr "Confirmation d'effacement"
 
-#: .\ldt_utils\views\rdf.py:15 .\ldt_utils\views\workspace.py:109
-msgid "You can not access this project"
-msgstr "vous n'avez pas l'autorisation d'accéder à ce projet"
-
 #: .\templates\admin\cms_change_form.html.py:30
 msgid "Approve page deletion"
 msgstr "Accepter l'effacement de la page"
@@ -1083,14 +1107,6 @@
 msgid "Forget password?"
 msgstr "Oubliez le mot de passe?"
 
-#: .\templates\admin\page_login.html.py:32
-#: .\user\templates\ldt\user\login_form.html.py:37
-#: .\user\templates\ldt\user\login_form.html.py:45
-#: .\user\templates\registration\login.html.py:21
-#: .\user\templates\registration\password_reset_complete.html.py:14
-msgid "Log in"
-msgstr "Connexion"
-
 #: .\templates\cms\admin\cms\page\change_form.html.py:11
 msgid "Documentation"
 msgstr "Documentation"
@@ -1099,12 +1115,6 @@
 msgid "Change password"
 msgstr "Modifier le mot de passe"
 
-#: .\templates\cms\admin\cms\page\change_form.html.py:11
-#: .\templates\ldt\ldt_base.html.py:96
-#: .\user\templates\ldt\user\login_form.html.py:34
-msgid "Log out"
-msgstr "Déconnexion"
-
 #: .\templates\cms\admin\cms\page\change_form.html.py:42
 msgid "Ordering"
 msgstr "Ordre"
@@ -1126,19 +1136,23 @@
 msgstr "admin"
 
 #: .\templates\ldt\ldt_base.html.py:93
+msgid "front link"
+msgstr "front"
+
+#: .\templates\ldt\ldt_base.html.py:94
 #: .\user\templates\ldt\user\change_profile.html.py:95
 msgid "Profile change"
 msgstr "Modification du profil"
 
-#: .\templates\ldt\ldt_base.html.py:113 .\templates\ldt\ldt_base.html.py:114
+#: .\templates\ldt\ldt_base.html.py:114 .\templates\ldt\ldt_base.html.py:115
 msgid "home"
 msgstr "accueil"
 
-#: .\templates\ldt\ldt_base.html.py:148
+#: .\templates\ldt\ldt_base.html.py:149
 msgid "Version number"
 msgstr "Numéro de version"
 
-#: .\templates\ldt\ldt_base.html.py:148
+#: .\templates\ldt\ldt_base.html.py:149
 #, python-format
 msgid " web %(WEB_VERSION)s | platform %(VERSION)s"
 msgstr "web v%(WEB_VERSION)s | platform v%(VERSION)s "
@@ -1539,3 +1553,9 @@
 msgstr ""
 "Nous vous avons envoyé par courriel les instructions pour activer le compte "
 "à l'adresse que vous avez indiquée. Vous devriez le recevoir rapidement."
+
+#~ msgid "back link"
+#~ msgstr "plateforme"
+
+#~ msgid "connection"
+#~ msgstr "connexion"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ldt/ldt/management/utils.py	Thu Feb 02 15:35:47 2012 +0100
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+'''
+Created on Feb 1, 2012
+
+@author: ymh
+'''
+import sys
+import codecs #@UnresolvedImport
+import math
+
+def show_progress(current_line, total_line, label, width, writer=None):
+
+    if writer is None:
+        writer = sys.stdout
+        if sys.stdout.encoding is not None:
+            writer = codecs.getwriter(sys.stdout.encoding)(sys.stdout)
+
+    percent = (float(current_line) / float(total_line)) * 100.0
+
+    marks = math.floor(width * (percent / 100.0)) #@UndefinedVariable
+    spaces = math.floor(width - marks) #@UndefinedVariable
+
+    loader = u'[' + (u'=' * int(marks)) + (u' ' * int(spaces)) + u']'
+        
+    s = u"%s %3d%% %*d/%d - %*s\r" % (loader, percent, len(str(total_line)), current_line, total_line, width, label[:width])
+    
+    writer.write(s) #takes the header into account
+    if percent >= 100:
+        writer.write("\n")
+    writer.flush()
+    
+    return writer
--- a/src/ldt/ldt/security/__init__.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/security/__init__.py	Thu Feb 02 15:35:47 2012 +0100
@@ -47,13 +47,13 @@
     cls_list = get_models_to_protect()
     if cls_list:
         for cls in get_models_to_protect():
-                protect_model(cls)
+            protect_model(cls)
     
     _models_are_protected = True   
     
 def unprotect_models():
     for cls in get_models_to_protect():
-            unprotect_model(cls)
+        unprotect_model(cls)
             
     _models_are_protected = False
 
@@ -75,7 +75,8 @@
         cls.unsafe_delete = cls.delete
         class_name = cls.__name__.lower()
         cls.save = change_security(class_name)(cls.save)
-        cls.delete = change_security(class_name)(cls.delete)    
+        cls.delete = change_security(class_name)(cls.delete) 
+        cls.safe_objects.check_perm = True   
     
 def unprotect_model(cls):     
     if hasattr(cls, 'unsafe_save'):
@@ -83,7 +84,6 @@
         cls.delete = cls.unsafe_delete 
         del cls.unsafe_save    
         del cls.unsafe_delete
-        cls.safe_objects.user = None 
         cls.safe_objects.check_perm = False
         
 def change_security(cls_name):
--- a/src/ldt/ldt/security/command.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/security/command.py	Thu Feb 02 15:35:47 2012 +0100
@@ -44,11 +44,7 @@
             if user.has_perm('view_content', content):
                 assign('ldt_utils.view_media', user, content.media_obj)
     
-    if verbose:
-        print "Set content permissions..."
-    for c in list_model['Content'].objects.all():
-        c.is_public = True
-            
+                
     for admin in list_model['User'].objects.filter(is_superuser=True):
         for g in list_model['Group'].objects.all():
             g.user_set.add(admin)
\ No newline at end of file
--- a/src/ldt/ldt/security/manager.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/security/manager.py	Thu Feb 02 15:35:47 2012 +0100
@@ -5,9 +5,8 @@
 class SafeManager(Manager):
     use_for_related_fields = True
     
-    def __init__(self, user=None, check_perm=False):
+    def __init__(self, check_perm=False):
         super(SafeManager, self).__init__()
-        self.user = user
         self.check_perm = check_perm
 
     def get_query_set(self):
@@ -15,17 +14,16 @@
         if not self.check_perm:
             return super(SafeManager, self).get_query_set()   
       
-        if not self.user:
-            self.user = get_current_user()            
+        user = get_current_user()            
 
-        if not self.user:
+        if not user:
             raise AttributeError("No user is attached to the current thread.")
         
-        if not self.user.is_authenticated():
-            self.user = get_anonymous_user()
+        if not user.is_authenticated():
+            user = get_anonymous_user()
         
         perm_name = '%s.view_%s' % (self.model._meta.app_label, self.model.__name__.lower()) 
         
-        user_objects = get_objects_for_user(self.user, perm_name, klass=self.model.objects) 
+        user_objects = get_objects_for_user(user, perm_name, klass=self.model.objects) 
                     
         return user_objects
\ No newline at end of file
--- a/src/ldt/ldt/security/utils.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/security/utils.py	Thu Feb 02 15:35:47 2012 +0100
@@ -27,23 +27,19 @@
     cls = cls.model_class()
     
     for elem in xml.xpath('/iri/medias/media'):
-        if not user.is_authenticated():
+        content = cls.safe_objects.filter(iri_id=elem.get('id'))
+        if not content:
             elem.set('video', settings.FORBIDDEN_STREAM_URL)
-        else:
-            content = cls.safe_objects.filter(iri_id=elem.get('id'))
-            if not content:
-                elem.set('video', settings.FORBIDDEN_STREAM_URL)
         
     return xml
 
 def use_forbidden_url(content):
-    user = get_current_user()
+    cls = ContentType.objects.get(model='content')
+    cls = cls.model_class()
 
-    if not user.is_authenticated():
-        return True
-    elif "Content" in settings.USE_GROUP_PERMISSIONS and user.has_perm('ldt_utils.view_content', content):
+    new_content = cls.safe_objects.filter(iri_id=content.iri_id)
+    if new_content:
         return False
-
     return True
 
 def add_change_attr(user, obj_list):
--- a/src/ldt/ldt/templates/ldt/ldt_base.html	Thu Feb 02 15:35:19 2012 +0100
+++ b/src/ldt/ldt/templates/ldt/ldt_base.html	Thu Feb 02 15:35:47 2012 +0100
@@ -90,6 +90,7 @@
 	        	<a href="{% url admin:index %}" title="{% trans "Link to admin" %}">{% trans "Staff" %}</a>|
 	        {% endif %}
             {% if user.is_authenticated %}
+            <a href="{% url front_home %}" title="{% trans "front link" %}">{% trans "front link" %}</a> |            
             <a href="{% url ldt.user.views.profile %}"  title="{% trans "Profile change" %}">
               {% thumbnail user.get_profile.image "20x20" crop="center" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />{% empty %}&nbsp;{% endthumbnail %}
               {{user.username}}</a>
--- a/virtualenv/res/lib/lib_create_env.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/virtualenv/res/lib/lib_create_env.py	Thu Feb 02 15:35:47 2012 +0100
@@ -31,6 +31,9 @@
     'SOCIAL_AUTH': {'setup':'social_auth', 'url':'https://github.com/omab/django-social-auth/tarball/v0.3.10', 'local':"omab-django-social-auth-v0.3.10-modified.tar.gz"},
     'SOUTH': { 'setup': 'South', 'url':'http://www.aeracode.org/releases/south/south-0.7.3.tar.gz', 'local':"south-0.7.3.tar.gz"},
     'DJANGO_GUARDIAN' : { 'setup': 'django-guardian', 'url':'http://pypi.python.org/packages/source/d/django-guardian/django-guardian-1.0.3.tar.gz', 'local':"django-guardian-1.0.3.tar.gz"},
+    'SORL_THUMBNAIL' : { 'setup': 'sorl-thumbnail', 'url':'http://pypi.python.org/packages/source/s/sorl-thumbnail/sorl-thumbnail-11.12.tar.gz', 'local':"sorl-thumbnail-v10.12.1.tar.gz"},
+    'LIBJPEG': {'setup': None, 'url':'jpegsrc.v8d.tar.gz', 'local':'jpegsrc.v8d.tar.gz'},
+    'ZLIB': {'setup': None, 'url':'zlib-1.2.6.tar.gz', 'local':'zlib-1.2.6.tar.gz'},
 }
 
 if system_str == 'Windows':
@@ -207,7 +210,102 @@
     shutil.copytree(os.path.join(psycopg2_src_path, 'psycopg2'), os.path.abspath(os.path.join(home_dir, 'Lib/site-packages', 'psycopg2')))
     shutil.copy(os.path.join(psycopg2_src_path, 'psycopg2-2.0.14-py2.6.egg-info'), os.path.abspath(os.path.join(home_dir, 'Lib/site-packages', 'site-packages')))
 
+def gen_install_comp_lib(lib_name, lib_key, configure_options=[]):
+    
+    def install_lib(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop):
+        lib_src = os.path.join(src_dir,lib_name+".tar.gz")
+        shutil.copy(res_env.URLS[lib_key][res_source_key], lib_src)
+        tf = tarfile.open(lib_src,'r:gz')
+        lib_base_path = os.path.join(src_dir, lib_name) 
+        logger.notify("Extract %s to %s " % (lib_name,lib_base_path))
+        tf.extractall(lib_base_path)
+        tf.close()
+        
+        lib_src_path = os.path.join(lib_base_path, os.listdir(lib_base_path)[0])
+    
+        logger.notify("libjpeg configure")
+        call_subprocess(['configure', '--prefix='+os.path.abspath(home_dir)] + configure_options,
+                        cwd=os.path.abspath(lib_src_path),
+                        filter_stdout=filter_python_develop,
+                        show_stdout=True)
+        
+        logger.notify("libjpeg make")
+        call_subprocess(['make'],
+                        cwd=os.path.abspath(lib_src_path),
+                        filter_stdout=filter_python_develop,
+                        show_stdout=True)
+    
+        logger.notify("zlib make install")
+        call_subprocess(['make', 'install'],
+                        cwd=os.path.abspath(lib_src_path),
+                        filter_stdout=filter_python_develop,
+                        show_stdout=True)
+        return install_lib
 
+install_libjpeg = gen_install_comp_lib("libjpeg", "LIBJPEG", ['--enable-shared'])
+install_zlib = gen_install_comp_lib("zlib", "ZLIB", [])
+
+#def install_libjpeg(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop):
+#    libjpeg_src = os.path.join(src_dir,"jpegsrc.tar.gz")
+#    shutil.copy(res_env.URLS['LIBJPEG'][res_source_key], libjpeg_src)
+#    tf = tarfile.open(pylucene_src,'r:gz')
+#    libjpeg_base_path = os.path.join(src_dir,"libjpeg") 
+#    logger.notify("Extract libjpeg to %s " % libjpeg_base_path)
+#    tf.extractall(libjpeg_base_path)
+#    tf.close()
+#    
+#    libjpeg_src_path = os.path.join(libjpeg_base_path, os.listdir(libjpeg_base_path)[0])
+#
+#    logger.notify("libjpeg configure")
+#    call_subprocess(['configure', '--enable-shared', '--prefix='+os.path.abspath(home_dir)],
+#                    cwd=os.path.abspath(libjpeg_src_path),
+#                    filter_stdout=filter_python_develop,
+#                    show_stdout=True)
+#    
+#    logger.notify("libjpeg make")
+#    call_subprocess(['make'],
+#                    cwd=os.path.abspath(libjpeg_src_path),
+#                    filter_stdout=filter_python_develop,
+#                    show_stdout=True)
+#
+#    logger.notify("zlib make install")
+#    call_subprocess(['make', 'install'],
+#                    cwd=os.path.abspath(libjpeg_src_path),
+#                    filter_stdout=filter_python_develop,
+#                    show_stdout=True)
+#
+#
+#def install_zlib(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop):
+#    zlib_src = os.path.join(src_dir,"zlib.tar.gz")
+#    shutil.copy(res_env.URLS['ZLIB'][res_source_key], libjpeg_src)
+#    tf = tarfile.open(pylucene_src,'r:gz')
+#    zlib_base_path = os.path.join(src_dir,"zlib") 
+#    logger.notify("Extract libjpeg to %s " % zlib_base_path)
+#    tf.extractall(zlib_base_path)
+#    tf.close()
+#    
+#    zlib_src_path = os.path.join(zlib_base_path, os.listdir(zlib_base_path)[0])
+#
+#    logger.notify("zlib configure")
+#    call_subprocess(['configure', '--enable-shared', '--prefix='+os.path.abspath(home_dir)],
+#                    cwd=os.path.abspath(zlib_src_path),
+#                    filter_stdout=filter_python_develop,
+#                    show_stdout=True)
+#    
+#    logger.notify("zlib make")
+#    call_subprocess(['make'],
+#                    cwd=os.path.abspath(zlib_src_path),
+#                    filter_stdout=filter_python_develop,
+#                    show_stdout=True)
+#
+#    logger.notify("zlib make install")
+#    call_subprocess(['make', 'install'],
+#                    cwd=os.path.abspath(zlib_src_path),
+#                    filter_stdout=filter_python_develop,
+#                    show_stdout=True)
+
+    
+    
 
 def lib_generate_install_methods(path_locations, src_base, Logger, call_subprocess, normal_installs, urls=None):
     
Binary file virtualenv/res/src/jpegsrc.v8d.tar.gz has changed
Binary file virtualenv/res/src/sorl-sorl-thumbnail-v10.12.1-65-g2285451.tar.gz has changed
Binary file virtualenv/res/src/sorl-thumbnail-v10.12.1.tar.gz has changed
Binary file virtualenv/res/src/zlib-1.2.6.tar.gz has changed
--- a/virtualenv/web/res/res_create_env.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/virtualenv/web/res/res_create_env.py	Thu Feb 02 15:35:47 2012 +0100
@@ -38,6 +38,7 @@
     ('DJANGO_OPENID_CONSUMER', 'pip', None, None),
     ('SOCIAL_AUTH', 'easy_install', None, None),
     ('DJANGO_GUARDIAN', 'pip', None, None),
+    ('SOLR_THUMBNAIL', 'pip', None, None),
 ])
 
 if system_str == "Darwin":
--- a/web/ldtplatform/config.py.tmpl	Thu Feb 02 15:35:19 2012 +0100
+++ b/web/ldtplatform/config.py.tmpl	Thu Feb 02 15:35:47 2012 +0100
@@ -90,15 +90,14 @@
 
 AUTO_INDEX_AFTER_SAVE = True
 
-USE_GROUP_PERMISSIONS = ['Project', 'Content', 'Media'] 
 FORBIDDEN_STREAM_URL = "rtmp://media.iri.centrepompidou.fr/ddc_player/mp4:video/forbidden_stream.mp4?old_path="
-PUBLIC_GROUP_NAME = 'everyone'
-MAX_USERS_SEARCH = 20
-
-DEFAULT_CONTENT_ICON = "thumbnails/contents/content_default_icon.png"
-DEFAULT_PROJECT_ICON = "thumbnails/projects/project_default_icon.png"
-DEFAULT_USER_ICON = "thumbnails/users/user_default_icon.png"
-DEFAULT_GROUP_ICON = "thumbnails/groups/group_default_icon.png"
-PROFILE_IMG_MAX_SIZE = 1000000
 
 FRONT_TAG_LIST = [u"Enmi 2011", u"film", u"conférence"]
+
+SYNTAX = {
+          '++' : 'OK',
+          '--' : 'KO',
+          '==' : 'REF',
+          '??' : 'Q'
+          }
+
--- a/web/ldtplatform/settings.py	Thu Feb 02 15:35:19 2012 +0100
+++ b/web/ldtplatform/settings.py	Thu Feb 02 15:35:47 2012 +0100
@@ -216,7 +216,19 @@
 
 DIVISIONS_FOR_STAT_ANNOTATION = 64
 
-FRONT_TAG_LIST = [u"Enmi 2011",u"film"]
+FRONT_TAG_LIST = []
+
+DEFAULT_CONTENT_ICON = "thumbnails/contents/content_default_icon.png"
+DEFAULT_PROJECT_ICON = "thumbnails/projects/project_default_icon.png"
+DEFAULT_USER_ICON = "thumbnails/users/user_default_icon.png"
+DEFAULT_GROUP_ICON = "thumbnails/groups/group_default_icon.png"
+PROFILE_IMG_MAX_SIZE = 1000000
+
+USE_GROUP_PERMISSIONS = ['Project', 'Content', 'Media']
+FORBIDDEN_STREAM_URL = "rtmp://media.iri.centrepompidou.fr/ddc_player/mp4:video/forbidden_stream.mp4?old_path="
+PUBLIC_GROUP_NAME = 'everyone'
+MAX_USERS_SEARCH = 20
+
 
 from config import *