Images can be added to a group or a content.
authorverrierj
Tue, 03 Jan 2012 14:26:19 +0100
changeset 325 f4cb93c06b42
parent 324 163d00f55ffd
child 326 7b7325dc4aec
Images can be added to a group or a content.
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/permissions.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/picture.html
src/ldt/ldt/ldt_utils/views/content.py
src/ldt/ldt/ldt_utils/views/group.py
src/ldt/ldt/locale/en/LC_MESSAGES/django.mo
src/ldt/ldt/locale/en/LC_MESSAGES/django.po
src/ldt/ldt/locale/fr/LC_MESSAGES/django.mo
src/ldt/ldt/locale/fr/LC_MESSAGES/django.po
src/ldt/ldt/static/ldt/css/ldtform.css
src/ldt/ldt/static/ldt/img/zoom_in.png
src/ldt/ldt/static/ldt/img/zoom_out.png
src/ldt/ldt/static/ldt/js/projectscontents.js
src/ldt/ldt/user/forms.py
src/ldt/ldt/user/migrations/0007_auto__add_groupprofile.py
src/ldt/ldt/user/models.py
src/ldt/ldt/user/templates/ldt/user/change_profile.html
src/ldt/ldt/user/views.py
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html	Tue Jan 03 14:26:19 2012 +0100
@@ -81,7 +81,7 @@
 
 	<div id="add_content" class="span-18 last">
 	<div class="projectscontentstitle">{% trans "Create content" %}</div>
-	<form action="{{create_content_action}}" id="my_form" method="POST" enctype="multipart/form-data" >
+	<form action="{{create_content_action}}" enctype="multipart/form-data" id="my_form" method="POST" enctype="multipart/form-data" >
 	<div id="contentformhidden">
 		{% csrf_token %}
 		<input type="hidden" name="form_status" value="{{form_status}}" id="content_form_status" />
@@ -121,6 +121,7 @@
 		</div>
 	</div>	 
 	
+	{% include "ldt/ldt_utils/partial/picture.html"%}
 	{% include "ldt/ldt_utils/partial/permissions.html" %}
 	
 	</div>
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html	Tue Jan 03 14:26:19 2012 +0100
@@ -2,6 +2,7 @@
 
 {% load i18n %}
 {% load adminmedia %}
+{% load thumbnail %}
 
 {% block js_import %}
 	{{ block.super }}
@@ -79,10 +80,10 @@
 
 {% block body %}
 				 
-	<div id="add_group" class="span-20 last">
-	<div class="projectscontentstitle span-20 last">{% if group_id %}{% trans "Update a group" %}{% else %}{% trans "Create a group" %}{% endif %}</div>
+	<div id="add_group" class="span-18 last">
+	<div class="projectscontentstitle span-18 last">{% if group_id %}{% trans "Update a group" %}{% else %}{% trans "Create a group" %}{% endif %}</div>
 	
-	<form action="{% if group_id %}{% url ldt.ldt_utils.views.group.update_group group_id %} {% else %}{% url ldt.ldt_utils.views.group.create_group %}{% endif %}" method="POST" {% if target_parent %}target="_parent"{% endif %}>
+	<form action="{% if group_id %}{% url ldt.ldt_utils.views.group.update_group group_id %} {% else %}{% url ldt.ldt_utils.views.group.create_group %}{% endif %}" method="POST" enctype="multipart/form-data" {% if target_parent %}target="_parent"{% endif %}>
 	{% csrf_token %} 
 	<input type="hidden" name="form_status" value="{{form_status}}" id="project_form_status" />
 	<input type="hidden" name="id_group" value="" id="id_group"/>
@@ -94,7 +95,8 @@
 		{% endfor %}
 	</div>
 
-	{% include "ldt/ldt_utils/partial/permissions.html" %}
+	{% include "ldt/ldt_utils/partial/permissions.html" %}		
+	{% include "ldt/ldt_utils/partial/picture.html"%}
 	
 	<div id="submitcontent-buttons" class="span-12 last">
 		<button type="button" id="close_button"  value="close">{% trans "close_cancel" %}</button>
@@ -107,6 +109,7 @@
 		  <button class="button" id="ldt_submit_create" type="submit" value="create" name="submit_button">{% trans "create_group" %}</button>
 		{% endif %}
 	</div>
+
 	</form>
 	</div>
 		
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/permissions.html	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/permissions.html	Tue Jan 03 14:26:19 2012 +0100
@@ -117,7 +117,7 @@
 </script>
 
 {% if not group_edition %}
-<div id="shareproject" class="clear">
+<div id="shareproject" class="clear dropdownlist">
 <img class="shareicon" src="{{LDT_MEDIA_PREFIX}}img/user_add.png" />{% trans "share" %}
 </div>
 {% endif %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/picture.html	Tue Jan 03 14:26:19 2012 +0100
@@ -0,0 +1,68 @@
+{% load i18n %}
+{% load thumbnail %}
+
+<script type="text/javascript">
+
+	$(document).ready(function () {
+		var picture_state = 1;
+		var show_picture = '{% trans "choose a profile image" %}';
+		var hide_picture = '{% trans "hide" %}';
+		var show_img = '<img class="shareicon" title="' + show_picture + '" src="{{LDT_MEDIA_PREFIX}}img/zoom_in.png"/>';
+		var hide_img = '<img class="shareicon" title="' + hide_picture + '"src="{{LDT_MEDIA_PREFIX}}img/zoom_out.png"/>';
+		
+		if ($("#add_contribution").size()) {
+			var resize_elem = $("#add_contribution");	
+		} else if ($("#add_group").size()){
+			var resize_elem = $("#add_group");			
+		} else {
+			var resize_elem = $("#add_content");
+		}
+		
+		$("#choosepicture").click(function () {
+			if (picture_state == 1) {
+				$("#choosepicturecontainer").show();
+				$(this).html(hide_img + hide_picture);
+				picture_state = 2;
+			} else {
+				$("#choosepicturecontainer").hide();
+				$(this).html(show_img + show_picture);
+				picture_state = 1;
+			}
+			
+			resize_modal_window(resize_elem);
+		});	
+		
+	});
+
+</script>
+
+<div id="choosepicture" class="clear dropdownlist">
+<img class="shareicon" title="{% trans "choose a profile image" %}" src="{{LDT_MEDIA_PREFIX}}img/zoom_in.png"/>
+{% trans "choose a profile image" %}
+</div>
+
+
+<table id="choosepicturecontainer" style="display:none;" >
+	<tr>
+	    <td class="leftcolumn">
+	        <strong>{% trans "Current profile picture" %}</strong>
+	    </td>
+	    <td>
+	        {% thumbnail profile_image "x100" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />{% empty %}&nbsp;{% endthumbnail %}
+	    </td>
+	</tr>
+    <tr>
+        <td class="leftcolumn">
+            <label for="id_new_profile_picture">{% trans "Upload a new picture" %}<br/> (JPG, PNG, &lt;&nbsp;1&nbsp;Mo)</label>
+        </td>
+        <td>
+            <input type="file" name="image" id="id_image" accept="image/jpeg, image/png" />
+            {% for error in profile_picture_form.image.errors %}
+            <span class="error">
+                {{ error }}                 
+            </span>
+            {% endfor %}
+        </td>
+    </tr>
+</table>  
+	  
\ No newline at end of file
--- a/src/ldt/ldt/ldt_utils/views/content.py	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/content.py	Tue Jan 03 14:26:19 2012 +0100
@@ -13,6 +13,7 @@
 from ldt.ldt_utils.models import Content, Media
 from ldt.security.utils import assign_perm_to_obj, add_change_attr, get_userlist, get_userlist_model, get_userlist_group
 from ldt.security.cache import cached_assign
+from ldt.user.forms import PictureForm
 from urllib2 import urlparse
 import ldt.utils.path as ldt_utils_path
 import logging
@@ -67,7 +68,7 @@
 
         content_form = ContentForm(content_instance_val, prefix="content", instance=instance_content)
         media_form = MediaForm(media_instance_val, request.FILES, prefix="media", instance=instance_media)
-                
+        
         media_valid = media_form.is_valid()
         content_valid = content_form.is_valid()
         logging.debug("write_content_base : valid form: for instance : " + repr(instance_media) + " -> media " + str(media_valid) + " content : for instance : " + repr(instance_content) + " : " + str(content_valid)) #@UndefinedVariable
@@ -201,6 +202,7 @@
                     del content_defaults[key]
                      
                 content, created = Content.safe_objects.get_or_create(iri_id=content_form.cleaned_data['iri_id'], defaults=content_defaults) #@UndefinedVariable
+                
                 if not created:
                     content.save() # Check if user is allowed to change object before assigning permissions.
                 cached_assign('change_content', request.user, content)
@@ -219,6 +221,11 @@
                     for attribute in ('iriurl', 'title', 'description', 'duration', 'content_creation_date', 'tags', 'media_obj'):
                         setattr(content, attribute, content_defaults[attribute])
                 content.save()
+               
+                picture_form = PictureForm(content, request.POST, request.FILES)
+                if picture_form.is_valid():
+                    picture_form.save()    
+
                 form_status = 'saved'
                 media_form = MediaForm(instance=media, prefix="media")
                 content_form = ContentForm(instance=content, prefix="content")
@@ -241,7 +248,6 @@
 @login_required
 def write_content(request, iri_id=None):    
     submit_action = request.REQUEST.get("submit_button", False) 
-    groups = request.user.groups.exclude(name=settings.PUBLIC_GROUP_NAME)
     member_list = admin_list = []
     
     if submit_action == "prepare_delete": 
@@ -265,15 +271,18 @@
         
     if iri_id:
         create_content_action = reverse('ldt.ldt_utils.views.content.write_content', kwargs={'iri_id':iri_id})
+        profile_image = content_form.instance.image
     else:        
         create_content_action = reverse('ldt.ldt_utils.views.content.write_content')
+        profile_image = ''
     
     session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
     cookie_name = settings.SESSION_COOKIE_NAME    
     content_form.fields["media_obj"].queryset = Media.safe_objects.all()
     
     return render_to_response('ldt/ldt_utils/create_content.html', {'content_form': content_form, 'media_form': media_form, 'form_status': form_status, 'create_content_action': create_content_action,
-                                                                    'elem_list': get_userlist(request.user), 'member_list': member_list, 'admin_list': admin_list,  'iri_id': iri_id, 'session_key':session_key, 'cookie_name':cookie_name}, context_instance=RequestContext(request))
+                                                                    'elem_list': get_userlist(request.user), 'member_list': member_list, 'admin_list': admin_list,  'iri_id': iri_id, 'session_key':session_key,
+                                                                    'cookie_name':cookie_name, 'profile_image': profile_image}, context_instance=RequestContext(request))
 
 @login_required
 def prepare_delete_content(request, iri_id=None): 
--- a/src/ldt/ldt/ldt_utils/views/group.py	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/group.py	Tue Jan 03 14:26:19 2012 +0100
@@ -8,6 +8,7 @@
 from guardian.shortcuts import remove_perm, get_objects_for_group, get_objects_for_user
 from ldt.security.utils import add_change_attr, get_userlist, get_userlist_group
 from ldt.security.cache import get_cached_checker, cached_assign
+from ldt.user.forms import PictureForm
 
 
 @login_required
@@ -40,7 +41,8 @@
     
     if request.method == 'POST':
         form = GroupAddForm(request.POST)
-        
+        picture_form = PictureForm(None, request.POST, request.FILES)
+
         if form.is_valid():         
             name = form.cleaned_data['name']
             members_list = form.cleaned_data['read_list']
@@ -48,22 +50,31 @@
             
             group = Group.objects.create(name=name)
             group.save()
-            cached_assign('is_owner_group', request.user, group)
-            cached_assign('change_group', request.user, group)
-            request.user.groups.add(group)             
-
-            for elem in members_list:
-                if hasattr(elem, 'username'):
-                    elem.groups.add(group)
-                    if elem in admin_list:
-                        cached_assign('change_group', elem, group)
-                        
-            form_status = 'saved'
+            
+            picture_form.model = group
+            if picture_form.is_valid():
+                picture_form.save()
+           
+                cached_assign('is_owner_group', request.user, group)
+                cached_assign('change_group', request.user, group)
+                request.user.groups.add(group)             
+    
+                for elem in members_list:
+                    if hasattr(elem, 'username'):
+                        elem.groups.add(group)
+                        if elem in admin_list:
+                            cached_assign('change_group', elem, group)
+                            
+                form_status = 'saved'
+            else:
+                group.delete()
             
     else:
         form = GroupAddForm()
+        picture_form = PictureForm()
         
-    return render_to_response("ldt/ldt_utils/create_group.html", {'group_edition': True, 'form' : form, 'form_status' : form_status, 'elem_list' : get_userlist(request.user)}, context_instance=RequestContext(request))
+    return render_to_response("ldt/ldt_utils/create_group.html", {'group_edition': True, 'form' : form, 'form_status' : form_status, 
+                                                                  'elem_list' : get_userlist(request.user), 'profile_picture_form': picture_form}, context_instance=RequestContext(request))
 
 @login_required
 def update_group(request, group_id):
@@ -79,6 +90,7 @@
             
     if request.method == "POST":
         form = GroupAddForm(request.POST, instance=group)
+        picture_form = PictureForm(group, request.POST, request.FILES)
         submit_action = request.REQUEST.get("submit_button", False)
         
         if submit_action == 'delete':
@@ -86,7 +98,7 @@
                 group.delete()
                 form_status = 'deleted'
         else:   
-            if form.is_valid():
+            if form.is_valid() and picture_form.is_valid():
                 name = form.cleaned_data['name']
                 new_member_list = form.cleaned_data['read_list']
                 old_member_list = group.user_set.exclude(id=request.user.id)
@@ -110,18 +122,22 @@
                         remove_perm('change_group', user, group)
                                         
                 group.save()
+                picture_form.save()
                 form_status = 'saved'                   
     else:
-        form = GroupAddForm(initial={'name':unicode(group.name)})    
+        form = GroupAddForm(initial={'name':unicode(group.name)}) 
+        picture_form = PictureForm()   
 
     if form_status != 'deleted':
         member_list, admin_list = get_userlist_group(group, request.user)
+        profile_image = group.profile.image
     else:    
         member_list = admin_list = []
+        profile_image = ''
         
     return render_to_response("ldt/ldt_utils/create_group.html", {'group_id' : group_id, 'form' : form, 'form_status' : form_status, 'group_edition': True,
                                                                   'elem_list' : get_userlist(request.user), 'member_list': member_list, 'admin_list': admin_list,
-                                                                  'is_owner_group': is_owner_group}, context_instance=RequestContext(request))
+                                                                  'is_owner_group': is_owner_group, 'profile_picture_form': picture_form, 'profile_image': profile_image}, context_instance=RequestContext(request))
     
     
     
Binary file src/ldt/ldt/locale/en/LC_MESSAGES/django.mo has changed
--- a/src/ldt/ldt/locale/en/LC_MESSAGES/django.po	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/locale/en/LC_MESSAGES/django.po	Tue Jan 03 14:26:19 2012 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-12-23 16:02+0100\n"
+"POT-Creation-Date: 2012-01-03 14:14+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"
@@ -33,7 +33,7 @@
 msgid "all"
 msgstr "all"
 
-#: .\ldt_utils\forms.py:29 .\ldt_utils\models.py:47
+#: .\ldt_utils\forms.py:29 .\ldt_utils\models.py:48
 #: .\ldt_utils\templates\ldt\ldt_utils\content_list.html.py:69
 msgid "title"
 msgstr "title"
@@ -54,7 +54,7 @@
 msgid "Display the results in Lignes De Temps"
 msgstr "Display the results in Lignes De Temps"
 
-#: .\ldt_utils\forms.py:46 .\ldt_utils\models.py:125
+#: .\ldt_utils\forms.py:46 .\ldt_utils\models.py:126
 msgid "content.content_creation_date"
 msgstr "content creation date"
 
@@ -82,95 +82,95 @@
 msgid "none_media"
 msgstr "no media"
 
-#: .\ldt_utils\models.py:36
+#: .\ldt_utils\models.py:37
 msgid "media.external_id"
 msgstr "external id"
 
-#: .\ldt_utils\models.py:37
+#: .\ldt_utils\models.py:38
 msgid "media.external_permalink"
 msgstr "media permalink"
 
-#: .\ldt_utils\models.py:38
+#: .\ldt_utils\models.py:39
 msgid "media.external_publication_url"
 msgstr "media publication url"
 
-#: .\ldt_utils\models.py:39
+#: .\ldt_utils\models.py:40
 msgid "media.external_src_url"
 msgstr "media external source url"
 
-#: .\ldt_utils\models.py:40
+#: .\ldt_utils\models.py:41
 msgid "media.creation_date"
 msgstr "media object creation date"
 
-#: .\ldt_utils\models.py:41
+#: .\ldt_utils\models.py:42
 msgid "media.media_creation_date"
 msgstr "media creation date"
 
-#: .\ldt_utils\models.py:42
+#: .\ldt_utils\models.py:43
 msgid "media.update_date"
 msgstr "update date"
 
-#: .\ldt_utils\models.py:43
+#: .\ldt_utils\models.py:44
 msgid "media.videopath"
 msgstr "videopath"
 
-#: .\ldt_utils\models.py:44
+#: .\ldt_utils\models.py:45
 msgid "media.duration"
 msgstr "duration (ms)"
 
-#: .\ldt_utils\models.py:45
+#: .\ldt_utils\models.py:46
 msgid "media.creator"
 msgstr "media creator"
 
-#: .\ldt_utils\models.py:46
+#: .\ldt_utils\models.py:47
 msgid "description"
 msgstr "description"
 
-#: .\ldt_utils\models.py:48
+#: .\ldt_utils\models.py:49
 msgid "media.src"
 msgstr "media source"
 
-#: .\ldt_utils\models.py:49
+#: .\ldt_utils\models.py:50
 msgid "media.mimetype"
 msgstr "mimetype"
 
-#: .\ldt_utils\models.py:117
+#: .\ldt_utils\models.py:118
 msgid "content.iri_id"
 msgstr "iri id"
 
-#: .\ldt_utils\models.py:118
+#: .\ldt_utils\models.py:119
 msgid "content.iriurl"
 msgstr "iri url"
 
-#: .\ldt_utils\models.py:119
+#: .\ldt_utils\models.py:120
 msgid "content.creation_date"
 msgstr "content creation date"
 
-#: .\ldt_utils\models.py:120
+#: .\ldt_utils\models.py:121
 msgid "content.update_date"
 msgstr "content update date"
 
-#: .\ldt_utils\models.py:121
+#: .\ldt_utils\models.py:122
 msgid "content.title"
 msgstr "title"
 
-#: .\ldt_utils\models.py:122
+#: .\ldt_utils\models.py:123
 msgid "content.description"
 msgstr "description"
 
-#: .\ldt_utils\models.py:123
+#: .\ldt_utils\models.py:124
 msgid "content.authors"
 msgstr "authors"
 
-#: .\ldt_utils\models.py:124
+#: .\ldt_utils\models.py:125
 msgid "content.duration"
 msgstr "duration (ms)"
 
-#: .\ldt_utils\models.py:349
+#: .\ldt_utils\models.py:352
 msgid "created by"
 msgstr "created by"
 
-#: .\ldt_utils\models.py:350
+#: .\ldt_utils\models.py:353
 msgid "changed by"
 msgstr "changed by"
 
@@ -178,75 +178,6 @@
 msgid "Personal cutting"
 msgstr "Personal cutting"
 
-#: .\ldt_utils\views.py:120 .\ldt_utils\views.py:657 .\ldt_utils\views.py:703
-msgid "You can not access this project"
-msgstr "You can not access this project"
-
-#: .\ldt_utils\views.py:878
-#, python-format
-msgid "the project %(title)s is published. please unpublish before deleting."
-msgstr "the project %(title)s is published. please unpublish before deleting."
-
-#: .\ldt_utils\views.py:879
-msgid "can not delete the project. Please correct the following error"
-msgstr "can not delete the project. Please correct the following error"
-
-#: .\ldt_utils\views.py:880
-msgid "title error deleting project"
-msgstr "Error when deleting project"
-
-#: .\ldt_utils\views.py:882
-#, python-format
-msgid "please confirm deleting project %(title)s"
-msgstr "Please confirm deleting project %(title)s"
-
-#: .\ldt_utils\views.py:883
-msgid "confirm deletion"
-msgstr "Confirm deletion"
-
-#: .\ldt_utils\views.py:1072
-msgid "Problem when downloading file from url : "
-msgstr "Problem when downloading file from url: "
-
-#: .\ldt_utils\views.py:1075
-msgid "Problem when uploading file : "
-msgstr "Problem when uploading file: "
-
-#: .\ldt_utils\views.py:1165
-#, python-format
-msgid "There is %(count)d error when deleting content"
-msgid_plural "There are %(count)d errors when deleting content"
-msgstr[0] "There is %(count)d error when deleting content"
-msgstr[1] "There are %(count)d errors when deleting content"
-
-#: .\ldt_utils\views.py:1166
-msgid "title error deleting content"
-msgstr "Error when deleting content"
-
-#: .\ldt_utils\views.py:1168
-#, python-format
-msgid "Confirm delete content %(titles)s"
-msgstr "Confirm delete content %(titles)s"
-
-#: .\ldt_utils\views.py:1169
-msgid "confirm delete content"
-msgstr "Confirm delete content"
-
-#: .\ldt_utils\views.py:1207
-#, python-format
-msgid ""
-"Content '%(title)s' is referenced by this project : %(project_titles)s. "
-"Please delete it beforehand."
-msgid_plural ""
-"Content '%(title)s' is referenced by %(count)d projects: %(project_titles)s. "
-"Please delete them beforehand."
-msgstr[0] ""
-"Content '%(title)s' is referenced by this project : %(project_titles)s. "
-"Please delete it beforehand."
-msgstr[1] ""
-"Content '%(title)s' is referenced by %(count)d projects: %(project_titles)s. "
-"Please delete them beforehand."
-
 #: .\ldt_utils\templates\admin\ldt_utils\app_action.html.py:4
 #: .\templates\admin\cms_change_list.html.py:7
 #: .\templates\admin\page_app_index.html.py:8
@@ -280,7 +211,7 @@
 
 #: .\ldt_utils\templates\ldt\ldt_utils\content_list.html.py:70
 #: .\ldt_utils\templates\ldt\ldt_utils\content_list.html.py:77
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:10
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:11
 msgid "create project"
 msgstr "Create new project"
 
@@ -331,101 +262,53 @@
 msgid "publish for everyone"
 msgstr "publish for everyone"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:132
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:133
 msgid "media file is being processed please wait."
 msgstr "media file is being processed please wait."
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:136
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:137
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:137
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:102
 #: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:115
 #: .\ldt_utils\templates\ldt\ldt_utils\error_confirm.html.py:52
 msgid "close_cancel"
 msgstr "Close"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:137
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:138
 msgid "delete"
 msgstr "Approve delete"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:138
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:139
 msgid "write"
 msgstr "Write"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:73
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:64
+#, fuzzy
+msgid "Do you really want to delete this group ?"
+msgstr "Do you want to leave this group ?"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:84
 msgid "Update a group"
 msgstr "Update a group"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:73
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:84
 msgid "Create a group"
 msgstr "Create a group"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:80
-#: .\user\templates\ldt\user\change_profile.html.py:52
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:91
+#: .\user\templates\ldt\user\change_profile.html.py:62
 msgid "Name"
 msgstr "Name"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:89
-#, fuzzy
-msgid "User list"
-msgstr "User details"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:90
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:97
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:109
-#: .\ldt_utils\templates\ldt\ldt_utils\ldt_list.html.py:79
-#: .\ldt_utils\templates\ldt\ldt_utils\published_projects.html.py:70
-#: .\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:128
-#: .\templates\ldt\ldt_base.html.py:123
-msgid "search"
-msgstr "search"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:96
-msgid "select all"
-msgstr "select all"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:101
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:143
-msgid "select users"
-msgstr "select users"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:102
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:144
-msgid "remove users"
-msgstr "remove users"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:107
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:149
-msgid "Members list"
-msgstr "Members list"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:115
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:180
-msgid "remove all"
-msgstr "remove all"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:118
-msgid "Decide whether a user user can change this group"
-msgstr "Decide whether a user user can change this group"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:118
-msgid "is admin"
-msgstr "is admin"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:119
-msgid "is not admin"
-msgstr "is not admin"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:139
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:104
 #, fuzzy
 msgid "update_group"
 msgstr "update project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:141
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:106
 msgid "delete_group"
 msgstr "delete project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:144
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:109
 msgid "create_group"
 msgstr "Create a group"
 
@@ -447,9 +330,9 @@
 msgstr "List of contents"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:94
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:3
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:3
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:3
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:4
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:4
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:4
 msgid "name"
 msgstr "name"
 
@@ -509,21 +392,32 @@
 msgid "do_delete"
 msgstr "Approve delete"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:64
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:67
 msgid "Do you want to leave this group ?"
 msgstr "Do you want to leave this group ?"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:89
-#: .\templates\ldt\ldt_base.html.py:112
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:92
+#: .\templates\ldt\ldt_base.html.py:114
 msgid "My groups"
 msgstr "My groups"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:91
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:94
 #, fuzzy
 msgid "Create group"
 msgstr "Create new project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:107
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:100
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:112
+#: .\ldt_utils\templates\ldt\ldt_utils\ldt_list.html.py:79
+#: .\ldt_utils\templates\ldt\ldt_utils\published_projects.html.py:70
+#: .\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:133
+#: .\templates\ldt\ldt_base.html.py:126
+msgid "search"
+msgstr "search"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:110
 #, fuzzy
 msgid "The group's projects"
 msgstr "The group's project"
@@ -545,7 +439,7 @@
 msgstr "Submit"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\published_projects.html.py:67
-#: .\templates\ldt\ldt_base.html.py:113
+#: .\templates\ldt\ldt_base.html.py:115
 msgid "Published projects"
 msgstr "Published projects"
 
@@ -572,10 +466,12 @@
 msgstr "Result"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:76
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:13
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:15
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:12
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:14
+#: .\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
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:26
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:13
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:15
 msgid "open ldt"
 msgstr "open ldt"
 
@@ -609,11 +505,11 @@
 msgid "My projects"
 msgstr "My projects"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:11
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:12
 msgid "preview media"
 msgstr "preview media"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:12
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:14
 msgid "You can't edit this content"
 msgstr "You can not edit this content"
 
@@ -622,86 +518,192 @@
 msgid "Click on the line to see the group's projects"
 msgstr "clik here to see the project content"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\groupslist.html.py:14
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\groupslist.html.py:15
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\groupslist.html.py:16
 #, fuzzy
 msgid "Change this group"
 msgstr "Create a group"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\groupslist.html.py:29
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\groupslist.html.py:32
 msgid "Projects shared with me only"
 msgstr "Projects shared with me only"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:21
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:25
 #, fuzzy
 msgid "share this project"
 msgstr "Create new project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:22
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:26
 msgid "do not share"
 msgstr "do not share"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:86
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:170
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:90
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:175
 msgid "share.eye"
 msgstr "click to give to permission to edit this object"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:117
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:121
 msgid "share"
 msgstr "share with other users"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:127
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:132
 msgid "User and group list"
 msgstr "Users and groups list"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:138
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:143
 msgid "select all displayed elements"
 msgstr "add all displayed elements"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:159
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:148
+msgid "select users"
+msgstr "select users"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:149
+msgid "remove users"
+msgstr "remove users"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:154
+msgid "Members list"
+msgstr "Members list"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:164
 #: .\ldt_utils\templates\ldt\ldt_utils\partial\sharewith.html.py:7
 msgid "user"
 msgstr "user"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:161
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:166
 #: .\ldt_utils\templates\ldt\ldt_utils\partial\sharewith.html.py:9
 msgid "group"
 msgstr "group"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:168
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:173
 msgid "share.pencil"
 msgstr "click to remove the right to edit this project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:18
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:186
+msgid "remove all"
+msgstr "remove all"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\picture.html.py:8
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\picture.html.py:41
+msgid "choose a profile image"
+msgstr "choose a profile image"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\picture.html.py:9
+msgid "hide"
+msgstr "hide"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\picture.html.py:48
+#: .\user\templates\ldt\user\change_profile.html.py:154
+msgid "Current profile picture"
+msgstr "Current profile picture"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\picture.html.py:56
+#: .\user\templates\ldt\user\change_profile.html.py:162
+msgid "Upload a new picture"
+msgstr "Upload a new picture"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:32
 msgid "copy project"
 msgstr "Copy your project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:19
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:17
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:33
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:18
 msgid "link json by id"
 msgstr "link json by id"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:22
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:36
 msgid "Project published, click to unpublish"
 msgstr "Project published, click to unpublish"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:22
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:24
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:35
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:36
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:38
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:49
 msgid "You are not allowed to change this project"
 msgstr "You are not allowed to change this project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:24
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:38
 msgid "Project not published, click to publish"
 msgstr "Project not published, click to publish"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:16
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:17
 msgid "copy the project"
 msgstr "Copy your project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:19
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:20
 msgid "Project published"
 msgstr " published"
 
+#: .\ldt_utils\views\content.py:158
+msgid "Problem when downloading file from url : "
+msgstr "Problem when downloading file from url: "
+
+#: .\ldt_utils\views\content.py:161
+msgid "Problem when uploading file : "
+msgstr "Problem when uploading file: "
+
+#: .\ldt_utils\views\content.py:256
+#, python-format
+msgid "There is %(count)d error when deleting content"
+msgid_plural "There are %(count)d errors when deleting content"
+msgstr[0] "There is %(count)d error when deleting content"
+msgstr[1] "There are %(count)d errors when deleting content"
+
+#: .\ldt_utils\views\content.py:257
+msgid "title error deleting content"
+msgstr "Error when deleting content"
+
+#: .\ldt_utils\views\content.py:259
+#, python-format
+msgid "Confirm delete content %(titles)s"
+msgstr "Confirm delete content %(titles)s"
+
+#: .\ldt_utils\views\content.py:260
+msgid "confirm delete content"
+msgstr "Confirm delete content"
+
+#: .\ldt_utils\views\content.py:301
+#, python-format
+msgid ""
+"Content '%(title)s' is referenced by this project : %(project_titles)s. "
+"Please delete it beforehand."
+msgid_plural ""
+"Content '%(title)s' is referenced by %(count)d projects: %(project_titles)s. "
+"Please delete them beforehand."
+msgstr[0] ""
+"Content '%(title)s' is referenced by this project : %(project_titles)s. "
+"Please delete it beforehand."
+msgstr[1] ""
+"Content '%(title)s' is referenced by %(count)d projects: %(project_titles)s. "
+"Please delete them beforehand."
+
+#: .\ldt_utils\views\json.py:29 .\ldt_utils\views\rdf.py:15
+#: .\ldt_utils\views\workspace.py:100
+msgid "You can not access this project"
+msgstr "You can not access this project"
+
+#: .\ldt_utils\views\project.py:63
+#, python-format
+msgid "the project %(title)s is published. please unpublish before deleting."
+msgstr "the project %(title)s is published. please unpublish before deleting."
+
+#: .\ldt_utils\views\project.py:64
+msgid "can not delete the project. Please correct the following error"
+msgstr "can not delete the project. Please correct the following error"
+
+#: .\ldt_utils\views\project.py:65
+msgid "title error deleting project"
+msgstr "Error when deleting project"
+
+#: .\ldt_utils\views\project.py:67
+#, python-format
+msgid "please confirm deleting project %(title)s"
+msgstr "Please confirm deleting project %(title)s"
+
+#: .\ldt_utils\views\project.py:68
+msgid "confirm deletion"
+msgstr "Confirm deletion"
+
 #: .\templates\admin\cms_change_form.html.py:30
 msgid "Approve page deletion"
 msgstr "Approve page deletion"
@@ -912,7 +914,7 @@
 msgstr "Change password"
 
 #: .\templates\cms\admin\cms\page\change_form.html.py:11
-#: .\templates\ldt\ldt_base.html.py:92
+#: .\templates\ldt\ldt_base.html.py:96
 #: .\user\templates\ldt\user\login_form.html.py:34
 msgid "Log out"
 msgstr "Log out"
@@ -925,52 +927,33 @@
 msgid "Order:"
 msgstr "Order:"
 
-#: .\templates\ldt\ldt_base.html.py:85
+#: .\templates\ldt\ldt_base.html.py:86
 msgid "header_title"
 msgstr "Ldt&nbsp;Platform"
 
-#: .\templates\ldt\ldt_base.html.py:89
+#: .\templates\ldt\ldt_base.html.py:90
 #, fuzzy
 msgid "Link to admin"
 msgstr "link to administration"
 
-#: .\templates\ldt\ldt_base.html.py:89
+#: .\templates\ldt\ldt_base.html.py:90
 msgid "Staff"
 msgstr "admin"
 
-#: .\templates\ldt\ldt_base.html.py:92
-#: .\user\templates\ldt\user\change_profile.html.py:85
+#: .\templates\ldt\ldt_base.html.py:93
+#: .\user\templates\ldt\user\change_profile.html.py:95
 msgid "Profile change"
 msgstr "Profile change"
 
-#: .\templates\ldt\ldt_base.html.py:111 .\templates\ldt\ldt_base.html.py:112
+#: .\templates\ldt\ldt_base.html.py:113 .\templates\ldt\ldt_base.html.py:114
 msgid "home"
 msgstr "home"
 
-#: .\templates\ldt\ldt_base.html.py:114
-msgid "contents"
-msgstr "Contents"
-
-#: .\templates\ldt\ldt_base.html.py:115
-msgid "indexation projects"
-msgstr "indexation projects"
-
-#: .\templates\ldt\ldt_base.html.py:116
-msgid "accounts"
-msgstr "accounts"
-
-#: .\templates\ldt\ldt_base.html.py:117
-#: .\user\templates\ldt\user\login_form.html.py:32
-#: .\user\templates\registration\password_change_done.html.py:7
-#: .\user\templates\registration\password_change_form.html.py:13
-msgid "Profiles"
-msgstr "Profiles"
-
-#: .\templates\ldt\ldt_base.html.py:145
+#: .\templates\ldt\ldt_base.html.py:148
 msgid "Version number"
 msgstr "Version number"
 
-#: .\templates\ldt\ldt_base.html.py:145
+#: .\templates\ldt\ldt_base.html.py:148
 #, python-format
 msgid " web %(WEB_VERSION)s | platform %(VERSION)s"
 msgstr "web v%(WEB_VERSION)s | platform v%(VERSION)s"
@@ -1043,18 +1026,18 @@
 msgid "Permissions"
 msgstr "Permissions"
 
-#: .\user\admin.py:37 .\user\templates\ldt\user\change_profile.html.py:95
+#: .\user\admin.py:37 .\user\templates\ldt\user\change_profile.html.py:105
 #: .\user\templates\ldt\user\login_form.html.py:61
 msgid "Password"
 msgstr "Password"
 
 #: .\user\forms.py:27 .\user\templates\ldt\user\change_password.html.py:40
-#: .\user\templates\ldt\user\change_profile.html.py:108
+#: .\user\templates\ldt\user\change_profile.html.py:118
 msgid "New password"
 msgstr "New password"
 
 #: .\user\forms.py:29 .\user\templates\ldt\user\change_password.html.py:50
-#: .\user\templates\ldt\user\change_profile.html.py:121
+#: .\user\templates\ldt\user\change_profile.html.py:131
 msgid "New password confirmation"
 msgstr "New password confirmation"
 
@@ -1066,7 +1049,7 @@
 msgid "The two emails didn't match."
 msgstr "The two emails didn't match."
 
-#: .\user\forms.py:81 .\user\templates\ldt\user\change_profile.html.py:44
+#: .\user\forms.py:81 .\user\templates\ldt\user\change_profile.html.py:54
 msgid "First name"
 msgstr "First name"
 
@@ -1074,19 +1057,29 @@
 msgid "Last name"
 msgstr "Last name"
 
-#: .\user\forms.py:109 .\user\templates\ldt\user\change_profile.html.py:73
+#: .\user\forms.py:109 .\user\templates\ldt\user\change_profile.html.py:83
 msgid "Language"
 msgstr "Language"
 
+#: .\user\forms.py:123
+#, fuzzy
+msgid "Profile picture"
+msgstr "Profile change"
+
 #: .\user\views.py:29
 msgid "Your profile has been updated."
 msgstr "Your profile has been changed."
 
-#: .\user\views.py:53
+#: .\user\views.py:56
 msgid "Your password has been updated."
 msgstr "Your password has been updated."
 
-#: .\user\views.py:73 .\user\templates\registration\login.html.py:24
+#: .\user\views.py:80
+#, fuzzy
+msgid "Your profile picture has been updated."
+msgstr "Your profile has been changed."
+
+#: .\user\views.py:102 .\user\templates\registration\login.html.py:24
 msgid "Sorry, that's not a valid username or password."
 msgstr "Sorry, that's not a valid username or password."
 
@@ -1099,7 +1092,7 @@
 msgstr "passwords don't match"
 
 #: .\user\templates\ldt\user\change_password.html.py:57
-#: .\user\templates\ldt\user\change_profile.html.py:134
+#: .\user\templates\ldt\user\change_profile.html.py:144
 #: .\user\templates\registration\password_change_form.html.py:14
 #: .\user\templates\registration\password_change_form.html.py:17
 msgid "Password change"
@@ -1109,14 +1102,29 @@
 msgid "Your new password has been saved."
 msgstr "Your password has been changed."
 
-#: .\user\templates\ldt\user\change_profile.html.py:33
+#: .\user\templates\ldt\user\change_profile.html.py:19
+msgid "Invalid extension ! Your file has to be JPG, JPEG or PNG."
+msgstr ""
+
+#: .\user\templates\ldt\user\change_profile.html.py:43
 msgid "Username"
 msgstr "Username:"
 
-#: .\user\templates\ldt\user\change_profile.html.py:60
+#: .\user\templates\ldt\user\change_profile.html.py:70
 msgid "Email"
 msgstr "E-mail"
 
+#: .\user\templates\ldt\user\change_profile.html.py:175
+#, fuzzy
+msgid "Profile picture change"
+msgstr "Profile change"
+
+#: .\user\templates\ldt\user\login_form.html.py:32
+#: .\user\templates\registration\password_change_done.html.py:7
+#: .\user\templates\registration\password_change_form.html.py:13
+msgid "Profiles"
+msgstr "Profiles"
+
 #: .\user\templates\ldt\user\login_form.html.py:50
 msgid "create account"
 msgstr "create account"
@@ -1340,6 +1348,31 @@
 "address you submitted. You should be receiving it shortly."
 
 #, fuzzy
+#~ msgid "User list"
+#~ msgstr "User details"
+
+#~ msgid "select all"
+#~ msgstr "select all"
+
+#~ msgid "Decide whether a user user can change this group"
+#~ msgstr "Decide whether a user user can change this group"
+
+#~ msgid "is admin"
+#~ msgstr "is admin"
+
+#~ msgid "is not admin"
+#~ msgstr "is not admin"
+
+#~ msgid "contents"
+#~ msgstr "Contents"
+
+#~ msgid "indexation projects"
+#~ msgstr "indexation projects"
+
+#~ msgid "accounts"
+#~ msgstr "accounts"
+
+#, fuzzy
 #~ msgid "can change"
 #~ msgstr "Password change"
 
Binary file src/ldt/ldt/locale/fr/LC_MESSAGES/django.mo has changed
--- a/src/ldt/ldt/locale/fr/LC_MESSAGES/django.po	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/locale/fr/LC_MESSAGES/django.po	Tue Jan 03 14:26:19 2012 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-12-23 15:59+0100\n"
+"POT-Creation-Date: 2012-01-03 14:15+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"
@@ -33,7 +33,7 @@
 msgid "all"
 msgstr "tous"
 
-#: .\ldt_utils\forms.py:29 .\ldt_utils\models.py:47
+#: .\ldt_utils\forms.py:29 .\ldt_utils\models.py:48
 #: .\ldt_utils\templates\ldt\ldt_utils\content_list.html.py:69
 msgid "title"
 msgstr "titre"
@@ -54,7 +54,7 @@
 msgid "Display the results in Lignes De Temps"
 msgstr "Afficher les résultats dans Lignes De Temps"
 
-#: .\ldt_utils\forms.py:46 .\ldt_utils\models.py:125
+#: .\ldt_utils\forms.py:46 .\ldt_utils\models.py:126
 msgid "content.content_creation_date"
 msgstr "Date de création du contenu"
 
@@ -82,95 +82,95 @@
 msgid "none_media"
 msgstr "Aucun"
 
-#: .\ldt_utils\models.py:36
+#: .\ldt_utils\models.py:37
 msgid "media.external_id"
 msgstr "id externe"
 
-#: .\ldt_utils\models.py:37
+#: .\ldt_utils\models.py:38
 msgid "media.external_permalink"
 msgstr "permalien externe"
 
-#: .\ldt_utils\models.py:38
+#: .\ldt_utils\models.py:39
 msgid "media.external_publication_url"
 msgstr "url de publication externe"
 
-#: .\ldt_utils\models.py:39
+#: .\ldt_utils\models.py:40
 msgid "media.external_src_url"
 msgstr "url source"
 
-#: .\ldt_utils\models.py:40
+#: .\ldt_utils\models.py:41
 msgid "media.creation_date"
 msgstr "Date de création"
 
-#: .\ldt_utils\models.py:41
+#: .\ldt_utils\models.py:42
 msgid "media.media_creation_date"
 msgstr "Date de création du média"
 
-#: .\ldt_utils\models.py:42
+#: .\ldt_utils\models.py:43
 msgid "media.update_date"
 msgstr "Date de maj"
 
-#: .\ldt_utils\models.py:43
+#: .\ldt_utils\models.py:44
 msgid "media.videopath"
 msgstr "videopath"
 
-#: .\ldt_utils\models.py:44
+#: .\ldt_utils\models.py:45
 msgid "media.duration"
 msgstr "Durée du contenu (ms)"
 
-#: .\ldt_utils\models.py:45
+#: .\ldt_utils\models.py:46
 msgid "media.creator"
 msgstr "Créateur"
 
-#: .\ldt_utils\models.py:46
+#: .\ldt_utils\models.py:47
 msgid "description"
 msgstr "description"
 
-#: .\ldt_utils\models.py:48
+#: .\ldt_utils\models.py:49
 msgid "media.src"
 msgstr "Sources"
 
-#: .\ldt_utils\models.py:49
+#: .\ldt_utils\models.py:50
 msgid "media.mimetype"
 msgstr "mimetype"
 
-#: .\ldt_utils\models.py:117
+#: .\ldt_utils\models.py:118
 msgid "content.iri_id"
 msgstr "iri id"
 
-#: .\ldt_utils\models.py:118
+#: .\ldt_utils\models.py:119
 msgid "content.iriurl"
 msgstr "iri url"
 
-#: .\ldt_utils\models.py:119
+#: .\ldt_utils\models.py:120
 msgid "content.creation_date"
 msgstr "date de création"
 
-#: .\ldt_utils\models.py:120
+#: .\ldt_utils\models.py:121
 msgid "content.update_date"
 msgstr "Date de maj"
 
-#: .\ldt_utils\models.py:121
+#: .\ldt_utils\models.py:122
 msgid "content.title"
 msgstr "titre"
 
-#: .\ldt_utils\models.py:122
+#: .\ldt_utils\models.py:123
 msgid "content.description"
 msgstr "Description"
 
-#: .\ldt_utils\models.py:123
+#: .\ldt_utils\models.py:124
 msgid "content.authors"
 msgstr "Auteurs"
 
-#: .\ldt_utils\models.py:124
+#: .\ldt_utils\models.py:125
 msgid "content.duration"
 msgstr "Durée (ms)"
 
-#: .\ldt_utils\models.py:349
+#: .\ldt_utils\models.py:352
 msgid "created by"
 msgstr "créé par"
 
-#: .\ldt_utils\models.py:350
+#: .\ldt_utils\models.py:353
 msgid "changed by"
 msgstr "modifié par"
 
@@ -178,76 +178,6 @@
 msgid "Personal cutting"
 msgstr "Découpages personnels"
 
-#: .\ldt_utils\views.py:120 .\ldt_utils\views.py:657 .\ldt_utils\views.py:703
-msgid "You can not access this project"
-msgstr "vous n'avez pas l'autorisation d'accéder à ce projet"
-
-#: .\ldt_utils\views.py:878
-#, python-format
-msgid "the project %(title)s is published. please unpublish before deleting."
-msgstr "Le projet %(title)s est publié. Déplublier le avant de l'effacer."
-
-#: .\ldt_utils\views.py:879
-msgid "can not delete the project. Please correct the following error"
-msgstr ""
-"Le projet ne peut pas être effacé. Veuillez corriger les erreurs suivantes."
-
-#: .\ldt_utils\views.py:880
-msgid "title error deleting project"
-msgstr "Erreur lors de l'effacement du projet"
-
-#: .\ldt_utils\views.py:882
-#, python-format
-msgid "please confirm deleting project %(title)s"
-msgstr "Confirmer l'effacement du projet intitulé %(title)s"
-
-#: .\ldt_utils\views.py:883
-msgid "confirm deletion"
-msgstr "Confirmation d'effacement"
-
-#: .\ldt_utils\views.py:1072
-msgid "Problem when downloading file from url : "
-msgstr "Problème lors du téléchargement du fichier : "
-
-#: .\ldt_utils\views.py:1075
-msgid "Problem when uploading file : "
-msgstr "Problème lors de l'upload du fichier : "
-
-#: .\ldt_utils\views.py:1165
-#, python-format
-msgid "There is %(count)d error when deleting content"
-msgid_plural "There are %(count)d errors when deleting content"
-msgstr[0] "Il y a %(count)d erreur lors de l'effacement du contenu"
-msgstr[1] "Il y a %(count)d erreurs lors de l'effacement du contenu"
-
-#: .\ldt_utils\views.py:1166
-msgid "title error deleting content"
-msgstr "Erreur lors de l'effacement du contenu"
-
-#: .\ldt_utils\views.py:1168
-#, python-format
-msgid "Confirm delete content %(titles)s"
-msgstr "Veuillez confirmer l'effacement du contenu %(titles)s"
-
-#: .\ldt_utils\views.py:1169
-msgid "confirm delete content"
-msgstr "Confirmation effacement contenu"
-
-#: .\ldt_utils\views.py:1207
-#, python-format
-msgid ""
-"Content '%(title)s' is referenced by this project : %(project_titles)s. "
-"Please delete it beforehand."
-msgid_plural ""
-"Content '%(title)s' is referenced by %(count)d projects: %(project_titles)s. "
-"Please delete them beforehand."
-msgstr[0] ""
-"Le contenu '%(title)s' est référencé par le projet '%(project_titles)s'."
-"Veuillez l'effacer préalablement."
-msgstr[1] ""
-"Le contenu '%(title)s' est référencé par les projets suivants : '%"
-"(project_titles)s'.Veuillez les effacer préalablement."
-
 #: .\ldt_utils\templates\admin\ldt_utils\app_action.html.py:4
 #: .\templates\admin\cms_change_list.html.py:7
 #: .\templates\admin\page_app_index.html.py:8
@@ -281,7 +211,7 @@
 
 #: .\ldt_utils\templates\ldt\ldt_utils\content_list.html.py:70
 #: .\ldt_utils\templates\ldt\ldt_utils\content_list.html.py:77
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:10
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:11
 msgid "create project"
 msgstr "Créer un nouveau projet d'indexation"
 
@@ -331,99 +261,52 @@
 msgid "publish for everyone"
 msgstr "publier pour tout le monde"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:132
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:133
 msgid "media file is being processed please wait."
 msgstr "Le fichier média est en cours de traitement. Veuillez patienter."
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:136
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:137
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:137
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:102
 #: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:115
 #: .\ldt_utils\templates\ldt\ldt_utils\error_confirm.html.py:52
 msgid "close_cancel"
 msgstr "Fermer"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:137
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:138
 msgid "delete"
 msgstr "Effacer"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:138
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:139
 msgid "write"
 msgstr "Enregistrer"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:73
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:64
+#, fuzzy
+msgid "Do you really want to delete this group ?"
+msgstr "Voulez-vous quitter ce groupe ?"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:84
 msgid "Update a group"
 msgstr "Mettre à jour votre groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:73
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:84
 msgid "Create a group"
 msgstr "Créer un groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:80
-#: .\user\templates\ldt\user\change_profile.html.py:52
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:91
+#: .\user\templates\ldt\user\change_profile.html.py:62
 msgid "Name"
 msgstr "Nom"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:89
-msgid "User list"
-msgstr "Liste des utilisateurs"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:90
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:97
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:109
-#: .\ldt_utils\templates\ldt\ldt_utils\ldt_list.html.py:79
-#: .\ldt_utils\templates\ldt\ldt_utils\published_projects.html.py:70
-#: .\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:128
-#: .\templates\ldt\ldt_base.html.py:123
-msgid "search"
-msgstr "Recherche"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:96
-msgid "select all"
-msgstr "Tout choisir"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:101
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:143
-msgid "select users"
-msgstr "choisir des utilisateurs"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:102
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:144
-msgid "remove users"
-msgstr "enlever des utilisateurs"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:107
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:149
-msgid "Members list"
-msgstr "liste des membres"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:115
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:180
-msgid "remove all"
-msgstr "tout enlever"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:118
-msgid "Decide whether a user user can change this group"
-msgstr "Précise si cet utilisateur peut créer et modifier ce groupe."
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:118
-msgid "is admin"
-msgstr "Administrateur"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:119
-msgid "is not admin"
-msgstr "Administration"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:139
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:104
 msgid "update_group"
 msgstr "Mettre à jour le groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:141
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:106
 msgid "delete_group"
 msgstr "Effacer le groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:144
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:109
 msgid "create_group"
 msgstr "Créer un nouveau groupe"
 
@@ -444,9 +327,9 @@
 msgstr "Liste de contenus"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:94
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:3
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:3
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:3
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:4
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:4
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:4
 msgid "name"
 msgstr "Nom"
 
@@ -506,20 +389,31 @@
 msgid "do_delete"
 msgstr "Effacer"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:64
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:67
 msgid "Do you want to leave this group ?"
 msgstr "Voulez-vous quitter ce groupe ?"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:89
-#: .\templates\ldt\ldt_base.html.py:112
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:92
+#: .\templates\ldt\ldt_base.html.py:114
 msgid "My groups"
 msgstr "Groupes"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:91
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:94
 msgid "Create group"
 msgstr "Créer un nouveau groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:107
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:100
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:112
+#: .\ldt_utils\templates\ldt\ldt_utils\ldt_list.html.py:79
+#: .\ldt_utils\templates\ldt\ldt_utils\published_projects.html.py:70
+#: .\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:133
+#: .\templates\ldt\ldt_base.html.py:126
+msgid "search"
+msgstr "Recherche"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:110
 msgid "The group's projects"
 msgstr "projets du groupe"
 
@@ -540,7 +434,7 @@
 msgstr "Chercher"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\published_projects.html.py:67
-#: .\templates\ldt\ldt_base.html.py:113
+#: .\templates\ldt\ldt_base.html.py:115
 msgid "Published projects"
 msgstr "Projets publiés"
 
@@ -567,10 +461,12 @@
 msgstr "Résultat"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\search_results.html.py:76
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:13
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:15
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:12
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:14
+#: .\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
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:26
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:13
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:15
 msgid "open ldt"
 msgstr "Ouvrir sous Lignes de Temps"
 
@@ -604,11 +500,11 @@
 msgid "My projects"
 msgstr "Mes projets"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:11
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:12
 msgid "preview media"
 msgstr "Aperçu"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:12
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:14
 msgid "You can't edit this content"
 msgstr "Vous n'avez pas l'autorisation d'éditer ce contenu"
 
@@ -616,83 +512,191 @@
 msgid "Click on the line to see the group's projects"
 msgstr "cliquer ici pour voir les projets du groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\groupslist.html.py:14
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\groupslist.html.py:15
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\groupslist.html.py:16
 msgid "Change this group"
 msgstr "Modifier ce groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\groupslist.html.py:29
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\groupslist.html.py:32
 msgid "Projects shared with me only"
 msgstr "Projets partagés avec moi uniquement"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:21
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:25
 msgid "share this project"
 msgstr "partager ce projet"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:22
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:26
 msgid "do not share"
 msgstr "ne pas partager"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:86
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:90
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:175
 msgid "share.eye"
 msgstr "cliquer pour donner le droit de changer cet élement"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:117
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:121
 msgid "share"
 msgstr "partager avec d'autres utilisateurs"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:127
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:132
 msgid "User and group list"
 msgstr "Liste des groupes et des utilisateurs"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:138
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:143
 msgid "select all displayed elements"
 msgstr "ajouter tous les élements affichés"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:159
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:148
+msgid "select users"
+msgstr "choisir des utilisateurs"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:149
+msgid "remove users"
+msgstr "enlever des utilisateurs"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:154
+msgid "Members list"
+msgstr "liste des membres"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:164
 #: .\ldt_utils\templates\ldt\ldt_utils\partial\sharewith.html.py:7
 msgid "user"
 msgstr "utilisateur"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:161
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:166
 #: .\ldt_utils\templates\ldt\ldt_utils\partial\sharewith.html.py:9
 msgid "group"
 msgstr "groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:168
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:173
 msgid "share.pencil"
 msgstr "cliquer pour retirer le droit de changer sur cet élement"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:18
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:186
+msgid "remove all"
+msgstr "tout enlever"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\picture.html.py:8
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\picture.html.py:41
+msgid "choose a profile image"
+msgstr "choisir une image de profil"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\picture.html.py:9
+msgid "hide"
+msgstr "réduire"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\picture.html.py:48
+#: .\user\templates\ldt\user\change_profile.html.py:154
+msgid "Current profile picture"
+msgstr "Image de profil"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\picture.html.py:56
+#: .\user\templates\ldt\user\change_profile.html.py:162
+msgid "Upload a new picture"
+msgstr "Téléverser une nouvelle image"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:32
 msgid "copy project"
 msgstr "Copier votre projet"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:19
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:17
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:33
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:18
 msgid "link json by id"
 msgstr "Ouvrir le lecteur de métadata"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:22
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:36
 msgid "Project published, click to unpublish"
 msgstr "Projet publié, cliquer pour de-publier"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:22
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:24
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:35
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:36
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:38
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:49
 msgid "You are not allowed to change this project"
 msgstr "vous n'avez pas l'autorisation de modifier ce projet"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:24
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:38
 msgid "Project not published, click to publish"
 msgstr "Projet non publié, cliquer pour publier"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:16
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:17
 msgid "copy the project"
 msgstr "Copier le projet"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:19
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:20
 msgid "Project published"
 msgstr "Projet publié"
 
+#: .\ldt_utils\views\content.py:158
+msgid "Problem when downloading file from url : "
+msgstr "Problème lors du téléchargement du fichier : "
+
+#: .\ldt_utils\views\content.py:161
+msgid "Problem when uploading file : "
+msgstr "Problème lors de l'upload du fichier : "
+
+#: .\ldt_utils\views\content.py:256
+#, python-format
+msgid "There is %(count)d error when deleting content"
+msgid_plural "There are %(count)d errors when deleting content"
+msgstr[0] "Il y a %(count)d erreur lors de l'effacement du contenu"
+msgstr[1] "Il y a %(count)d erreurs lors de l'effacement du contenu"
+
+#: .\ldt_utils\views\content.py:257
+msgid "title error deleting content"
+msgstr "Erreur lors de l'effacement du contenu"
+
+#: .\ldt_utils\views\content.py:259
+#, python-format
+msgid "Confirm delete content %(titles)s"
+msgstr "Veuillez confirmer l'effacement du contenu %(titles)s"
+
+#: .\ldt_utils\views\content.py:260
+msgid "confirm delete content"
+msgstr "Confirmation effacement contenu"
+
+#: .\ldt_utils\views\content.py:301
+#, python-format
+msgid ""
+"Content '%(title)s' is referenced by this project : %(project_titles)s. "
+"Please delete it beforehand."
+msgid_plural ""
+"Content '%(title)s' is referenced by %(count)d projects: %(project_titles)s. "
+"Please delete them beforehand."
+msgstr[0] ""
+"Le contenu '%(title)s' est référencé par le projet '%(project_titles)s'."
+"Veuillez l'effacer préalablement."
+msgstr[1] ""
+"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:29 .\ldt_utils\views\rdf.py:15
+#: .\ldt_utils\views\workspace.py:100
+msgid "You can not access this project"
+msgstr "vous n'avez pas l'autorisation d'accéder à ce projet"
+
+#: .\ldt_utils\views\project.py:63
+#, python-format
+msgid "the project %(title)s is published. please unpublish before deleting."
+msgstr "Le projet %(title)s est publié. Déplublier le avant de l'effacer."
+
+#: .\ldt_utils\views\project.py:64
+msgid "can not delete the project. Please correct the following error"
+msgstr ""
+"Le projet ne peut pas être effacé. Veuillez corriger les erreurs suivantes."
+
+#: .\ldt_utils\views\project.py:65
+msgid "title error deleting project"
+msgstr "Erreur lors de l'effacement du projet"
+
+#: .\ldt_utils\views\project.py:67
+#, python-format
+msgid "please confirm deleting project %(title)s"
+msgstr "Confirmer l'effacement du projet intitulé %(title)s"
+
+#: .\ldt_utils\views\project.py:68
+msgid "confirm deletion"
+msgstr "Confirmation d'effacement"
+
 #: .\templates\admin\cms_change_form.html.py:30
 msgid "Approve page deletion"
 msgstr "Accepter l'effacement de la page"
@@ -903,7 +907,7 @@
 msgstr "Modifier le mot de passe"
 
 #: .\templates\cms\admin\cms\page\change_form.html.py:11
-#: .\templates\ldt\ldt_base.html.py:92
+#: .\templates\ldt\ldt_base.html.py:96
 #: .\user\templates\ldt\user\login_form.html.py:34
 msgid "Log out"
 msgstr "Déconnexion"
@@ -916,51 +920,32 @@
 msgid "Order:"
 msgstr "Ordre :"
 
-#: .\templates\ldt\ldt_base.html.py:85
+#: .\templates\ldt\ldt_base.html.py:86
 msgid "header_title"
 msgstr "Plateforme&nbsp;Ldt"
 
-#: .\templates\ldt\ldt_base.html.py:89
+#: .\templates\ldt\ldt_base.html.py:90
 msgid "Link to admin"
 msgstr "Administration"
 
-#: .\templates\ldt\ldt_base.html.py:89
+#: .\templates\ldt\ldt_base.html.py:90
 msgid "Staff"
 msgstr "admin"
 
-#: .\templates\ldt\ldt_base.html.py:92
-#: .\user\templates\ldt\user\change_profile.html.py:85
+#: .\templates\ldt\ldt_base.html.py:93
+#: .\user\templates\ldt\user\change_profile.html.py:95
 msgid "Profile change"
 msgstr "Modification du profil"
 
-#: .\templates\ldt\ldt_base.html.py:111 .\templates\ldt\ldt_base.html.py:112
+#: .\templates\ldt\ldt_base.html.py:113 .\templates\ldt\ldt_base.html.py:114
 msgid "home"
 msgstr "accueil"
 
-#: .\templates\ldt\ldt_base.html.py:114
-msgid "contents"
-msgstr "Liste des contenus"
-
-#: .\templates\ldt\ldt_base.html.py:115
-msgid "indexation projects"
-msgstr "Projets d'indexation"
-
-#: .\templates\ldt\ldt_base.html.py:116
-msgid "accounts"
-msgstr "Comptes"
-
-#: .\templates\ldt\ldt_base.html.py:117
-#: .\user\templates\ldt\user\login_form.html.py:32
-#: .\user\templates\registration\password_change_done.html.py:7
-#: .\user\templates\registration\password_change_form.html.py:13
-msgid "Profiles"
-msgstr "Mon profil"
-
-#: .\templates\ldt\ldt_base.html.py:145
+#: .\templates\ldt\ldt_base.html.py:148
 msgid "Version number"
 msgstr "Numéro de version"
 
-#: .\templates\ldt\ldt_base.html.py:145
+#: .\templates\ldt\ldt_base.html.py:148
 #, python-format
 msgid " web %(WEB_VERSION)s | platform %(VERSION)s"
 msgstr "web v%(WEB_VERSION)s | platform v%(VERSION)s "
@@ -1033,18 +1018,18 @@
 msgid "Permissions"
 msgstr "Permissions"
 
-#: .\user\admin.py:37 .\user\templates\ldt\user\change_profile.html.py:95
+#: .\user\admin.py:37 .\user\templates\ldt\user\change_profile.html.py:105
 #: .\user\templates\ldt\user\login_form.html.py:61
 msgid "Password"
 msgstr "Mot de passe"
 
 #: .\user\forms.py:27 .\user\templates\ldt\user\change_password.html.py:40
-#: .\user\templates\ldt\user\change_profile.html.py:108
+#: .\user\templates\ldt\user\change_profile.html.py:118
 msgid "New password"
 msgstr "Nouveau mot de passe"
 
 #: .\user\forms.py:29 .\user\templates\ldt\user\change_password.html.py:50
-#: .\user\templates\ldt\user\change_profile.html.py:121
+#: .\user\templates\ldt\user\change_profile.html.py:131
 msgid "New password confirmation"
 msgstr "Confirmation du nouveau mot de passe"
 
@@ -1056,7 +1041,7 @@
 msgid "The two emails didn't match."
 msgstr "les deux emails ne correspondent pas"
 
-#: .\user\forms.py:81 .\user\templates\ldt\user\change_profile.html.py:44
+#: .\user\forms.py:81 .\user\templates\ldt\user\change_profile.html.py:54
 msgid "First name"
 msgstr "Prénom"
 
@@ -1064,19 +1049,29 @@
 msgid "Last name"
 msgstr "Nom :"
 
-#: .\user\forms.py:109 .\user\templates\ldt\user\change_profile.html.py:73
+#: .\user\forms.py:109 .\user\templates\ldt\user\change_profile.html.py:83
 msgid "Language"
 msgstr "Langue"
 
+#: .\user\forms.py:123
+#, fuzzy
+msgid "Profile picture"
+msgstr "Modification du profil"
+
 #: .\user\views.py:29
 msgid "Your profile has been updated."
 msgstr "Votre profil a été modifié"
 
-#: .\user\views.py:53
+#: .\user\views.py:56
 msgid "Your password has been updated."
 msgstr "Votre mot de passe a été changeé."
 
-#: .\user\views.py:73 .\user\templates\registration\login.html.py:24
+#: .\user\views.py:80
+#, fuzzy
+msgid "Your profile picture has been updated."
+msgstr "Votre profil a été modifié"
+
+#: .\user\views.py:102 .\user\templates\registration\login.html.py:24
 msgid "Sorry, that's not a valid username or password."
 msgstr "Saisissez un nom d'utilisateur et un mot de passe valide."
 
@@ -1089,7 +1084,7 @@
 msgstr "Changement de mot de passe"
 
 #: .\user\templates\ldt\user\change_password.html.py:57
-#: .\user\templates\ldt\user\change_profile.html.py:134
+#: .\user\templates\ldt\user\change_profile.html.py:144
 #: .\user\templates\registration\password_change_form.html.py:14
 #: .\user\templates\registration\password_change_form.html.py:17
 msgid "Password change"
@@ -1099,15 +1094,30 @@
 msgid "Your new password has been saved."
 msgstr "Votre mot de passe a été changeé."
 
-#: .\user\templates\ldt\user\change_profile.html.py:33
+#: .\user\templates\ldt\user\change_profile.html.py:19
+msgid "Invalid extension ! Your file has to be JPG, JPEG or PNG."
+msgstr ""
+
+#: .\user\templates\ldt\user\change_profile.html.py:43
 msgid "Username"
 msgstr "Nom d'utilisateur :"
 
-#: .\user\templates\ldt\user\change_profile.html.py:60
+#: .\user\templates\ldt\user\change_profile.html.py:70
 #, fuzzy
 msgid "Email"
 msgstr "E-mail"
 
+#: .\user\templates\ldt\user\change_profile.html.py:175
+#, fuzzy
+msgid "Profile picture change"
+msgstr "Modification du profil"
+
+#: .\user\templates\ldt\user\login_form.html.py:32
+#: .\user\templates\registration\password_change_done.html.py:7
+#: .\user\templates\registration\password_change_form.html.py:13
+msgid "Profiles"
+msgstr "Mon profil"
+
 #: .\user\templates\ldt\user\login_form.html.py:50
 msgid "create account"
 msgstr "Créer un compte"
@@ -1335,6 +1345,30 @@
 "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 "User list"
+#~ msgstr "Liste des utilisateurs"
+
+#~ msgid "select all"
+#~ msgstr "Tout choisir"
+
+#~ msgid "Decide whether a user user can change this group"
+#~ msgstr "Précise si cet utilisateur peut créer et modifier ce groupe."
+
+#~ msgid "is admin"
+#~ msgstr "Administrateur"
+
+#~ msgid "is not admin"
+#~ msgstr "Administration"
+
+#~ msgid "contents"
+#~ msgstr "Liste des contenus"
+
+#~ msgid "indexation projects"
+#~ msgstr "Projets d'indexation"
+
+#~ msgid "accounts"
+#~ msgstr "Comptes"
+
 #, fuzzy
 #~ msgid "can change"
 #~ msgstr "Modification du mot de passe"
--- a/src/ldt/ldt/static/ldt/css/ldtform.css	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/static/ldt/css/ldtform.css	Tue Jan 03 14:26:19 2012 +0100
@@ -188,12 +188,11 @@
 	width: 100px;
 }
 
-#shareproject {
+.dropdownlist {
 	font-weight: bold;
 	cursor: pointer;
 }
 
-
 .userorgroups .ui-selected {
 	background-color: #EDEDED;	
 }
Binary file src/ldt/ldt/static/ldt/img/zoom_in.png has changed
Binary file src/ldt/ldt/static/ldt/img/zoom_out.png has changed
--- a/src/ldt/ldt/static/ldt/js/projectscontents.js	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/static/ldt/js/projectscontents.js	Tue Jan 03 14:26:19 2012 +0100
@@ -183,7 +183,7 @@
         filters: ['iframe'],
         sizes: {
             minW: 740,
-            minH: 500
+            minH: 550
         },
         closeOnClick:false,
         callbacks: {
@@ -199,7 +199,7 @@
                 });                
 
                 nm.store.iframe.width(730);
-                nm.store.iframe.height(490);
+                nm.store.iframe.height(540);
             }
         }
     });
@@ -218,7 +218,7 @@
         filters: ['iframe'],
         sizes: {
             minW: 740,
-            minH: 500
+            minH: 550
         },
         closeOnClick:false,
         callbacks: {
@@ -234,7 +234,7 @@
                   });
                 
                 nm.store.iframe.width(740);
-                nm.store.iframe.height(490);
+                nm.store.iframe.height(540);
             }
         }
     });
@@ -375,8 +375,8 @@
     $('.create_group',base_node).nyroModal({
         filters: ['iriIframe'],
         sizes: {
-            minW: '830',
-            minH: '460'
+            minW: '750',
+            minH: '510'
         },
         showCloseButton: true,
         closeOnEscape:false,
@@ -391,8 +391,8 @@
                     }
                         
                 });  
-                nm.store.iframe.width(820);
-                nm.store.iframe.height(450);
+                nm.store.iframe.width(740);
+                nm.store.iframe.height(500);
             },
             afterClose: function(nm) {
             	searchCallback($("#searchprojectsinput"), $("#groupslistcontainer"), groupfilterurl, 0);
--- a/src/ldt/ldt/user/forms.py	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/user/forms.py	Tue Jan 03 14:26:19 2012 +0100
@@ -118,23 +118,34 @@
         profile.save()
         return self.user
         
-        
-class ProfilePictureForm(forms.Form):
+           
+class PictureForm(forms.Form):
     image = forms.ImageField(label=_("Profile picture"))
     
-    def __init__(self, user=None, *args, **kwargs):
-        self.user = user
-        super(ProfilePictureForm, self).__init__(*args, **kwargs)
+    def __init__(self, model=None, *args, **kwargs):
+        self.model = model
+        super(PictureForm, self).__init__(*args, **kwargs)
         
     def save(self):
-        profile = self.user.get_profile()
+        
+        class_name = self.model.__class__.__name__
+        if class_name == 'User':
+            instance_name = self.model.username
+            img_container = self.model.get_profile()
+        elif class_name == 'Group':
+            instance_name = self.model.name
+            img_container = self.model.profile
+        elif class_name == 'Content':
+            instance_name = self.model.title
+            img_container = self.model
+        
         # We change the file name and keep the extension.
         filename = self.cleaned_data['image'].name
         ext = filename.split(".")[-1]
-        self.cleaned_data['image'].name = self.user.username + "." + ext
+        self.cleaned_data['image'].name = instance_name + "." + ext
         # We save the picture with the correct name
-        profile.image = self.cleaned_data['image']
-        profile.save()
-        return self.user
-    
+        img_container.image = self.cleaned_data['image']
+        img_container.save()
+        return self.model    
+   
         
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ldt/ldt/user/migrations/0007_auto__add_groupprofile.py	Tue Jan 03 14:26:19 2012 +0100
@@ -0,0 +1,91 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+from django.contrib.auth.models import Group
+from ldt.user.models import GroupProfile
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        
+        # Adding model 'GroupProfile'
+        db.create_table('user_groupprofile', (
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('group', self.gf('django.db.models.fields.related.OneToOneField')(related_name='profile', unique=True, primary_key=False, to=orm['auth.Group'])),
+            ('description', self.gf('django.db.models.fields.TextField')()),
+            ('image', self.gf('sorl.thumbnail.fields.ImageField')(default='thumbnails/groups/group_default_icon.png', max_length=100)),
+        ))
+        db.send_create_signal('user', ['GroupProfile'])
+        
+        for g in Group.objects.all():
+            profile = GroupProfile()
+            profile.group_id = g.id
+            profile.save()
+
+
+    def backwards(self, orm):
+        
+        # Deleting model 'GroupProfile'
+        db.delete_table('user_groupprofile')
+
+
+    models = {
+        'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        'auth.permission': {
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        'auth.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'user.groupprofile': {
+            'Meta': {'object_name': 'GroupProfile'},
+            'description': ('django.db.models.fields.TextField', [], {}),
+            'group': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'profile'", 'unique': 'True', 'primary_key': True, 'db_column': "'id'", 'to': "orm['auth.Group']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/groups/group_default_icon.png'", 'max_length': '100'})
+        },
+        'user.ldt': {
+            'Meta': {'object_name': 'Ldt', '_ormbases': ['auth.User']},
+            'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'user.userprofile': {
+            'Meta': {'object_name': 'UserProfile'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/users/user_default_icon.png'", 'max_length': '100'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}),
+            'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'})
+        }
+    }
+
+    complete_apps = ['user']
--- a/src/ldt/ldt/user/models.py	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/user/models.py	Tue Jan 03 14:26:19 2012 +0100
@@ -43,7 +43,19 @@
         if created:
             UserProfile.objects.create(user=instance)
 
+class GroupProfile(models.Model):
+    group = models.OneToOneField(Group, primary_key=False, related_name='profile')
+    description = models.TextField()
+    image = ImageField(upload_to=settings.MEDIA_ROOT+"thumbnails/groups/", default="thumbnails/groups/group_default_icon.png")
+    
+    @staticmethod
+    def create_group_profile(sender, instance, created, **kwargs):
+        if created:
+            profile = GroupProfile()
+            profile.group_id = instance.id
+            profile.save()
 
+post_save.connect(GroupProfile.create_group_profile, sender=Group)
 post_save.connect(UserProfile.create_user_profile, sender=User)
    
 User.objects = LdtManager()
--- a/src/ldt/ldt/user/templates/ldt/user/change_profile.html	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/user/templates/ldt/user/change_profile.html	Tue Jan 03 14:26:19 2012 +0100
@@ -159,7 +159,7 @@
 	</tr>
     <tr>
         <td class="leftcolumn">
-            <label for="id_new_profile_picture">{% trans "Upload your new profile picture" %}<br/> (JPG, PNG, &lt;&nbsp;1&nbsp;Mo)</label>
+            <label for="id_new_profile_picture">{% trans "Upload a new picture" %}<br/> (JPG, PNG, &lt;&nbsp;1&nbsp;Mo)</label>
         </td>
         <td>
             <input type="file" name="image" id="id_image" accept="image/jpeg, image/png" />
--- a/src/ldt/ldt/user/views.py	Mon Jan 02 18:11:07 2012 +0100
+++ b/src/ldt/ldt/user/views.py	Tue Jan 03 14:26:19 2012 +0100
@@ -6,7 +6,7 @@
 from django.template import RequestContext, loader
 from django.utils import simplejson
 from django.utils.translation import ugettext as _
-from forms import ProfileForm, LanguageChangeForm, ProfilePictureForm
+from forms import ProfileForm, LanguageChangeForm, PictureForm
 from django.views.i18n import set_language
 
     
@@ -37,7 +37,7 @@
         profile_form = ProfileForm(instance=request.user)
         password_form = PasswordChangeForm(request.user)
     
-    profile_picture_form = ProfilePictureForm()
+    profile_picture_form = PictureForm()
     
     return render_to_response('ldt/user/change_profile.html', {'profile_form' : profile_form, 'language_form' : language_form, 'password_form' : password_form, 'user_language' : user_language, 'profile_picture_form':profile_picture_form, 'msg' : msg }, context_instance=RequestContext(request))    
 
@@ -60,7 +60,7 @@
         profile_form = ProfileForm()
         password_form = PasswordChangeForm(request.user)
     
-    profile_picture_form = ProfilePictureForm()
+    profile_picture_form = PictureForm()
     
     return render_to_response('ldt/user/change_profile.html', {'profile_form' : profile_form, 'language_form' : language_form, 'password_form' : password_form, 'user_language' : user_language, 'profile_picture_form':profile_picture_form, 'msg' : msg }, context_instance=RequestContext(request))    
 
@@ -74,7 +74,7 @@
         profile_form = ProfileForm(instance=request.user)
         language_form = LanguageChangeForm(request.user, request.POST)
         password_form = PasswordChangeForm(request.user)
-        profile_picture_form = ProfilePictureForm(request.user, request.POST, request.FILES)
+        profile_picture_form = PictureForm(request.user, request.POST, request.FILES)
         if profile_picture_form.is_valid():
             profile_picture_form.save()
             msg = _("Your profile picture has been updated.")
@@ -83,7 +83,7 @@
         language_form = LanguageChangeForm()
         profile_form = ProfileForm()
         password_form = PasswordChangeForm(request.user)
-        profile_picture_form = ProfilePictureForm()
+        profile_picture_form = PictureForm()
     
     return render_to_response('ldt/user/change_profile.html', {'profile_form' : profile_form, 'language_form' : language_form, 'password_form' : password_form, 'user_language' : user_language, 'profile_picture_form':profile_picture_form, 'msg' : msg }, context_instance=RequestContext(request))