Fix bug in content edition form
authorverrierj
Thu, 09 Feb 2012 10:17:59 +0100
changeset 544 610524c5d1e3
parent 543 03a99f7440ef
child 545 96ca8ff7d7cc
Fix bug in content edition form
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html
src/ldt/ldt/ldt_utils/views/content.py
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html	Wed Feb 08 17:36:59 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html	Thu Feb 09 10:17:59 2012 +0100
@@ -124,11 +124,12 @@
 	
 	<div id="moreoptions">{% trans 'More options' %}</div>
 	<div id="moreoptionscontainer" style="display: none;">
-		<div>
+
 		{% if iri_id and user.is_staff %}
-		{{ content_form.front_project.label_tag }}{{ content_form.front_project }}
+		<div>{{ content_form.front_project.label_tag }}{{ content_form.front_project }}</div>
+		{% else %}
+		<div style="display:none">{{ content_form.front_project }}</div>
 		{% endif %}
-		</div>
 	{% include "ldt/ldt_utils/partial/picture.html"%}
 	{% include "ldt/ldt_utils/partial/permissions.html" %}
 	</div>
--- a/src/ldt/ldt/ldt_utils/views/content.py	Wed Feb 08 17:36:59 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/content.py	Thu Feb 09 10:17:59 2012 +0100
@@ -72,6 +72,7 @@
         
         if request.user.is_staff:
             content_form.fields['front_project'].queryset = Project.objects.filter(contents__in=[instance_content])
+
         
         media_valid = media_form.is_valid()
         content_valid = content_form.is_valid()
@@ -209,9 +210,9 @@
                      
                 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.
-
+                if not created and not request.user.has_perm('ldt_utils.change_content', content):
+                    raise AttributeError("%s is not allowed to change content %s" % (request.user, content))
+                
                 cached_assign('change_content', request.user, content)
                 cached_assign('view_content', request.user, content)
                 everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME)
@@ -232,6 +233,7 @@
                         
                     if request.user.is_staff and content_defaults.has_key('front_project'):
                         content.front_project = content_defaults['front_project']
+                    
                 content.save()
                 picture_form.model = content
                 picture_form.save()  
@@ -247,6 +249,8 @@
         initial = { 'media_input_type':"link"}
         if instance_content:
             initial['is_public'] = instance_content.is_public
+        else:
+            initial['is_public'] = False
         
         content_form = ContentForm(prefix="content", instance=instance_content, initial=initial)
         media_form = MediaForm(prefix="media", instance=instance_media)