Contents can be published for everyone
authorverrierj
Fri, 02 Dec 2011 10:50:35 +0100
changeset 266 a35924820af7
parent 265 491d057cbfd2
child 267 e00779f0dcba
Contents can be published for everyone
src/ldt/ldt/ldt_utils/forms.py
src/ldt/ldt/ldt_utils/models.py
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/permissions.html
src/ldt/ldt/ldt_utils/views.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
--- a/src/ldt/ldt/ldt_utils/forms.py	Thu Dec 01 14:49:10 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/forms.py	Fri Dec 02 10:50:35 2011 +0100
@@ -48,7 +48,8 @@
     content_creation_date = forms.SplitDateTimeField(widget=ldt_widgets.LdtSplitDateTime, required=False, label=_("content.content_creation_date"))
     media_input_type = forms.ChoiceField(required=False, label=_("content.media_input_type"), choices=(("upload", _("file_upload")), ("url", _("url")), ("link", _("existing_media")), ("create", _("create_media")), ("none", _("none_media"))))
     groups = forms.ModelMultipleChoiceField(Group.objects.all(), required=False)
-    
+    is_public = forms.BooleanField(required=False)  
+        
     def clean_iri_id(self):
         data = self.cleaned_data.get('iri_id')
         if not data:
--- a/src/ldt/ldt/ldt_utils/models.py	Thu Dec 01 14:49:10 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/models.py	Fri Dec 02 10:50:35 2011 +0100
@@ -4,7 +4,7 @@
 from django.utils.translation import ugettext_lazy as _
 #from ldt.core.models import Document, Owner
 from ldt.core.models import Document
-from guardian.shortcuts import assign, remove_perm
+from guardian.shortcuts import assign, remove_perm, get_perms
 import ldt.indexation
 from ldt.security.models import SafeModel
 from ldt.security.manager import SafeManager
@@ -307,6 +307,27 @@
        
     external_id = property(**external_id())
     
+    def is_public(): #@NoSelf
+        
+        def fget(self):
+            everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME)
+            if 'view_content' in get_perms(everyone, self):
+                return True
+            return False
+        
+        def fset(self, value):
+            everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME)
+            if value:
+                assign('view_content', everyone, self)                
+            else:
+                remove_perm('view_content', everyone, self)
+        
+        return locals()
+    
+    is_public = property(**is_public())
+                
+
+    
 class Project(Document, SafeModel):  
     STATE_CHOICES = (
     (1, 'edition'),
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html	Thu Dec 01 14:49:10 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html	Fri Dec 02 10:50:35 2011 +0100
@@ -48,6 +48,23 @@
 							"{% url ldt.ldt_utils.views.get_duration %}");
 	});
 	
+	$(document).ready(function () {
+		
+		$("#public input").click(function () {
+			
+			if ($(this).is(':checked')) {
+				$('.cellcheckbox input').attr('checked', false);
+				$('.cellcheckbox input').attr('disabled', true);
+				$('.perm_read, .perm_write').removeClass('pointer').removeClass('bold');
+			} else {
+				$('.cellcheckbox input').removeAttr('disabled');
+				$('.pointer').unbind('click');
+
+				activate_rw_events();
+			}			
+		});
+	});
+	
     </script>
 {% endblock %}
 
@@ -93,6 +110,7 @@
 		<div>{{ content_form.description.errors }}{{ content_form.description.label_tag }}{{content_form.description}}</div>
 		<div>{{ media_form.external_id.errors }}{{ media_form.external_id.label_tag }}{{media_form.external_id}}</div>
 		<div>{{ media_form.external_publication_url.errors }}{{ media_form.external_publication_url.label_tag }}{{media_form.external_publication_url}}</div>
+		<div id="public">{{ content_form.is_public }}<label>{% trans  "publish for everyone" %}</label></div>
 	</div>
 	<div id="contentright" class="span-9 last" >
 		<div>{{ content_form.external_id.errors }}{{ content_form.external_id.label_tag }}{{content_form.external_id}}</div>
@@ -113,8 +131,7 @@
 			<div id="media_field_url" class="media_fields">{{ media_form.external_src_url.errors }}{{ media_form.external_src_url.label_tag }}{{ media_form.external_src_url }}</div>
 			<div id="media_field_create" class="media_fields">{{ media_form.src.errors }}{{ media_form.src.label_tag }}{{ media_form.src }}</div>
 		</div>
-	</div>
-		 
+	</div>	 
 	{% include "ldt/ldt_utils/partial/permissions.html" %}
 	</div>
 		
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html	Thu Dec 01 14:49:10 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html	Fri Dec 02 10:50:35 2011 +0100
@@ -78,8 +78,8 @@
 {% endblock %}
 
 {% block body %}
-	<div id="add_contribution" class="span-23 last">	
-	<div class="projectscontentstitle span-23 last">{% if ldt_id %}{% trans "Update your project" %}{% else %}{% trans "Create your project" %}{% endif %}</div>
+	<div id="add_contribution" class="span-20 last">
+	<div class="projectscontentstitle span-20 last">{% if ldt_id %}{% trans "Update your project" %}{% else %}{% trans "Create your project" %}{% endif %}</div>
 	<form action="{{create_project_action}}" method="POST" {% if target_parent %}target="_parent"{% endif %}>
 	{% csrf_token %} 
 	<input type="hidden" name="form_status" value="{{form_status}}" id="project_form_status" />
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/permissions.html	Thu Dec 01 14:49:10 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/permissions.html	Fri Dec 02 10:50:35 2011 +0100
@@ -19,9 +19,8 @@
 		});
 	}
 	
-	$(document).ready(function() {	
-				
-		$(".pointer").live("click", function () {
+	function activate_rw_events() {
+		$(".pointer").live('click', function () {
             var group_name = $(this).attr('value');
         	var group_id = group_name.split('_').pop();
             
@@ -36,8 +35,8 @@
             
             $(".perm_field",$(this).closest('tr')).attr('value', perm);
         });
-        
-        $(".checkbox_group").bind("change", function() {
+		
+        $(".checkbox_group").live('change', function() {
             var line = $(this).closest('tr');
             
             $(".perm_read, .perm_write", line).removeClass("bold");
@@ -49,11 +48,13 @@
                 $(".perm_read", line).addClass('bold');
                 $(".perm_read, .perm_write", line).addClass('pointer');
             }
-        });        
-
+        }); 
+	}
+	
+	$(document).ready(function() {
 		check_uncheck_all("group");
-		activate_initial_permissions();	
-				
+		activate_initial_permissions();
+		activate_rw_events();				
 	});
 </script>
 
--- a/src/ldt/ldt/ldt_utils/views.py	Thu Dec 01 14:49:10 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/views.py	Fri Dec 02 10:50:35 2011 +0100
@@ -1134,7 +1134,8 @@
                     mimetype = mimetypes.guess_type(media.src)
                 media.mimetype_field = mimetype   
                 media.save()                
-                assign('view_media', request.user, media) 
+                assign('view_media', request.user, media)
+                assign('change_media', request.user, media) 
             
             if form_status != "error":     
                 content_defaults = {}
@@ -1146,7 +1147,12 @@
                 
                 assign('change_content', request.user, content)
                 assign('view_content', request.user, content)
-                assign_object_to_groups(content, group_form.cleaned_data)                
+                everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME)
+                if content_form.cleaned_data['is_public']:
+                    assign('view_content', everyone, content)
+                else:
+                    remove_perm('view_content', everyone, content)
+                    assign_object_to_groups(content, group_form.cleaned_data)                
                 if not created:
                     for attribute in ('iriurl', 'title', 'description', 'duration', 'content_creation_date', 'tags', 'media_obj'):
                         setattr(content, attribute, content_defaults[attribute])
@@ -1159,6 +1165,8 @@
     else:
         form_status = 'empty'
         initial = { 'media_input_type':"link"}
+        if instance_content:
+            initial['is_public'] = instance_content.is_public
         
         content_form = ContentForm(prefix="content", instance=instance_content, initial=initial)
         media_form = MediaForm(prefix="media", instance=instance_media)  
@@ -1218,7 +1226,8 @@
     session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
     cookie_name = settings.SESSION_COOKIE_NAME 
     
-    content_form.fields["media_obj"].queryset = Media.safe_objects.all() 
+    
+    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,
                                                                     'management_form': management_form, 'group_form': group_form, 'iri_id': iri_id, 'session_key':session_key, 'cookie_name':cookie_name}, 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	Thu Dec 01 14:49:10 2011 +0100
+++ b/src/ldt/ldt/locale/en/LC_MESSAGES/django.po	Fri Dec 02 10:50:35 2011 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-30 14:13+0100\n"
+"POT-Creation-Date: 2011-12-02 10:40+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"
@@ -166,11 +166,11 @@
 msgid "content.duration"
 msgstr "duration (ms)"
 
-#: .\ldt_utils\models.py:324
+#: .\ldt_utils\models.py:345
 msgid "created by"
 msgstr "created by"
 
-#: .\ldt_utils\models.py:325
+#: .\ldt_utils\models.py:346
 msgid "changed by"
 msgstr "changed by"
 
@@ -178,7 +178,7 @@
 msgid "Personal cutting"
 msgstr "Personal cutting"
 
-#: .\ldt_utils\views.py:122 .\ldt_utils\views.py:665 .\ldt_utils\views.py:711
+#: .\ldt_utils\views.py:123 .\ldt_utils\views.py:665 .\ldt_utils\views.py:711
 msgid "You can not access this project"
 msgstr "You can not access this project"
 
@@ -204,35 +204,35 @@
 msgid "confirm deletion"
 msgstr "Confirm deletion"
 
-#: .\ldt_utils\views.py:1104
+#: .\ldt_utils\views.py:1103
 msgid "Problem when downloading file from url : "
 msgstr "Problem when downloading file from url: "
 
-#: .\ldt_utils\views.py:1107
+#: .\ldt_utils\views.py:1106
 msgid "Problem when uploading file : "
 msgstr "Problem when uploading file: "
 
-#: .\ldt_utils\views.py:1181
+#: .\ldt_utils\views.py:1189
 #, 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:1182
+#: .\ldt_utils\views.py:1190
 msgid "title error deleting content"
 msgstr "Error when deleting content"
 
-#: .\ldt_utils\views.py:1184
+#: .\ldt_utils\views.py:1192
 #, python-format
 msgid "Confirm delete content %(titles)s"
 msgstr "Confirm delete content %(titles)s"
 
-#: .\ldt_utils\views.py:1185
+#: .\ldt_utils\views.py:1193
 msgid "confirm delete content"
 msgstr "Confirm delete content"
 
-#: .\ldt_utils\views.py:1239
+#: .\ldt_utils\views.py:1249
 #, python-format
 msgid ""
 "Content '%(title)s' is referenced by this project : %(project_titles)s. "
@@ -314,7 +314,7 @@
 msgid "Cancel upload"
 msgstr "Cancel upload"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:58
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:73
 msgid ""
 "The operation could not be performed because one or more error(s) occurred."
 "<br />Please resubmit the content form after making the following changes:"
@@ -322,7 +322,7 @@
 "The operation could not be performed because one or more error(s) occurred."
 "<br />Please resubmit the content form after making the following changes:"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:68
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:83
 msgid ""
 "The operation could not be performed because one or more error(s) occurred."
 "<br />Please resubmit the media form after making the following changes:"
@@ -330,36 +330,40 @@
 "The operation could not be performed because one or more error(s) occurred."
 "<br />Please resubmit the media form after making the following changes:"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:78
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:93
 #: .\ldt_utils\templates\ldt\ldt_utils\workspace_base.html.py:54
 msgid "Create content"
 msgstr "Create content"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:125
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:111
+msgid "publish for everyone"
+msgstr "publish for everyone"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:140
 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:129
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:144
 #: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:111
 #: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:128
 #: .\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:130
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:145
 msgid "delete"
 msgstr "Approve delete"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:131
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:146
 msgid "write"
 msgstr "Write"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:60
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:53
 #: .\templates\ldt\ldt_raw_base.html.py:18
 msgid "check all"
 msgstr "check all"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:61
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:54
 #: .\templates\ldt\ldt_raw_base.html.py:19
 msgid "uncheck all"
 msgstr "uncheck all"
@@ -606,33 +610,33 @@
 msgid "Leave this group"
 msgstr "Create a group"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:59
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:63
 #, fuzzy
 msgid "group list"
 msgstr "Projects"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:72
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:76
 msgid "nom"
 msgstr ""
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:73
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:77
 #: .\user\admin.py:26
 msgid "Permissions"
 msgstr "Permissions"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:83
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:87
 msgid "This group can read the project"
 msgstr "This group can read the project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:83
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:87
 msgid "perm.read"
 msgstr "read"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:84
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:88
 msgid "This group can change the project"
 msgstr "You can change the project"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:84
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:88
 msgid "perm.write"
 msgstr "write"
 
@@ -679,7 +683,7 @@
 msgid "Check to include this user in the group"
 msgstr "Check to include this user in the group"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\userslist.html.py:22
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\userslist.html.py:24
 msgid "Check to give this user the right to change the group"
 msgstr "Check to give this user the right to change the group"
 
Binary file src/ldt/ldt/locale/fr/LC_MESSAGES/django.mo has changed
--- a/src/ldt/ldt/locale/fr/LC_MESSAGES/django.po	Thu Dec 01 14:49:10 2011 +0100
+++ b/src/ldt/ldt/locale/fr/LC_MESSAGES/django.po	Fri Dec 02 10:50:35 2011 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-30 14:13+0100\n"
+"POT-Creation-Date: 2011-12-02 10:40+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"
@@ -166,11 +166,11 @@
 msgid "content.duration"
 msgstr "Durée (ms)"
 
-#: .\ldt_utils\models.py:324
+#: .\ldt_utils\models.py:345
 msgid "created by"
 msgstr "créé par"
 
-#: .\ldt_utils\models.py:325
+#: .\ldt_utils\models.py:346
 msgid "changed by"
 msgstr "modifié par"
 
@@ -178,7 +178,7 @@
 msgid "Personal cutting"
 msgstr "Découpages personnels"
 
-#: .\ldt_utils\views.py:122 .\ldt_utils\views.py:665 .\ldt_utils\views.py:711
+#: .\ldt_utils\views.py:123 .\ldt_utils\views.py:665 .\ldt_utils\views.py:711
 msgid "You can not access this project"
 msgstr "vous n'avez pas l'autorisation d'accéder à ce projet"
 
@@ -205,35 +205,35 @@
 msgid "confirm deletion"
 msgstr "Confirmation d'effacement"
 
-#: .\ldt_utils\views.py:1104
+#: .\ldt_utils\views.py:1103
 msgid "Problem when downloading file from url : "
 msgstr "Problème lors du téléchargement du fichier : "
 
-#: .\ldt_utils\views.py:1107
+#: .\ldt_utils\views.py:1106
 msgid "Problem when uploading file : "
 msgstr "Problème lors de l'upload du fichier : "
 
-#: .\ldt_utils\views.py:1181
+#: .\ldt_utils\views.py:1189
 #, 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:1182
+#: .\ldt_utils\views.py:1190
 msgid "title error deleting content"
 msgstr "Erreur lors de l'effacement du contenu"
 
-#: .\ldt_utils\views.py:1184
+#: .\ldt_utils\views.py:1192
 #, python-format
 msgid "Confirm delete content %(titles)s"
 msgstr "Veuillez confirmer l'effacement du contenu %(titles)s"
 
-#: .\ldt_utils\views.py:1185
+#: .\ldt_utils\views.py:1193
 msgid "confirm delete content"
 msgstr "Confirmation effacement contenu"
 
-#: .\ldt_utils\views.py:1239
+#: .\ldt_utils\views.py:1249
 #, python-format
 msgid ""
 "Content '%(title)s' is referenced by this project : %(project_titles)s. "
@@ -314,7 +314,7 @@
 msgid "Cancel upload"
 msgstr "Annuler le téléversement"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:58
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:73
 msgid ""
 "The operation could not be performed because one or more error(s) occurred."
 "<br />Please resubmit the content form after making the following changes:"
@@ -322,7 +322,7 @@
 "Opération impossible à cause d'une ou plusieurs erreurs.<br />Veuillez "
 "resoumettre le formulaire contenu après avoir fait les changements suivants:"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:68
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:83
 msgid ""
 "The operation could not be performed because one or more error(s) occurred."
 "<br />Please resubmit the media form after making the following changes:"
@@ -330,36 +330,40 @@
 "opération impossible à cause d'une ou plusieurs erreurs.<br />Veuillez "
 "resoumettre le formulaire media après avoir fait les changements suivants:"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:78
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:93
 #: .\ldt_utils\templates\ldt\ldt_utils\workspace_base.html.py:54
 msgid "Create content"
 msgstr "Créer un contenu"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:125
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:111
+msgid "publish for everyone"
+msgstr "publier pour tout le monde"
+
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:140
 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:129
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:144
 #: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:111
 #: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:128
 #: .\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:130
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:145
 msgid "delete"
 msgstr "Effacer"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:131
+#: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:146
 msgid "write"
 msgstr "Enregistrer"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:60
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:53
 #: .\templates\ldt\ldt_raw_base.html.py:18
 msgid "check all"
 msgstr "Tout cocher"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:61
+#: .\ldt_utils\templates\ldt\ldt_utils\create_group.html.py:54
 #: .\templates\ldt\ldt_raw_base.html.py:19
 msgid "uncheck all"
 msgstr "Tout décocher"
@@ -597,32 +601,32 @@
 msgid "Leave this group"
 msgstr "Quitter ce groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:59
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:63
 msgid "group list"
 msgstr "Liste des groupes"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:72
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:76
 msgid "nom"
 msgstr "nom"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:73
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:77
 #: .\user\admin.py:26
 msgid "Permissions"
 msgstr "Permissions"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:83
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:87
 msgid "This group can read the project"
 msgstr "Ce groupe peut lire le projet"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:83
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:87
 msgid "perm.read"
 msgstr "lecture"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:84
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:88
 msgid "This group can change the project"
 msgstr "Ce groupe peut changer le projet"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:84
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\permissions.html.py:88
 msgid "perm.write"
 msgstr "écriture"
 
@@ -669,7 +673,7 @@
 msgid "Check to include this user in the group"
 msgstr "Cocher pour inclure cet utilisateur dans le groupe"
 
-#: .\ldt_utils\templates\ldt\ldt_utils\partial\userslist.html.py:22
+#: .\ldt_utils\templates\ldt\ldt_utils\partial\userslist.html.py:24
 msgid "Check to give this user the right to change the group"
 msgstr "Cocher pour donner à cet utilisateur le droit de modifier le groupe"