--- a/src/ldt/ldt/ldt_utils/models.py Wed Nov 30 14:15:17 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/models.py Wed Nov 30 17:37:42 2011 +0100
@@ -386,7 +386,6 @@
assign('change_project', user, project)
for content in contents:
project.contents.add(content)
- project.save()
return create_ldt(project, user)
def copy_project(self, user, title, description='', group=None):
@@ -398,7 +397,6 @@
assign('view_project', group, project)
for content in self.contents.all():
project.contents.add(content)
- project.save()
return project
def publish(self):
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html Wed Nov 30 14:15:17 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html Wed Nov 30 17:37:42 2011 +0100
@@ -8,8 +8,7 @@
{{ block.super }}
<script type="text/javascript" src="{{LDT_MEDIA_PREFIX}}/js/jquery.nyroModal.min.js"></script>
<script type="text/javascript" src="{{LDT_MEDIA_PREFIX}}js/projectscontents.js" ></script>
- {{ content_form.media.js }}
-
+ {{ content_form.media.js }}
{% endblock %}
{% block css_import %}
@@ -42,13 +41,7 @@
is_admin.prop('checked', false);
}
});
-
- var user_filter_url = "{% url ldt.ldt_utils.views.users_filter filter='__FILTER__' id_group='__ID_GROUP__'%}";
-
- input_list_init = [
- {'input_selector':"#searchusersinput", 'container_selector':"#userslistcontainer", 'url':user_filter_url}
- ];
- searchFieldInit(input_list_init);
+
}
$(document).ready(function() {
@@ -75,6 +68,13 @@
members_checkboxes.trigger("change");
});
+ var user_filter_url = "{% url ldt.ldt_utils.views.users_filter filter='__FILTER__' id_group='__ID_GROUP__'%}";
+
+ input_list_init = [
+ {'input_selector':"#searchusersinput", 'container_selector':"#userslistcontainer", 'url':user_filter_url}
+ ];
+ searchFieldInit(input_list_init);
+
init_events(null);
@@ -85,11 +85,11 @@
{% block body %}
- <div id="add_contribution" class="span-12 last">
+ <div id="add_group" class="span-12 last">
<div class="projectscontentstitle span-12 last">{% if group_id %}{% trans "Update a group" %}{% else %}{% trans "Create a group" %}{% endif %}</div>
- <div class="span-4 last searchfielddiv" style="margin-top: 15px;float: right;" >
- <div class="searchfield rounded"><input style="background: white; width: 100px;" id="searchusersinput" class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" type="text" /><img id="projectsajaxloader" class="searchajaxloader" src="{{LDT_MEDIA_PREFIX}}/img/ajax-loader-16x16.gif" alt="loader"/><img id="projecsclear" class="searchclear" src="{{LDT_MEDIA_PREFIX}}img/clear-left.png"/></div>
+ <div class="span-4 last searchfielddiv">
+ <div class="searchfield rounded"><input id="searchusersinput" class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" type="text" /><img id="projectsajaxloader" class="searchajaxloader" src="{{LDT_MEDIA_PREFIX}}/img/ajax-loader-16x16.gif" alt="loader"/><img id="projecsclear" class="searchclear" src="{{LDT_MEDIA_PREFIX}}img/clear-left.png"/></div>
</div>
<form action="{% if group_id %}{% url ldt.ldt_utils.views.update_group group_id %} {% else %}{% url ldt.ldt_utils.views.create_group %}{% endif %}" method="POST" {% if target_parent %}target="_parent"{% endif %}>
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Wed Nov 30 14:15:17 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Wed Nov 30 17:37:42 2011 +0100
@@ -68,7 +68,7 @@
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
- width: "630",
+ width: "665",
height: "150"
});
@@ -91,11 +91,11 @@
<label for="description" class="projectdesc">{% trans "Description :" %}</label>
{{form.description}}
- <div id="lefttable" class="span-11">
+ <div id="lefttable" class="span-9">
<label>{% trans "List of contents" %}</label>
- <div class="span-11 last" id="ldtcreatecontentslistcontainer">
- <div class="span-11 last projectscontentstablediv" id="ldtcreatecontentstablediv">
+ <div class="span-8 last" id="ldtcreatecontentslistcontainer">
+ <div class="span-8 last projectscontentstablediv" id="ldtcreatecontentstablediv">
<table class="projectscontentstable">
<tr class="projectscontentsheader last" id="contentslistheader">
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/permissions.html Wed Nov 30 14:15:17 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/permissions.html Wed Nov 30 17:37:42 2011 +0100
@@ -6,6 +6,7 @@
$("#grouplist tr").each(function (e) {
if ($("input[type=checkbox]", $(this)).is(":checked")) {
var perm = $(".perm_field", $(this)).val();
+ var line = $(this).closest("tr");
if (perm) {
$(".perm_read, .perm_write", $(this)).addClass("pointer");
}
@@ -39,6 +40,8 @@
$(".checkbox_group").bind("change", function() {
var line = $(this).closest('tr');
+ $(".perm_read, .perm_write", line).removeClass("bold");
+
if (!$(this).is(":checked")) {
$(".bold", line).removeClass('bold');
$(".perm_read, .perm_write", line).removeClass('pointer');
@@ -55,11 +58,11 @@
</script>
-<div id="righttable" class="span-11">
+<div id="righttable" class="span-9">
<label>{% trans "group list"%}</label>
- <div class="span-10 last" id="ldtcreatecontentslistcontainer">
- <div class="span-10 last projectscontentstablediv" id="ldtcreatecontentstablediv">
+ <div class="span-8 last" id="ldtcreatecontentslistcontainer">
+ <div class="span-8 last projectscontentstablediv" id="ldtcreatecontentstablediv">
<table class="projectscontentstable">
{{ management_form }}
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/userslist.html Wed Nov 30 14:15:17 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/userslist.html Wed Nov 30 17:37:42 2011 +0100
@@ -19,7 +19,11 @@
{% for user in user_list %}
<td class="cellcheckbox"><input type="checkbox" name="members_list" value="{{ user.id }}" title="{% trans "Check to include this user in the group" %}" {% if user.member %}checked="checked"{% endif %}/></td>
<td class="contenttitle">{{ user.username }}</td>
- <td class="cellcheckbox"><input type="checkbox" name="admin_list" value="{{ user.id }}" title="{% trans "Check to give this user the right to change the group" %}" {% if user.admin %}checked="checked"{% endif %}/></td>
+ <td class="cellcheckbox">
+ {% if user.get_profile.is_regular %}
+ <input type="checkbox" name="admin_list" value="{{ user.id }}" title="{% trans "Check to give this user the right to change the group" %}" {% if user.admin %}checked="checked"{% endif %}/>
+ {% endif %}
+ </td>
</tr>
{% endfor %}
--- a/src/ldt/ldt/ldt_utils/views.py Wed Nov 30 14:15:17 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/views.py Wed Nov 30 17:37:42 2011 +0100
@@ -66,10 +66,11 @@
def groups(request):
# get list of all published projects
- group_list = request.user.groups.exclude(name=settings.PUBLIC_GROUP_NAME) #@UndefinedVariable
+ group_list = request.user.groups.exclude(name=settings.PUBLIC_GROUP_NAME)
checker = ObjectPermissionChecker(request.user)
- group_list = list(group_list.all())
+ group_list = sorted(group_list.all(), key=lambda group: group.name.lower())
+
for group in group_list:
if checker.has_perm('change_group', group):
group.change = True
@@ -233,6 +234,7 @@
group_list = request.user.groups.all()
group_list = group_list.exclude(name=settings.PUBLIC_GROUP_NAME)
+ group_list = sorted(group_list.all(), key=lambda group: group.name.lower())
checker = ObjectPermissionChecker(request.user)
for g in group_list:
if checker.has_perm('change_group', g):
@@ -379,8 +381,7 @@
# id_list = filter(lambda id: id in id_list, ids_editions)
contentList = Content.objects.filter(iri_id__in=id_list) #@UndefinedVariable
- projectList = Project.safe_objects.filter(ldt_id__in=projId_list)
-
+ projectList = Project.safe_objects.filter(ldt_id__in=projId_list)
ldtgen = LdtUtils()
# generate_ldt(contentList, title=u"", author=u"IRI Web", web_url=u"", startSegment=None, projects=None):
@@ -455,16 +456,15 @@
form = LdtAddForm(request.POST)
form_status = "none"
contents = Content.safe_objects.all()
-
group_form = permission_formset(request.POST)
- management_form = None
if form.is_valid() and group_form.is_valid():
user = request.user
- project = Project.create_project(title=form.cleaned_data['title'], user=user, contents=form.cleaned_data['contents'],
- description=form.cleaned_data['description'])
-
+ project = Project.create_project(title=form.cleaned_data['title'], user=user,
+ contents=form.cleaned_data['contents'],
+ description=form.cleaned_data['description'])
+
assign_object_to_groups(project, group_form.cleaned_data)
form_status = "saved"
is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
@@ -613,7 +613,7 @@
doc = ldtgen.generate_init([url], 'ldt.ldt_utils.views.' + method, None)
library = doc.xpath('/iri/files/library')[0]
- for c in Content.objects.all():
+ for c in Content.safe_objects.all():
elem = lxml.etree.SubElement(library, 'file')
elem.set('src', c.iri_url())
elem.set('video', c.videopath)
@@ -1342,7 +1342,7 @@
for user in user_list:
user.groups.add(group)
- if user in admin_list:
+ if user in admin_list and user.get_profile().is_regular:
assign('change_group', user, group)
request.user.groups.add(group)
form_status = 'saved'
@@ -1355,7 +1355,7 @@
@login_required
def update_group(request, group_id):
if not request.user.is_regular:
- return HttpResponseServerError('<h1>User can leave a group.</h1>')
+ return HttpResponseServerError('<h1>User can not leave a group.</h1>')
group = get_object_or_404(Group, id=group_id)
query = Q(id=settings.ANONYMOUS_USER_ID) | Q(id=request.user.id) | Q(is_superuser=True)
@@ -1393,7 +1393,7 @@
for user in User.objects.all().exclude(username=request.user.username):
if user in members_list:
group.user_set.add(user)
- if user in admin_list:
+ if user in admin_list and user.get_profile().is_regular:
assign('change_group', user, group)
else:
remove_perm('change_group', user, group)
--- a/src/ldt/ldt/security/middleware.py Wed Nov 30 14:15:17 2011 +0100
+++ b/src/ldt/ldt/security/middleware.py Wed Nov 30 17:37:42 2011 +0100
@@ -1,13 +1,8 @@
-from django.conf import settings
from django.core.exceptions import MiddlewareNotUsed
from ldt.security.utils import protect_models, unprotect_models, _thread_locals
class SecurityMiddleware(object):
- def __init__(self):
- if not hasattr(settings, 'USE_GROUP_PERMISSIONS') or not settings.USE_GROUP_PERMISSIONS:
- raise MiddlewareNotUsed()
-
def process_request(self, request):
if not hasattr(_thread_locals, 'user'):
_thread_locals.user = request.user
--- a/src/ldt/ldt/security/utils.py Wed Nov 30 14:15:17 2011 +0100
+++ b/src/ldt/ldt/security/utils.py Wed Nov 30 17:37:42 2011 +0100
@@ -15,9 +15,12 @@
return getattr(_thread_locals, 'user', None)
def protect_models():
- user = get_current_user()
- for cls in ToProtect.get_models():
- protect_model(cls, user)
+ cls_list = ToProtect.get_models()
+ if cls_list:
+ user = get_current_user()
+ for cls in ToProtect.get_models():
+ protect_model(cls, user)
+
def unprotect_models():
for cls in ToProtect.get_models():
@@ -44,8 +47,8 @@
cls.old_save = cls.save
cls.old_delete = cls.delete
class_name = cls.__name__.lower()
- cls.save = change_security(user, class_name)(cls.save)
- cls.delete = change_security(user, class_name)(cls.delete)
+ cls.save = change_security(class_name)(cls.save)
+ cls.delete = change_security(class_name)(cls.delete)
def unprotect_model(cls):
if hasattr(cls, 'old_save'):
@@ -55,12 +58,12 @@
del cls.old_delete
cls.safe_objects.user = None
-def change_security(user, cls_name):
+def change_security(cls_name):
def wrapper(func):
def wrapped(self, *args, **kwargs):
- if self.pk and not user.has_perm('change_%s' % cls_name, self):
- raise AttributeError('User %s is not allowed to change object %s' % (user, self))
+ if self.pk and not get_current_user().has_perm('change_%s' % cls_name, self):
+ raise AttributeError('User %s is not allowed to change object %s' % (get_current_user(), self))
return func(self, *args, **kwargs)
return wrapped
@@ -98,8 +101,7 @@
else:
obj.change = False
- return obj_list
-
+ return obj_list
def assign_object_to_groups(object, permissions):
name = object.__class__.__name__.lower()
--- a/src/ldt/ldt/static/ldt/css/ldtform.css Wed Nov 30 14:15:17 2011 +0100
+++ b/src/ldt/ldt/static/ldt/css/ldtform.css Wed Nov 30 17:37:42 2011 +0100
@@ -4,7 +4,7 @@
min-width: 0;
}
-#add_content, #add_contribution {
+#add_content, #add_contribution, #add_group {
padding: 10px;
}
@@ -36,6 +36,16 @@
border: none;
}
+#add_group .searchfieldinput {
+ background: white;
+ width: 100px;
+}
+
+#add_group .searchfielddiv {
+ margin-top: 15px;
+ float: right;
+}
+
label {
display: block;
margin-top: 0.5em;
--- a/src/ldt/ldt/static/ldt/css/workspace.css Wed Nov 30 14:15:17 2011 +0100
+++ b/src/ldt/ldt/static/ldt/css/workspace.css Wed Nov 30 17:37:42 2011 +0100
@@ -162,9 +162,6 @@
padding-right: 16px;
}
-.permissionscol {
-}
-
.cellimg {
width: 18px;
text-align: center;
@@ -205,4 +202,4 @@
.next_icon, .grouplink {
display: none;
-}
+}
\ No newline at end of file