--- 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)