User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
authorverrierj
Mon, 07 Nov 2011 15:18:25 +0100
changeset 233 f6d009f83e38
parent 232 2878499a372b
child 234 331f767d8996
User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
src/ldt/ldt/ldt_utils/__init__.py
src/ldt/ldt/ldt_utils/forms.py
src/ldt/ldt/ldt_utils/middleware/security.py
src/ldt/ldt/ldt_utils/models.py
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html
src/ldt/ldt/ldt_utils/views.py
src/ldt/ldt/locale/en/LC_MESSAGES/django.po
src/ldt/ldt/locale/fr/LC_MESSAGES/django.po
src/ldt/ldt/static/ldt/js/projectscontents.js
--- a/src/ldt/ldt/ldt_utils/__init__.py	Fri Nov 04 16:45:40 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/__init__.py	Mon Nov 07 15:18:25 2011 +0100
@@ -12,7 +12,7 @@
     cls.objects = SafeManager(cls, user)
     
     cls.base_save = cls.save
-    cls.save = save_security(user)(cls.save)
+    cls.save = save_security(user, cls.__name__.lower())(cls.save)
     
 def unprotect_class(cls):
     
@@ -54,11 +54,11 @@
         return user_projects
     
     
-def save_security(user):
+def save_security(user, cls_name):
     def wrapper(func):
         def wrapped(self, *args, **kwargs):
             
-            if not user.has_perm('change_project', self):
+            if self.pk and not user.has_perm('change_%s' % cls_name, self):
                 raise AttributeError('User %s does not have sufficient permissions to change object %s' % (user, self))
             
             return func(self, *args, **kwargs)
--- a/src/ldt/ldt/ldt_utils/forms.py	Fri Nov 04 16:45:40 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/forms.py	Mon Nov 07 15:18:25 2011 +0100
@@ -1,6 +1,6 @@
 from django import forms
 from django.utils.translation import ugettext_lazy as _
-from django.contrib.auth.models import User
+from django.contrib.auth.models import User, Group
 from ldt.forms import widgets as ldt_widgets
 from models import Project, Content, Media
 from utils import generate_uuid
@@ -14,11 +14,14 @@
     title = forms.CharField()
     contents = forms.ModelMultipleChoiceField(Content.objects.all()) #@UndefinedVariable
     description = forms.CharField(widget=forms.Textarea, required=False)
+    groups = forms.ModelMultipleChoiceField(Group.objects.all(), required=False)
+    
     # owner = forms.ModelChoiceField(Author.objects.all())
     class Meta:
         model = Project
         exclude = ("ldt_id", "ldt", "created_by", "changed_by", "creation_date", "modification_date", "state", "owner")   
 
+
 class ReindexForm(forms.Form):
     contents = forms.ModelMultipleChoiceField(Content.objects.all()) #@UndefinedVariable
     index_projects = forms.BooleanField(required=False, initial=False)
@@ -88,3 +91,4 @@
 class GroupAddForm(forms.Form):
     name = forms.CharField(required=True)
     members_list = forms.ModelMultipleChoiceField(User.objects.all(), required=False)
+    admin_list = forms.ModelMultipleChoiceField(User.objects.all(), required=False)
--- a/src/ldt/ldt/ldt_utils/middleware/security.py	Fri Nov 04 16:45:40 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/middleware/security.py	Mon Nov 07 15:18:25 2011 +0100
@@ -9,10 +9,15 @@
         if not hasattr(settings, 'USE_GROUP_PERMISSIONS') or not settings.USE_GROUP_PERMISSIONS:
             raise MiddlewareNotUsed()           # Disable middleware
 
+    # This is not thread-safe :
+    # It is not granted that the middleware is atomic with the view,
+    # so maybe the middleware chose will not be the one used in 
+    # the view afterwards
+
     def process_request(self, request):
         
         if settings.USE_GROUP_PERMISSIONS == 'all':
-            protect_class(Project, request.user) # This is not thread-safe
+            protect_class(Project, request.user) 
             protect_class(Content, request.user)
             
         for cls_name in settings.USE_GROUP_PERMISSIONS.split(' '):
--- a/src/ldt/ldt/ldt_utils/models.py	Fri Nov 04 16:45:40 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/models.py	Mon Nov 07 15:18:25 2011 +0100
@@ -370,7 +370,7 @@
     stream_mode = property(**stream_mode())
 
     @staticmethod
-    def create_project(user, title, contents, description=''):
+    def create_project(user, title, contents, description='', groups=[]):
 #        owner = Owner.objects.get(user=user) #@UndefinedVariable
         owner = user
         project = Project(title=title, owner=owner, description=description)
@@ -381,11 +381,10 @@
         project.save()
         assign('view_project', user, project)
         assign('change_project', user, project)
-        for g in user.groups.all():
-            assign('view_project', g, project)
-            assign('change_project', g, project)
         for content in contents:
             project.contents.add(content)
+        for group in groups:
+            assign('view_project', group, project)
         project.save()
         return create_ldt(project, user)
 
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html	Fri Nov 04 16:45:40 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html	Mon Nov 07 15:18:25 2011 +0100
@@ -65,6 +65,7 @@
 					{% endif %}
 					</td>				
 					<td class="projectcontentsheadertitle">{% trans "name" %}</td>
+					<td class="projectcontentsheadertitle">{% trans "admin" %}</td>
 				</tr>
 			
 			    <tbody class="projectscontentsbody">
@@ -77,11 +78,38 @@
 					
 				</tbody>
 			</table>			
-		</div>
-
-		
+		</div>	
 	</div>
 	
+	
+	<label>{% trans "Share admin rights with" %}:</label>	
+	<div class="span-12 last projectscontentsdiv" id="ldtcreatecontentslistcontainer">
+		<div class="span-12 last projectscontentstablediv" id="ldtcreatecontentstablediv">
+			<table class="projectscontentstable">
+			
+				<tr class="projectscontentsheader last" id="contentslistheader">
+					<td class="cellcheckbox">
+					{% if admin_list|length > 1 %}
+						<input class="selectallprojects" id="check_admins" type="checkbox" />	 
+					{% endif %}
+					</td>				
+					<td class="projectcontentsheadertitle">{% trans "name" %}</td>
+				</tr>
+			
+			    <tbody class="projectscontentsbody">
+			{% for user in admin_list %}
+				<tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}">
+				    <td class="cellcheckbox"><input type="checkbox" name="admin_list" value="{{ user.id }}" /></td>
+				    <td class="contenttitle">{{ user.username }}</td>
+				 </tr>
+			{% endfor %}
+					
+				</tbody>
+			</table>			
+		</div>	
+	</div>
+	
+	
 	<div id="submitcontent-buttons" class="span-12 last">
 		<button type="button" id="close_button"  value="close">{% trans 'close_cancel' %}</button>
 		{% if group_id %}
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html	Fri Nov 04 16:45:40 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html	Mon Nov 07 15:18:25 2011 +0100
@@ -26,21 +26,21 @@
             float: left;
         }
         
-        #righttable {
-        }
-        
         .choice {
             font-weight: bold;
         }
         
+        .perm_read, .perm_write {
+        	text-decoration: none;
+        	color: black;
+        }
+        
         .permission {
             cursor: pointer;
-            text-decoration: none;
-            color: black;
         }
         
         .permcol {
-            width: 100px;
+            width: 110px;
         }
         	
 	</style>
@@ -57,13 +57,15 @@
 		$(id_str).attr('title', uncheck_all);
 		
 		$(id_str).change(function () {
+			var checkbox_ids = ".cellcheckbox input[name=\"" + checkbox_type + "\"]";
 			if ($(id_str).is(":checked")) {
-				$(".cellcheckbox input[name=\"" + checkbox_type + "\"]").attr('checked', 'true');
+				$(checkbox_ids).prop('checked', true);
 				$(id_str).attr('title', uncheck_all );
 			} else {
-				$(".cellcheckbox input[name=\"" + checkbox_type + "\"]").removeAttr('checked');
+				$(checkbox_ids).prop('checked', false);
 				$(id_str).attr('title', check_all);
 			}
+			$(checkbox_ids).trigger("change");
 		});		
 	}
 	
@@ -73,23 +75,32 @@
 			e.preventDefault();
 			parent.$.nmTop().close();
 		});
-
+		
 		checkbox_selection("check_contents", "contents");
 		checkbox_selection("check_groups", "groups");
 
-        $(".permission").click(function () {
-            var name = $(this).attr('value');
-        
-            $("a[value=\"" + name + "\"]").removeClass('choice');
+        $(".permission").live("click", function () {
+            var group_name = $(this).attr('value');
+        	var group_id = group_name.split('_').pop();
+            
+            $("a[value=\"" + group_name + "\"]").removeClass('choice');
             $(this).addClass('choice');
+            
+            if ($(this).hasClass('perm_read')) {
+            	var perm = 'read';
+            } else {
+            	var perm = 'write';            	
+            }
+            
+            $("input[name=\"perm_" + group_id + "\"]").attr('value', perm);
         });
         
-        $("input[name=\"groups\"]").change(function() {
+        $("input[name=\"groups\"]").bind("change", function() {
             var line = $(this).closest('td').next().next();
             
             if (!$(this).is(":checked")) {
                 $(".choice", line).removeClass('choice');
-                $(".choice", line).removeClass('permission');
+                $(".perm_read, .perm_write", line).removeClass('permission');
             } else {
                 $(".perm_read", line).addClass('choice');
                 $(".perm_read, .perm_write", line).addClass('permission');
@@ -134,8 +145,8 @@
 	<div id="lefttable" class="span-11">
 	<label>{% trans "List of contents" %}</label>
 
-		<div class="span-10 last" id="ldtcreatecontentslistcontainer">
-			<div class="span-10 last projectscontentstablediv" id="ldtcreatecontentstablediv">
+		<div class="span-11 last" id="ldtcreatecontentslistcontainer">
+			<div class="span-11 last projectscontentstablediv" id="ldtcreatecontentstablediv">
 				<table class="projectscontentstable">
 				
 					<tr class="projectscontentsheader last" id="contentslistheader">
@@ -152,7 +163,7 @@
 				    <tbody class="projectscontentsbody">
 				{% for content in contents %}
 					<tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}">
-					    <td class="cellcheckbox"><input type="checkbox" name="contents" value="{{ content.id }}" checked="true"  /></td>
+					    <td class="cellcheckbox"><input type="checkbox" name="contents" value="{{ content.id }}" checked="true" {% if ldt_id %}disabled="disabled"{% endif %} /></td>
 					    <td class="contenttitle">{{ content.title }}</td>
 					</tr>
 				{% endfor %}
@@ -184,21 +195,23 @@
                 
                 	{% for group in groups %}
                     <tr class="imageline projectscontentsoddline">
-                        <td class="cellcheckbox"><input type="checkbox" name="groups" value="{{ group.id }}" checked="true" /></td>
+                        <td class="cellcheckbox"><input type="checkbox" name="groups" value="{{ group.id }}" {% if group.member %}checked="true"{% endif %} /></td>
                         <td class="projecttitle">{{ group.name }}</td>
-                        <td><a value="group_{{group.id}}" class="perm_read permission choice" title="{% trans "This group can read the project" %}">{% trans "perm.read" %}</a> <a value="group_{{group.id}}" class="perm_write permission" title="{% trans "This group can change the project" %}">{% trans "perm.write" %}</a></td>
+                        <td><a value="group_{{group.id}}" class="perm_read permission {% if group.member and not group.change%}choice{% endif %}" title="{% trans "This group can read the project" %}">{% trans "perm.read" %}</a>
+                        <a value="group_{{group.id}}" class="perm_write permission {% if group.member and group.change %}choice{% endif %}" title="{% trans "This group can change the project" %}">{% trans "perm.write" %}</a></td>
+                        <input type="hidden" name="perm_{{group.id}}" value="read" />
                     </tr>
                 	{% endfor %}
                 
                     </tbody>
-                </table>			
+                </table>		
             </div>		
         </div>
        
     </div>    
     
             
-    <div id="submitcontent-buttons" class="span-10 last">
+    <div id="submitcontent-buttons" class="span-11 last">
 		<button type="button" id="close_button"  value="close">{% trans 'close_cancel' %}</button>
 		{% if ldt_id %}
 		<button class="button" id="ldt_submit" type="submit" value="prepare_delete" name="submit_button">{% trans "delete_project" %}</button>
--- a/src/ldt/ldt/ldt_utils/views.py	Fri Nov 04 16:45:40 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/views.py	Mon Nov 07 15:18:25 2011 +0100
@@ -18,7 +18,7 @@
 from django.utils.translation import ugettext as _, ungettext
 from forms import (LdtAddForm, SearchForm, AddProjectForm, CopyProjectForm,
     ContentForm, MediaForm, GroupAddForm)
-from guardian.shortcuts import assign, remove_perm
+from guardian.shortcuts import assign, remove_perm, get_perms
 from ldt.ldt_utils.models import Content
 from ldt.ldt_utils.utils import boolean_convert, LdtUtils, LdtSearch
 from lxml.html import fragment_fromstring
@@ -395,7 +395,16 @@
         
         if form.is_valid():
             user = request.user
-            Project.create_project(title=form.cleaned_data['title'], user=user, contents=form.cleaned_data['contents'], description=form.cleaned_data['description'])
+            p = Project.create_project(title=form.cleaned_data['title'], user=user, contents=form.cleaned_data['contents'],
+                                   description=form.cleaned_data['description'], groups=form.cleaned_data['groups'])
+            
+            for k in request.POST:
+                if k.startswith('perm_'):
+                    group_id = k.split('_')[-1]
+                    group = Group.objects.get(id=group_id)
+                    if request.POST[k] == 'write':
+                        assign('change_project', group, p)
+            
             form_status = "saved"
             contents = []
     else:
@@ -743,6 +752,7 @@
 
     content = get_object_or_404(Content, iri_id=iri_id)
     contents = [ content, ]
+    groups = request.user.groups.all()
     if request.method == "POST" :
         form = AddProjectForm(request.POST)
         if form.is_valid():
@@ -758,7 +768,7 @@
         form = AddProjectForm()
     # Modal window is not used with firefox, so we ask to submit the form in _parent in firefox case.
     target_parent = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
-    return render_to_response('ldt/ldt_utils/create_ldt.html', {'form':form, 'contents':contents, 'create_project_action':reverse("ldt.ldt_utils.views.create_project", args=[iri_id]), 'target_parent':target_parent}, context_instance=RequestContext(request))
+    return render_to_response('ldt/ldt_utils/create_ldt.html', {'form':form, 'contents':contents, 'groups' : groups, 'create_project_action':reverse("ldt.ldt_utils.views.create_project", args=[iri_id]), 'target_parent':target_parent}, context_instance=RequestContext(request))
 
 @login_required
 def update_project(request, ldt_id):
@@ -766,6 +776,14 @@
     project = get_object_or_404(Project, ldt_id=ldt_id)
     contents = project.contents.all()
     groups = request.user.groups.all()
+    
+    for g in groups:
+        list_perms = get_perms(g, project)
+        if 'view_project' in list_perms:
+            g.member = True
+        if 'change_project' in list_perms:
+            g.change = True
+    
     if request.method == "POST" :
         submit_action = request.REQUEST.get("submit_button", False)
         if submit_action == "prepare_delete":
@@ -1146,7 +1164,7 @@
 
 @login_required
 def create_group(request):
-    user_list = User.objects.exclude(username='AnonymousUser').exclude(id=request.user.id)
+    user_list = User.objects.exclude(id=settings.ANONYMOUS_USER_ID).exclude(id=request.user.id)
     form_status = ''
     
     if request.method == 'POST':
@@ -1155,6 +1173,7 @@
         if form.is_valid():
             name = form.cleaned_data['name']
             members_list = form.cleaned_data['members_list']
+            admin_list = form.cleaned_data['admin_list']
             
             group = Group.objects.create(name=name)
             group.save()
@@ -1163,13 +1182,18 @@
             
             for user in user_list:
                 user.groups.add(group)
-            request.user.groups.add(group) 
+            request.user.groups.add(group)
+            
+            for user in admin_list:
+                assign('change_group', user, group)
+                user.groups.add(group)
+             
             form_status = 'saved' 
             
     else:
         form = GroupAddForm()        
     
-    return render_to_response("ldt/ldt_utils/create_group.html", {'form' : form, 'form_status' : form_status, 'user_list' : user_list}, context_instance=RequestContext(request))
+    return render_to_response("ldt/ldt_utils/create_group.html", {'form' : form, 'form_status' : form_status, 'user_list' : user_list, 'admin_list': user_list}, context_instance=RequestContext(request))
 
 @login_required
 def update_group(request, group_id):
--- a/src/ldt/ldt/locale/en/LC_MESSAGES/django.po	Fri Nov 04 16:45:40 2011 +0100
+++ b/src/ldt/ldt/locale/en/LC_MESSAGES/django.po	Mon Nov 07 15:18:25 2011 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-27 14:54+0200\n"
+"POT-Creation-Date: 2011-11-07 10:21+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"
@@ -34,7 +34,7 @@
 msgstr "all"
 
 #: .\ldt_utils\forms.py:28
-#: .\ldt_utils\models.py:41
+#: .\ldt_utils\models.py:40
 #: .\ldt_utils\templates\ldt\ldt_utils\content_list.html.py:69
 msgid "title"
 msgstr "title"
@@ -44,9 +44,8 @@
 msgstr "resume"
 
 #: .\ldt_utils\forms.py:28
-#, fuzzy
 msgid "tags"
-msgstr "Pages"
+msgstr "tags"
 
 #: .\ldt_utils\forms.py:28
 msgid "Fields"
@@ -57,7 +56,7 @@
 msgstr "Display the results in Lignes De Temps"
 
 #: .\ldt_utils\forms.py:43
-#: .\ldt_utils\models.py:110
+#: .\ldt_utils\models.py:109
 msgid "content.content_creation_date"
 msgstr "content creation date"
 
@@ -85,95 +84,95 @@
 msgid "none_media"
 msgstr "no media"
 
-#: .\ldt_utils\models.py:30
+#: .\ldt_utils\models.py:29
 msgid "media.external_id"
 msgstr "external id"
 
-#: .\ldt_utils\models.py:31
+#: .\ldt_utils\models.py:30
 msgid "media.external_permalink"
 msgstr "media permalink"
 
-#: .\ldt_utils\models.py:32
+#: .\ldt_utils\models.py:31
 msgid "media.external_publication_url"
 msgstr "media publication url"
 
-#: .\ldt_utils\models.py:33
+#: .\ldt_utils\models.py:32
 msgid "media.external_src_url"
 msgstr "media external source url"
 
-#: .\ldt_utils\models.py:34
+#: .\ldt_utils\models.py:33
 msgid "media.creation_date"
 msgstr "media object creation date"
 
-#: .\ldt_utils\models.py:35
+#: .\ldt_utils\models.py:34
 msgid "media.media_creation_date"
 msgstr "media creation date"
 
-#: .\ldt_utils\models.py:36
+#: .\ldt_utils\models.py:35
 msgid "media.update_date"
 msgstr "update date"
 
-#: .\ldt_utils\models.py:37
+#: .\ldt_utils\models.py:36
 msgid "media.videopath"
 msgstr "videopath"
 
-#: .\ldt_utils\models.py:38
+#: .\ldt_utils\models.py:37
 msgid "media.duration"
 msgstr "duration (ms)"
 
-#: .\ldt_utils\models.py:39
+#: .\ldt_utils\models.py:38
 msgid "media.creator"
 msgstr "media creator"
 
-#: .\ldt_utils\models.py:40
+#: .\ldt_utils\models.py:39
 msgid "description"
 msgstr "description"
 
-#: .\ldt_utils\models.py:42
+#: .\ldt_utils\models.py:41
 msgid "media.src"
 msgstr "media source"
 
-#: .\ldt_utils\models.py:43
+#: .\ldt_utils\models.py:42
 msgid "media.mimetype"
 msgstr "mimetype"
 
-#: .\ldt_utils\models.py:102
+#: .\ldt_utils\models.py:101
 msgid "content.iri_id"
 msgstr "iri id"
 
-#: .\ldt_utils\models.py:103
+#: .\ldt_utils\models.py:102
 msgid "content.iriurl"
 msgstr "iri url"
 
-#: .\ldt_utils\models.py:104
+#: .\ldt_utils\models.py:103
 msgid "content.creation_date"
 msgstr "content creation date"
 
-#: .\ldt_utils\models.py:105
+#: .\ldt_utils\models.py:104
 msgid "content.update_date"
 msgstr "content update date"
 
-#: .\ldt_utils\models.py:106
+#: .\ldt_utils\models.py:105
 msgid "content.title"
 msgstr "title"
 
-#: .\ldt_utils\models.py:107
+#: .\ldt_utils\models.py:106
 msgid "content.description"
 msgstr "description"
 
-#: .\ldt_utils\models.py:108
+#: .\ldt_utils\models.py:107
 msgid "content.authors"
 msgstr "authors"
 
-#: .\ldt_utils\models.py:109
+#: .\ldt_utils\models.py:108
 msgid "content.duration"
 msgstr "duration (ms)"
 
-#: .\ldt_utils\models.py:333
+#: .\ldt_utils\models.py:308
 msgid "created by"
 msgstr "created by"
 
-#: .\ldt_utils\models.py:334
+#: .\ldt_utils\models.py:309
 msgid "changed by"
 msgstr "changed by"
 
@@ -181,77 +180,77 @@
 msgid "Personal cutting"
 msgstr "Personal cutting"
 
-#: .\ldt_utils\views.py:118
-#: .\ldt_utils\views.py:568
-#: .\ldt_utils\views.py:614
+#: .\ldt_utils\views.py:113
+#: .\ldt_utils\views.py:565
+#: .\ldt_utils\views.py:611
 msgid "You can not access this project"
 msgstr "You can not access this project"
 
-#: .\ldt_utils\views.py:262
+#: .\ldt_utils\views.py:257
 msgid "Please enter valid keywords."
 msgstr "Please enter valid keywords."
 
-#: .\ldt_utils\views.py:780
+#: .\ldt_utils\views.py:774
 #, 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:781
+#: .\ldt_utils\views.py:775
 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:782
+#: .\ldt_utils\views.py:776
 msgid "title error deleting project"
 msgstr "Error when deleting project"
 
-#: .\ldt_utils\views.py:784
+#: .\ldt_utils\views.py:778
 #, python-format
 msgid "please confirm deleting project %(title)s"
 msgstr "Please confirm deleting project %(title)s"
 
-#: .\ldt_utils\views.py:785
+#: .\ldt_utils\views.py:779
 msgid "confirm deletion"
 msgstr "Confirm deletion"
 
-#: .\ldt_utils\views.py:961
+#: .\ldt_utils\views.py:955
 msgid "Problem when downloading file from url : "
 msgstr "Problem when downloading file from url: "
 
-#: .\ldt_utils\views.py:964
+#: .\ldt_utils\views.py:958
 msgid "Problem when uploading file : "
 msgstr "Problem when uploading file: "
 
-#: .\ldt_utils\views.py:1033
+#: .\ldt_utils\views.py:1027
 #, 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:1034
+#: .\ldt_utils\views.py:1028
 msgid "title error deleting content"
 msgstr "Error when deleting content"
 
-#: .\ldt_utils\views.py:1036
+#: .\ldt_utils\views.py:1030
 #, python-format
 msgid "Confirm delete content %(titles)s"
 msgstr "Confirm delete content %(titles)s"
 
-#: .\ldt_utils\views.py:1037
+#: .\ldt_utils\views.py:1031
 msgid "confirm delete content"
 msgstr "Confirm delete content"
 
-#: .\ldt_utils\views.py:1071
+#: .\ldt_utils\views.py:1065
 #, 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."
+"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."
+"Please delete it beforehand."
 msgstr[1] ""
 "Content '%(title)s' is referenced by %(count)d projects: %(project_titles)s. "
 "Please delete them beforehand."
@@ -298,7 +297,7 @@
 msgstr "Copy your project"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\copy_ldt.html.py:16
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:80
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:129
 msgid "Title"
 msgstr "Title"
 
@@ -338,7 +337,7 @@
 "<br />Please resubmit the media form after making the following changes:"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:76
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:77
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:61
 #: .\ldt_utils\templates\ldt\ldt_utils\workspace_base.html.py:54
 msgid "Create content"
 msgstr "Create content"
@@ -348,8 +347,8 @@
 msgstr "media file is being processed please wait."
 
 #: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:124
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:87
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:115
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:114
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:202
 #: .\ldt_utils\templates\ldt\ldt_utils\error_confirm.html.py:52
 msgid "close_cancel"
 msgstr "Close"
@@ -363,12 +362,12 @@
 msgstr "Write"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:29
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:37
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:53
 msgid "check all"
 msgstr "check all"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:30
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:38
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:54
 msgid "uncheck all"
 msgstr "uncheck all"
 
@@ -380,65 +379,104 @@
 msgid "Create a group"
 msgstr "Create a group"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:53
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:54
 #: .\user\templates\ldt\user\change_profile.html.py:52
 msgid "Name"
 msgstr "Name"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:55
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:56
 #, fuzzy
 msgid "List of members"
 msgstr "Members list"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:68
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:97
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:67
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:96
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:149
 #: .\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
 msgid "name"
 msgstr "name"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:89
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:68
+msgid "admin"
+msgstr ""
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:85
+msgid "Share admin rights with"
+msgstr ""
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:116
+#, fuzzy
+msgid "update_group"
+msgstr "update project"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:117
 #, fuzzy
 msgid "delete_group"
 msgstr "delete project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:90
-#, fuzzy
-msgid "update_group"
-msgstr "update project"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:92
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:119
 #, fuzzy
 msgid "create_group"
 msgstr "Create a group"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:76
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:125
 msgid "Update your project"
 msgstr "Create your project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:76
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:125
 msgid "Create your project"
 msgstr "Create your project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:82
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:131
 #, fuzzy
 msgid "Description :"
 msgstr "description"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:84
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:135
 msgid "List of contents"
 msgstr "List of contents"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:117
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:167
+#, fuzzy
+msgid "group list"
+msgstr "Projects"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:179
+msgid "nom"
+msgstr ""
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:180
+#: .\user\admin.py:15
+msgid "Permissions"
+msgstr "Permissions"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:189
+msgid "This group can read the project"
+msgstr "This group can read the project"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:189
+msgid "perm.read"
+msgstr "read"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:189
+msgid "This group can change the project"
+msgstr "You can change the project"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:189
+msgid "perm.write"
+msgstr "write"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:204
 msgid "delete_project"
 msgstr "delete project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:118
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:205
 msgid "update_project"
 msgstr "update project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:120
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:207
 msgid "create_project"
 msgstr "Create new project"
 
@@ -486,28 +524,27 @@
 msgid "do_delete"
 msgstr "Approve delete"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:75
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:59
 #: .\templates\ldt\ldt_base.html.py:112
-#, fuzzy
 msgid "My groups"
-msgstr "Groups"
+msgstr "My groups"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:77
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:61
 #, fuzzy
 msgid "Create group"
 msgstr "Create new project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:82
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:66
 #, fuzzy
 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\groups.html.py:98
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:91
 #, fuzzy
 msgid "The group's projects"
-msgstr "Copy your project"
+msgstr "The group's project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:100
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:93
 #: .\ldt_utils\templates\ldt\ldt_utils\ldt_list.html.py:79
 #: .\ldt_utils\templates\ldt\ldt_utils\published_projects.html.py:71
 #: .\ldt_utils\templates\ldt\ldt_utils\workspace_base.html.py:56
@@ -516,10 +553,6 @@
 msgid "search"
 msgstr "search"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:108
-msgid "You do not belong to any group."
-msgstr "You do not belong to any group."
-
 #: .\ldt_utils\templates\ldt\ldt_utils\init_ldt_full.html.py:16
 msgid ""
 "Your current work is modified. Click Cancel and save it one last time before "
@@ -873,9 +906,8 @@
 
 #: .\templates\ldt\ldt_base.html.py:92
 #: .\user\templates\ldt\user\change_profile.html.py:85
-#, fuzzy
 msgid "Profile change"
-msgstr "Mail change"
+msgstr "Profile change"
 
 #: .\templates\ldt\ldt_base.html.py:111
 #: .\templates\ldt\ldt_base.html.py:112
@@ -966,10 +998,6 @@
 msgid "Groups"
 msgstr "Groups"
 
-#: .\user\admin.py:15
-msgid "Permissions"
-msgstr "Permissions"
-
 #: .\user\admin.py:25
 #: .\user\templates\ldt\user\change_profile.html.py:95
 #: .\user\templates\ldt\user\login_form.html.py:61
--- a/src/ldt/ldt/locale/fr/LC_MESSAGES/django.po	Fri Nov 04 16:45:40 2011 +0100
+++ b/src/ldt/ldt/locale/fr/LC_MESSAGES/django.po	Mon Nov 07 15:18:25 2011 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-27 14:53+0200\n"
+"POT-Creation-Date: 2011-11-07 10:21+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:28 .\ldt_utils\models.py:41
+#: .\ldt_utils\forms.py:28 .\ldt_utils\models.py:40
 #: .\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:43 .\ldt_utils\models.py:110
+#: .\ldt_utils\forms.py:43 .\ldt_utils\models.py:109
 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:30
+#: .\ldt_utils\models.py:29
 msgid "media.external_id"
 msgstr "id externe"
 
-#: .\ldt_utils\models.py:31
+#: .\ldt_utils\models.py:30
 msgid "media.external_permalink"
 msgstr "permalien externe"
 
-#: .\ldt_utils\models.py:32
+#: .\ldt_utils\models.py:31
 msgid "media.external_publication_url"
 msgstr "url de publication externe"
 
-#: .\ldt_utils\models.py:33
+#: .\ldt_utils\models.py:32
 msgid "media.external_src_url"
 msgstr "url source"
 
-#: .\ldt_utils\models.py:34
+#: .\ldt_utils\models.py:33
 msgid "media.creation_date"
 msgstr "Date de création"
 
-#: .\ldt_utils\models.py:35
+#: .\ldt_utils\models.py:34
 msgid "media.media_creation_date"
 msgstr "Date de création du média"
 
-#: .\ldt_utils\models.py:36
+#: .\ldt_utils\models.py:35
 msgid "media.update_date"
 msgstr "Date de maj"
 
-#: .\ldt_utils\models.py:37
+#: .\ldt_utils\models.py:36
 msgid "media.videopath"
 msgstr "videopath"
 
-#: .\ldt_utils\models.py:38
+#: .\ldt_utils\models.py:37
 msgid "media.duration"
 msgstr "Durée du contenu (ms)"
 
-#: .\ldt_utils\models.py:39
+#: .\ldt_utils\models.py:38
 msgid "media.creator"
 msgstr "Créateur"
 
-#: .\ldt_utils\models.py:40
+#: .\ldt_utils\models.py:39
 msgid "description"
 msgstr "description"
 
-#: .\ldt_utils\models.py:42
+#: .\ldt_utils\models.py:41
 msgid "media.src"
 msgstr "Sources"
 
-#: .\ldt_utils\models.py:43
+#: .\ldt_utils\models.py:42
 msgid "media.mimetype"
 msgstr "mimetype"
 
-#: .\ldt_utils\models.py:102
+#: .\ldt_utils\models.py:101
 msgid "content.iri_id"
 msgstr "iri id"
 
-#: .\ldt_utils\models.py:103
+#: .\ldt_utils\models.py:102
 msgid "content.iriurl"
 msgstr "iri url"
 
-#: .\ldt_utils\models.py:104
+#: .\ldt_utils\models.py:103
 msgid "content.creation_date"
 msgstr "date de création"
 
-#: .\ldt_utils\models.py:105
+#: .\ldt_utils\models.py:104
 msgid "content.update_date"
 msgstr "Date de maj"
 
-#: .\ldt_utils\models.py:106
+#: .\ldt_utils\models.py:105
 msgid "content.title"
 msgstr "titre"
 
-#: .\ldt_utils\models.py:107
+#: .\ldt_utils\models.py:106
 msgid "content.description"
 msgstr "Description"
 
-#: .\ldt_utils\models.py:108
+#: .\ldt_utils\models.py:107
 msgid "content.authors"
 msgstr "Auteurs"
 
-#: .\ldt_utils\models.py:109
+#: .\ldt_utils\models.py:108
 msgid "content.duration"
 msgstr "Durée (ms)"
 
-#: .\ldt_utils\models.py:333
+#: .\ldt_utils\models.py:308
 msgid "created by"
 msgstr "créé par"
 
-#: .\ldt_utils\models.py:334
+#: .\ldt_utils\models.py:309
 msgid "changed by"
 msgstr "modifié par"
 
@@ -178,66 +178,66 @@
 msgid "Personal cutting"
 msgstr "Découpages personnels"
 
-#: .\ldt_utils\views.py:118 .\ldt_utils\views.py:568 .\ldt_utils\views.py:614
+#: .\ldt_utils\views.py:113 .\ldt_utils\views.py:565 .\ldt_utils\views.py:611
 msgid "You can not access this project"
 msgstr "vous n'avez pas l'autorisation d'accéder à ce projet"
 
-#: .\ldt_utils\views.py:262
+#: .\ldt_utils\views.py:257
 msgid "Please enter valid keywords."
 msgstr "Veuillez entrer des mots-clés valides."
 
-#: .\ldt_utils\views.py:780
+#: .\ldt_utils\views.py:774
 #, 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:781
+#: .\ldt_utils\views.py:775
 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:782
+#: .\ldt_utils\views.py:776
 msgid "title error deleting project"
 msgstr "Erreur lors de l'effacement du projet"
 
-#: .\ldt_utils\views.py:784
+#: .\ldt_utils\views.py:778
 #, python-format
 msgid "please confirm deleting project %(title)s"
 msgstr "Confirmer l'effacement du projet intitulé %(title)s"
 
-#: .\ldt_utils\views.py:785
+#: .\ldt_utils\views.py:779
 msgid "confirm deletion"
 msgstr "Confirmation d'effacement"
 
-#: .\ldt_utils\views.py:961
+#: .\ldt_utils\views.py:955
 msgid "Problem when downloading file from url : "
 msgstr "Problème lors du téléchargement du fichier : "
 
-#: .\ldt_utils\views.py:964
+#: .\ldt_utils\views.py:958
 msgid "Problem when uploading file : "
 msgstr "Problème lors de l'upload du fichier : "
 
-#: .\ldt_utils\views.py:1033
+#: .\ldt_utils\views.py:1027
 #, 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:1034
+#: .\ldt_utils\views.py:1028
 msgid "title error deleting content"
 msgstr "Erreur lors de l'effacement du contenu"
 
-#: .\ldt_utils\views.py:1036
+#: .\ldt_utils\views.py:1030
 #, python-format
 msgid "Confirm delete content %(titles)s"
 msgstr "Veuillez confirmer l'effacement du contenu %(titles)s"
 
-#: .\ldt_utils\views.py:1037
+#: .\ldt_utils\views.py:1031
 msgid "confirm delete content"
 msgstr "Confirmation effacement contenu"
 
-#: .\ldt_utils\views.py:1071
+#: .\ldt_utils\views.py:1065
 #, python-format
 msgid ""
 "Content '%(title)s' is referenced by this project : %(project_titles)s. "
@@ -294,7 +294,7 @@
 msgstr "Copier votre projet"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\copy_ldt.html.py:16
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:80
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:129
 msgid "Title"
 msgstr "Titre"
 
@@ -335,7 +335,7 @@
 "resoumettre le formulaire media après avoir fait les changements suivants:"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:76
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:77
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:61
 #: .\ldt_utils\templates\ldt\ldt_utils\workspace_base.html.py:54
 msgid "Create content"
 msgstr "Créer un contenu"
@@ -345,8 +345,8 @@
 msgstr "Le fichier média est en cours de traitement. Veuillez patienter."
 
 #: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:124
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:87
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:115
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:114
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:202
 #: .\ldt_utils\templates\ldt\ldt_utils\error_confirm.html.py:52
 msgid "close_cancel"
 msgstr "Fermer"
@@ -360,12 +360,12 @@
 msgstr "Enregistrer"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:29
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:37
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:53
 msgid "check all"
 msgstr "Tout cocher"
 
 #: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:30
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:38
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:54
 msgid "uncheck all"
 msgstr "Tout décocher"
 
@@ -377,61 +377,98 @@
 msgid "Create a group"
 msgstr "Créer un groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:53
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:54
 #: .\user\templates\ldt\user\change_profile.html.py:52
 msgid "Name"
 msgstr "Nom"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:55
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:56
 msgid "List of members"
 msgstr "Liste des membres"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:68
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:97
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:67
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:96
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:149
 #: .\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
 msgid "name"
 msgstr "Nom"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:89
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:68
+msgid "admin"
+msgstr "Administrateur"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:85
+msgid "Share admin rights with"
+msgstr "Partager l'administration du groupe avec"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:116
+msgid "update_group"
+msgstr "Mettre à jour le groupe"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:117
 msgid "delete_group"
 msgstr "Effacer le groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:90
-msgid "update_group"
-msgstr "Mettre à jour le groupe"
-
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:92
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:119
 msgid "create_group"
 msgstr "Créer un nouveau groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:76
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:125
 msgid "Update your project"
 msgstr "Mettre à jour votre projet Lignes de Temps"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:76
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:125
 msgid "Create your project"
 msgstr "Créer votre projet Lignes de Temps"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:82
-#, fuzzy
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:131
 msgid "Description :"
-msgstr "description"
+msgstr "Description :"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:84
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:135
 msgid "List of contents"
 msgstr "Liste de contenus"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:117
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:167
+msgid "group list"
+msgstr "Liste des groupes"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:179
+msgid "nom"
+msgstr "nom"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:180
+#: .\user\admin.py:15
+msgid "Permissions"
+msgstr "Permissions"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:189
+msgid "This group can read the project"
+msgstr "Ce groupe peut lire le projet"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:189
+msgid "perm.read"
+msgstr "lecture"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:189
+msgid "This group can change the project"
+msgstr "Ce groupe peut changer le projet"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:189
+msgid "perm.write"
+msgstr "écriture"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:204
 msgid "delete_project"
 msgstr "Effacer"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:118
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:205
 msgid "update_project"
 msgstr "Mettre à jour"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:120
+#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:207
 msgid "create_project"
 msgstr "Créer un nouveau projet Ligne de Temps"
 
@@ -479,24 +516,24 @@
 msgid "do_delete"
 msgstr "Effacer"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:75
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:59
 #: .\templates\ldt\ldt_base.html.py:112
 msgid "My groups"
 msgstr "Groupes"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:77
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:61
 msgid "Create group"
 msgstr "Créer un nouveau groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:82
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:66
 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\groups.html.py:98
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:91
 msgid "The group's projects"
 msgstr "projets du groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:100
+#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:93
 #: .\ldt_utils\templates\ldt\ldt_utils\ldt_list.html.py:79
 #: .\ldt_utils\templates\ldt\ldt_utils\published_projects.html.py:71
 #: .\ldt_utils\templates\ldt\ldt_utils\workspace_base.html.py:56
@@ -505,10 +542,6 @@
 msgid "search"
 msgstr "Recherche"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\groups.html.py:108
-msgid "You do not belong to any group."
-msgstr "Vous ne faites partie d'aucun groupe."
-
 #: .\ldt_utils\templates\ldt\ldt_utils\init_ldt_full.html.py:16
 msgid ""
 "Your current work is modified. Click Cancel and save it one last time before "
@@ -947,10 +980,6 @@
 msgid "Groups"
 msgstr "Groupes"
 
-#: .\user\admin.py:15
-msgid "Permissions"
-msgstr "Permissions"
-
 #: .\user\admin.py:25 .\user\templates\ldt\user\change_profile.html.py:95
 #: .\user\templates\ldt\user\login_form.html.py:61
 msgid "Password"
@@ -1253,5 +1282,8 @@
 "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 "You do not belong to any group."
+#~ msgstr "Vous ne faites partie d'aucun groupe."
+
 #~ msgid "Django site admin"
 #~ msgstr "Administration de Django"
--- a/src/ldt/ldt/static/ldt/js/projectscontents.js	Fri Nov 04 16:45:40 2011 +0100
+++ b/src/ldt/ldt/static/ldt/js/projectscontents.js	Mon Nov 07 15:18:25 2011 +0100
@@ -53,7 +53,7 @@
         });
     });
     
-    $('.cellimgdiv img, .publishedproject, .unpublishedproject').qtip({
+    $('.cellimgdiv img, .publishedproject, .unpublishedproject, .create_group').qtip({
     	style: {
     		classes: 'ui-tooltip-dark ui-tooltip-rounded'
     	}    	
@@ -282,9 +282,9 @@
 function init_events_base_projects(base_node, embed_url, searchprojectfilterurl, publishprojecturl, unpublishprojecturl) {
 
     init_modal_window ('.ldt_link_open_ldt', 1035, 670, 1025, 660, base_node, searchprojectfilterurl);
-    init_modal_window ('.ldt_link_create_project', 520, 660, 510, 650, base_node, searchprojectfilterurl);
+    init_modal_window ('.ldt_link_create_project', 950, 710, 940, 700, base_node, searchprojectfilterurl);
     init_modal_window ('.ldt_link_copy_project', 500, 150, 500, 150, base_node, searchprojectfilterurl);
-    init_modal_window('.create_group', 520, 530, 510, 520, base_node, searchprojectfilterurl);
+    init_modal_window ('.create_group', 520, 530, 510, 520, base_node, null);
      
     $('.publishedproject', base_node).click(function(e) {
         e.preventDefault();
@@ -332,8 +332,8 @@
     $('.projecttitlelink').nyroModal({
         filters: ['iframe'],
         sizes: {
-            minW: '520',
-            minH: '700'
+            minW: '950',
+            minH: '710'
         },
         closeOnClick:false,
         callbacks: {
@@ -349,8 +349,8 @@
                     }
                   });
 
-                nm.store.iframe.width(510);
-                nm.store.iframe.height(690);
+                nm.store.iframe.width(940);
+                nm.store.iframe.height(700);
             }
         }
     });