Improve css + fix minor bugs
authorverrierj
Wed, 30 Nov 2011 17:37:42 +0100
changeset 264 47c83e79e3c4
parent 263 eba92ea32281
child 265 491d057cbfd2
Improve css + fix minor bugs
src/ldt/ldt/ldt_utils/models.py
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/permissions.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/userslist.html
src/ldt/ldt/ldt_utils/views.py
src/ldt/ldt/security/middleware.py
src/ldt/ldt/security/utils.py
src/ldt/ldt/static/ldt/css/ldtform.css
src/ldt/ldt/static/ldt/css/workspace.css
--- 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