# HG changeset patch # User verrierj # Date 1320762080 -3600 # Node ID e5e5c4aeede96d585f19027abd7ec7945c8a0a18 # Parent 331f767d89961a083e1fb85d045bdbebb0eea971 User can leave groups and code is cleaner when updating project permissions diff -r 331f767d8996 -r e5e5c4aeede9 src/ldt/ldt/ldt_utils/forms.py --- a/src/ldt/ldt/ldt_utils/forms.py Mon Nov 07 16:24:17 2011 +0100 +++ b/src/ldt/ldt/ldt_utils/forms.py Tue Nov 08 15:21:20 2011 +0100 @@ -21,6 +21,10 @@ model = Project exclude = ("ldt_id", "ldt", "created_by", "changed_by", "creation_date", "modification_date", "state", "owner") +class PermissionForm(forms.Form): + share = forms.BooleanField(required=False, widget=forms.CheckboxInput(attrs={'class':'checkbox_group'})) + perms = forms.CharField(widget=forms.HiddenInput(attrs={'class':'perm_field'})) + group = forms.IntegerField(required=False, widget=forms.HiddenInput()) class ReindexForm(forms.Form): contents = forms.ModelMultipleChoiceField(Content.objects.all()) #@UndefinedVariable @@ -40,7 +44,6 @@ class ContentForm(forms.ModelForm): - #iri_id = forms.CharField(max_length=1024, widget=forms.HiddenInput, initial=generate_uuid) iriurl = forms.CharField(max_length=1024, widget=forms.HiddenInput, required=False) content_creation_date = forms.SplitDateTimeField(widget=ldt_widgets.LdtSplitDateTime, required=False, label=_("content.content_creation_date")) diff -r 331f767d8996 -r e5e5c4aeede9 src/ldt/ldt/ldt_utils/models.py --- a/src/ldt/ldt/ldt_utils/models.py Mon Nov 07 16:24:17 2011 +0100 +++ b/src/ldt/ldt/ldt_utils/models.py Tue Nov 08 15:21:20 2011 +0100 @@ -383,8 +383,6 @@ assign('change_project', user, project) for content in contents: project.contents.add(content) - for group in groups: - assign('view_project', group, project) project.save() return create_ldt(project, user) diff -r 331f767d8996 -r e5e5c4aeede9 src/ldt/ldt/ldt_utils/security.py --- a/src/ldt/ldt/ldt_utils/security.py Mon Nov 07 16:24:17 2011 +0100 +++ b/src/ldt/ldt/ldt_utils/security.py Tue Nov 08 15:21:20 2011 +0100 @@ -1,42 +1,13 @@ -#from django.conf import settings -#from ldt.ldt_utils.models import Project -# -# -#def group_security(func): -# def wrapper(request, *args, **kwargs): -# if settings.USE_GROUP_PERMISSIONS: -# if not request.user: -# raise AttributeError("A user should be set in the request.") -# -# if Project.objects_safe.has_user(): -# response = func(request, *args, **kwargs) -# else: -# Project.objects_safe.check_perm_for(request.user) -# -# old_project_manager = Project.objects -# old_save_method = Project.save -# Project.save = save_security(request.user)(Project.save) -# Project.objects = Project.objects_safe -# -# response = func(request, *args, **kwargs) -# -# Project.objects = old_project_manager -# Project.save = old_save_method -# Project.objects_safe.stop_checking() -# -# else: -# response = func(request, *args, **kwargs) -# return response -# return wrapper -# -# -#def save_security(user): -# def wrapper(func): -# def wrapped(self, *args, **kwargs): -# -# if not user.has_perm('change_project', self): -# raise AttributeError('User %s does not have sufficient permissions to change object %s' % (user, self)) -# -# return func(self, *args, **kwargs) -# return wrapped -# return wrapper \ No newline at end of file +from django.contrib.auth.models import Group +from guardian.shortcuts import assign, remove_perm + +def assign_project_to_groups(project, permissions): + for elem in permissions: + group = Group.objects.get(id=elem['group']) + if elem['share']: + assign('view_project', group, project) + if elem['perms'] == 'write': + assign('change_project', group, project) + else: + remove_perm('view_project', group, project) + remove_perm('change_project', group, project) diff -r 331f767d8996 -r e5e5c4aeede9 src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html --- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Mon Nov 07 16:24:17 2011 +0100 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Tue Nov 08 15:21:20 2011 +0100 @@ -49,26 +49,34 @@ {% block js_declaration %} {{ block.super }}