Merge with f051a2432970e5bbda2fcff5625d4c22d9b56368
authorverrierj
Thu, 09 Feb 2012 15:14:23 +0100
changeset 550 2cea1d92b19d
parent 549 0313c23ffe7e (diff)
parent 548 f051a2432970 (current diff)
child 551 c447d863b6ad
Merge with f051a2432970e5bbda2fcff5625d4c22d9b56368
--- a/src/ldt/ldt/ldt_utils/views/project.py	Thu Feb 09 15:10:05 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/project.py	Thu Feb 09 15:14:23 2012 +0100
@@ -142,8 +142,7 @@
                  
                 picture_form.model = project
                 picture_form.save()   
-                if form.cleaned_data["share"]:
-                    assign_perm_to_obj(project, form.cleaned_data["read_list"], form.cleaned_data["write_list"], request.user)
+                assign_perm_to_obj(project, form.cleaned_data["read_list"], form.cleaned_data["write_list"], request.user)
                 form_status = "saved"
     else:
         form = AddProjectForm({'title':unicode(project.title), 'description':unicode(project.get_description())})
--- a/src/ldt/ldt/security/command.py	Thu Feb 09 15:10:05 2012 +0100
+++ b/src/ldt/ldt/security/command.py	Thu Feb 09 15:14:23 2012 +0100
@@ -1,7 +1,7 @@
 from django.conf import settings
 from django.contrib.auth.models import Group, User
 from ldt.ldt_utils.models import Project, Content
-from guardian.shortcuts import assign
+from guardian.shortcuts import assign, remove_perm
 from ldt.management.utils import show_progress
 
 def set_default_permissions(verbose=False, is_migration=False, orm=None):
@@ -24,33 +24,32 @@
     everyone, created = Group.objects.get_or_create(name=settings.PUBLIC_GROUP_NAME)     
      
     if verbose:   
-        i = 1
         total = list_model['Project'].objects.count()
         
-    for proj in list_model['Project'].objects.all():
+    for i, proj in enumerate(list_model['Project'].objects.all()):
         
         if proj.state == 2:
-            proj.publish()
+            assign('ldt_utils.view_project', everyone, proj)
         else:
-            proj.unpublish()
+            remove_perm('ldt_utils.view_project', everyone, proj)
+        
+        assign('ldt_utils.view_project', proj.owner, proj)
+        assign('ldt_utils.change_project', proj.owner, proj)            
             
         if verbose:
-            show_progress(i, total, "Assign permissions to projects", 40, writer)
-            i += 1
+            writer = show_progress(i, total, "Assign permissions to projects", 40, writer)
         
     for published_proj in list_model['Project'].objects.filter(state=2):
         assign('ldt_utils.view_project', everyone, published_proj)
     
     if verbose:    
-        i = 1
         writer = None
         total = list_model['User'].objects.count()
         
-    for user in list_model['User'].objects.all():
+    for i, user in enumerate(list_model['User'].objects.all()):
         everyone.user_set.add(user) 
         if verbose:
-            show_progress(i, total, "Assign permissions to groups", 40, writer)
-            i += 1           
+            writer = show_progress(i, total, "Assign permissions to groups", 40, writer)         
           
         for group in user.groups.exclude(name=settings.PUBLIC_GROUP_NAME):
             for proj in list_model['Project'].objects.filter(owner=user):
@@ -63,4 +62,5 @@
                 
     for admin in list_model['User'].objects.filter(is_superuser=True):
         for g in list_model['Group'].objects.all():
-            g.user_set.add(admin)
\ No newline at end of file
+            g.user_set.add(admin)
+            
\ No newline at end of file
--- a/src/ldt/ldt/security/utils.py	Thu Feb 09 15:10:05 2012 +0100
+++ b/src/ldt/ldt/security/utils.py	Thu Feb 09 15:14:23 2012 +0100
@@ -1,7 +1,8 @@
 from django.conf import settings
 from django.contrib.contenttypes.models import ContentType
+from django.core.cache import cache
 from guardian.shortcuts import assign, remove_perm, get_users_with_perms, get_groups_with_perms, get_objects_for_user
-from cache import get_cached_userlist
+from cache import get_cached_userlist, cached_assign
 from ldt.security import change_security, get_current_user
 import types
   
@@ -75,11 +76,11 @@
     old_groups = get_groups_with_perms(object)
     
     for elem in read_list:
-        assign('view_%s' % name, elem, object)
+        cached_assign('view_%s' % name, elem, object)
         if elem in write_list:
-            assign('change_%s' % name, elem, object)
+            cached_assign('change_%s' % name, elem, object)
         else:
-            remove_perm('change_%s' % name, elem, object)            
+            remove_perm('change_%s' % name, elem, object) 
                 
     def remove_perms(new_list, old_list, obj, name):
         for e in old_list:
@@ -88,7 +89,9 @@
                 remove_perm('change_%s' % name, e, obj)
                 
     remove_perms(read_list, old_users, object, name)
-    remove_perms(read_list, old_groups, object, name) 
+    remove_perms(read_list, old_groups, object, name)
+    cache.delete('userlist')           
+ 
     
 def get_userlist(user, filter=None):
     user_list = get_cached_userlist().exclude(id=user.id)