+
{% 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);
}
}
});