# HG changeset patch # User verrierj # Date 1323425835 -3600 # Node ID 80375a7b7e1484b8da60f1b433372c1d7e2f2e5a # Parent 23a756e0bfee789ad8e1ef5b30547349d1308db1 Improve permissions of medias + fix css diff -r 23a756e0bfee -r 80375a7b7e14 src/ldt/ldt/ldt_utils/migrations/0005_add_permissions.py --- a/src/ldt/ldt/ldt_utils/migrations/0005_add_permissions.py Thu Dec 08 16:04:44 2011 +0100 +++ b/src/ldt/ldt/ldt_utils/migrations/0005_add_permissions.py Fri Dec 09 11:17:15 2011 +0100 @@ -33,6 +33,9 @@ for content in Content.objects.all(): if checker.has_perm('view_content', content): assign('view_media', user, content.media_obj) + + for c in Content.objects.all(): + c.is_public = True def add_perm(self, orm, model_name): diff -r 23a756e0bfee -r 80375a7b7e14 src/ldt/ldt/ldt_utils/models.py --- a/src/ldt/ldt/ldt_utils/models.py Thu Dec 08 16:04:44 2011 +0100 +++ b/src/ldt/ldt/ldt_utils/models.py Fri Dec 09 11:17:15 2011 +0100 @@ -320,9 +320,11 @@ if self.pk: everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME) if value: - assign('view_content', everyone, self) + assign('view_content', everyone, self) + assign('view_media', everyone, self) else: remove_perm('view_content', everyone, self) + remove_perm('vew_media', everyone, self.media_obj) return locals() diff -r 23a756e0bfee -r 80375a7b7e14 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 Thu Dec 08 16:04:44 2011 +0100 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Fri Dec 09 11:17:15 2011 +0100 @@ -70,8 +70,7 @@
{% if ldt_id %}{% trans "Update your project" %}{% else %}{% trans "Create your project" %}{% endif %}
{% csrf_token %} - - +
@@ -118,7 +117,7 @@
-
+
{% if ldt_id %} diff -r 23a756e0bfee -r 80375a7b7e14 src/ldt/ldt/ldt_utils/views.py --- a/src/ldt/ldt/ldt_utils/views.py Thu Dec 08 16:04:44 2011 +0100 +++ b/src/ldt/ldt/ldt_utils/views.py Fri Dec 09 11:17:15 2011 +0100 @@ -146,7 +146,7 @@ if is_owner: owner = None try: - owner = request.user #@UndefinedVariable + owner = request.user except: return HttpResponseServerError("

User not found

") query &= Q(owner=owner) @@ -167,10 +167,10 @@ project_list = get_objects_for_group(grp, 'ldt_utils.view_project').filter(query) show_username = True else: - project_list = Project.safe_objects.filter(query) #@UndefinedVariable + project_list = Project.safe_objects.filter(query) project_list = add_change_attr(request.user, project_list) - # Template depends on the projects's status + if status == 2: url_templ = "ldt/ldt_utils/partial/publishedprojectslist.html" else: @@ -213,11 +213,7 @@ else: content_list = Content.safe_objects.all() #@UndefinedVariable - checker = ObjectPermissionChecker(request.user) - - for c in content_list: - if checker.has_perm('ldt_utils.change_content', c): - c.change = True + content_list = add_change_attr(request.user, content_list) return render_to_response("ldt/ldt_utils/partial/contentslist.html", {'contents': content_list}, @@ -1092,7 +1088,7 @@ if not mimetype: mimetype = mimetypes.guess_type(cleaned_data['src']) cleaned_data['mimetype_field'] = mimetype - media, created = Media.objects.get_or_create(src=cleaned_data['src'], defaults=cleaned_data) #@UndefinedVariable + media, created = Media.safe_objects.get_or_create(src=cleaned_data['src'], defaults=cleaned_data) #@UndefinedVariable assign('view_media', request.user, media) else: media = None @@ -1125,9 +1121,13 @@ if content_form.cleaned_data['is_public']: assign('view_content', everyone, content) + if media: + assign('view_media', everyone, media) else: remove_perm('view_content', everyone, content) assign_perm_to_obj(content, content_form.cleaned_data['read_list'], content_form.cleaned_data['write_list'], request.user) + if media: + assign_perm_to_obj(media, content_form.cleaned_data['read_list'], content_form.cleaned_data['write_list'], request.user) if not created: for attribute in ('iriurl', 'title', 'description', 'duration', 'content_creation_date', 'tags', 'media_obj'): setattr(content, attribute, content_defaults[attribute]) @@ -1271,14 +1271,13 @@ def get_group_projects(request): # Get group, user and project_list - grp = Group.objects.get(id=request.POST["id_group"]) #@UndefinedVariable + grp = Group.objects.get(id=request.POST["id_group"]) everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME) project_list = get_objects_for_group(grp, 'ldt_utils.view_project') | get_objects_for_group(everyone, 'ldt_utils.view_project').filter(owner__in=[grp]) project_list = add_change_attr(request.user, project_list) is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1); - - # render list + return render_to_response("ldt/ldt_utils/partial/projectslist.html", {'projects': project_list, 'show_username':True, 'is_gecko': is_gecko, 'group_id': grp.id}, @@ -1304,14 +1303,14 @@ group = Group.objects.create(name=name) group.save() assign('change_group', request.user, group) - + request.user.groups.add(group) + for elem in members_list: if hasattr(elem, 'username'): elem.groups.add(group) if elem in admin_list: assign('change_group', elem, group) - request.user.groups.add(group) form_status = 'saved' else: diff -r 23a756e0bfee -r 80375a7b7e14 src/ldt/ldt/security/forms.py --- a/src/ldt/ldt/security/forms.py Thu Dec 08 16:04:44 2011 +0100 +++ b/src/ldt/ldt/security/forms.py Fri Dec 09 11:17:15 2011 +0100 @@ -4,7 +4,6 @@ class LazyMultipleChoiceField(forms.MultipleChoiceField): - # Should do some checking here def validate(self, value): pass diff -r 23a756e0bfee -r 80375a7b7e14 src/ldt/ldt/security/utils.py --- a/src/ldt/ldt/security/utils.py Thu Dec 08 16:04:44 2011 +0100 +++ b/src/ldt/ldt/security/utils.py Fri Dec 09 11:17:15 2011 +0100 @@ -1,7 +1,7 @@ from django.conf import settings from django.contrib.contenttypes.models import ContentType from guardian.core import ObjectPermissionChecker -from guardian.shortcuts import assign, remove_perm, get_users_with_perms, get_groups_with_perms, get_objects_for_group +from guardian.shortcuts import assign, remove_perm, get_users_with_perms, get_groups_with_perms try: from threading import local @@ -85,6 +85,10 @@ return xml def add_change_attr(user, obj_list): + """ + Add a change attribute set to True to objects of obj_list + if permissions change_object is set with respect to user. + """ if len(obj_list) == 0: return [] @@ -92,17 +96,20 @@ ctype = ContentType.objects.get(model=model_name) cls = ctype.model_class() - checker = ObjectPermissionChecker(user) + if model_name in [cls_name.lower() for cls_name in settings.USE_GROUP_PERMISSIONS]: + checker = ObjectPermissionChecker(user) + else: + checker = None + perm_name = "%s.change_%s" % (cls._meta.app_label, model_name) for obj in obj_list: - if checker.has_perm(perm_name, obj): + if not checker or checker.has_perm(perm_name, obj): obj.change = True else: obj.change = False - return obj_list - + return obj_list def assign_perm_to_obj(object, read_list, write_list, owner): name = object.__class__.__name__.lower() @@ -124,8 +131,7 @@ 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) def get_userlist_model(object, owner): users = get_users_with_perms(object, attach_perms=True) @@ -159,7 +165,6 @@ return [users_list + groups_list, admin_users + admin_groups] - def get_userlist_group(group, user): members = group.user_set.all() admin = get_users_with_perms(group) @@ -176,7 +181,3 @@ admin_list = [{'name': e.username, 'id': e.id, 'type': 'user'} for e in admin] return [member_list, admin_list] - - - - diff -r 23a756e0bfee -r 80375a7b7e14 src/ldt/ldt/static/ldt/js/multiselect.js --- a/src/ldt/ldt/static/ldt/js/multiselect.js Thu Dec 08 16:04:44 2011 +0100 +++ b/src/ldt/ldt/static/ldt/js/multiselect.js Fri Dec 09 11:17:15 2011 +0100 @@ -1,4 +1,4 @@ -function init_multi_select_events (first_list, sec_list, first_selection, sec_selection, search_input, search_url) { +function init_multi_select_events (first_list, sec_list, first_selection, sec_selection, search_input, search_url, first_list_name, second_list) { var first_list_name = "read_list"; var second_list_name = "write_list"; @@ -38,11 +38,11 @@ }); $("#removeaux").click(function () { - var users = get_selected_elems(sec_list); + var elems = get_selected_elems(sec_list); - for (var i=0; i < users.length; i++) { - $("option[value=" + users[i] + "]", sec_list).css('color', 'black'); - $("input[value=" + users[i] + "]", sec_selection).remove(); + for (var i=0; i < elems.length; i++) { + $("option[value=" + elems[i] + "]", sec_list).css('color', 'black'); + $("input[value=" + elems[i] + "]", sec_selection).remove(); } }); diff -r 23a756e0bfee -r 80375a7b7e14 src/ldt/ldt/static/ldt/js/projectscontents.js --- a/src/ldt/ldt/static/ldt/js/projectscontents.js Thu Dec 08 16:04:44 2011 +0100 +++ b/src/ldt/ldt/static/ldt/js/projectscontents.js Fri Dec 09 11:17:15 2011 +0100 @@ -192,7 +192,7 @@ }); nm.store.iframe.width(730); - nm.store.iframe.height(820); + nm.store.iframe.height(830); } } }); @@ -227,7 +227,7 @@ }); nm.store.iframe.width(730); - nm.store.iframe.height(820); + nm.store.iframe.height(830); } } }); @@ -280,7 +280,7 @@ function init_events_base_projects(base_node, embed_url, searchprojectfilterurl, publishprojecturl, unpublishprojecturl) { init_modal_window ('.ldt_link_open_ldt', 1035, 670, 1025, 660, base_node, searchprojectfilterurl); - init_modal_window ('.ldt_link_create_project', 800, 700, 820, 690, base_node, searchprojectfilterurl); + init_modal_window ('.ldt_link_create_project', 740, 650, 820, 640, base_node, searchprojectfilterurl); init_modal_window ('.ldt_link_copy_project', 500, 150, 500, 150, base_node, searchprojectfilterurl); $('.publishedproject', base_node).click(function(e) { @@ -331,8 +331,8 @@ $('.projecttitlelink').nyroModal({ filters: ['iframe'], sizes: { - minW: '800', - minH: '710' + minW: '740', + minH: '650' }, closeOnClick:false, callbacks: { @@ -349,7 +349,7 @@ }); nm.store.iframe.width(820); - nm.store.iframe.height(700); + nm.store.iframe.height(640); } } });