Fix bug in Shareform
authorverrierj
Thu, 22 Dec 2011 15:49:42 +0100
changeset 295 454449cd5e11
parent 294 53afb302c3c5
child 296 817d0af48b85
Fix bug in Shareform
src/ldt/ldt/ldt_utils/views.py
src/ldt/ldt/security/forms.py
--- a/src/ldt/ldt/ldt_utils/views.py	Thu Dec 22 13:59:03 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/views.py	Thu Dec 22 15:49:42 2011 +0100
@@ -581,8 +581,12 @@
     posturl = settings.WEB_URL + reverse("ldt.ldt_utils.views.save_ldt_project")
     language_code = request.LANGUAGE_CODE[:2]
     
-    ldt = get_object_or_404(Project.safe_objects, ldt_id=id)
-    if ldt.state == 2: #published
+    try:
+        ldt = Project.safe_objects.get(ldt_id=id)
+    except Project.DoesNotExist:
+        return HttpResponseRedirect(reverse("ldt.ldt_utils.views.workspace"))
+    
+    if ldt.state == 2 or not request.user.has_perm('change_project', ldt): #published
         readonly = 'true'
     else:
         readonly = 'false'
@@ -591,7 +595,7 @@
         template_path = 'ldt/ldt_utils/init_ldt_full.html'
     else:
         template_path = 'ldt/ldt_utils/init_ldt.html'
-        
+  
     return render_to_response(template_path, {'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/', 'url': urlStr, 'posturl': posturl, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request))
     
     
@@ -974,17 +978,17 @@
             
         content_instance_val['read_list'] = request.POST.getlist('read_list')
         content_instance_val['write_list'] = request.POST.getlist('write_list')
-            
+        content_instance_val['share'] = request.POST.get('share', False)
+
         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
         
         if media_valid and content_valid:
-            
+
             # see if media must be created
             cleaned_data = {}
             cleaned_data.update(media_form.cleaned_data)
@@ -1107,8 +1111,8 @@
                 content_defaults = {}
                 content_defaults.update(content_form.cleaned_data)
                 content_defaults['media_obj'] = media
-                
-                for key in ["media_input_type", "groups", "is_public", "read_list", "write_list" ]:
+                               
+                for key in ["media_input_type", "groups", "is_public", "read_list", "write_list", "share" ]:
                     del content_defaults[key]
                      
                 content, created = Content.safe_objects.get_or_create(iri_id=content_form.cleaned_data['iri_id'], defaults=content_defaults) #@UndefinedVariable
@@ -1117,7 +1121,6 @@
                 cached_assign('change_content', request.user, content)
                 cached_assign('view_content', request.user, content)
                 everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME)
-                        
                 if content_form.cleaned_data['is_public']:
                     cached_assign('view_content', everyone, content)
                     if media:
--- a/src/ldt/ldt/security/forms.py	Thu Dec 22 13:59:03 2011 +0100
+++ b/src/ldt/ldt/security/forms.py	Thu Dec 22 15:49:42 2011 +0100
@@ -40,10 +40,15 @@
                 elif cls_name == 'group':
                     new_list.append(groups.get(id=id))
             return new_list
-         
+        
         new_read_list = create_real_lists(read_list, users, groups)        
         new_write_list = create_real_lists(write_list, users, groups)
 
         self.cleaned_data["read_list"] = new_read_list
         self.cleaned_data["write_list"] = new_write_list
+        
+        if self.data.get("share", False) == "True":
+            self.cleaned_data["share"] = True
+        else:
+            self.cleaned_data["share"] = False
         return self.cleaned_data
\ No newline at end of file