# HG changeset patch # User verrierj # Date 1328796863 -3600 # Node ID 2cea1d92b19db9ddd24a51801f9dda7b929a0bf2 # Parent 0313c23ffe7e89363606d56510e79d9968ef990a# Parent f051a2432970e5bbda2fcff5625d4c22d9b56368 Merge with f051a2432970e5bbda2fcff5625d4c22d9b56368 diff -r f051a2432970 -r 2cea1d92b19d src/ldt/ldt/ldt_utils/views/project.py --- 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())}) diff -r f051a2432970 -r 2cea1d92b19d src/ldt/ldt/security/command.py --- 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 diff -r f051a2432970 -r 2cea1d92b19d src/ldt/ldt/security/utils.py --- 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)