Add user search bar during group edition
authorverrierj
Tue, 29 Nov 2011 16:04:28 +0100
changeset 261 14b59dcd2731
parent 260 3d9cb9b6ff8d
child 262 1105a5ed9f8f
Add user search bar during group edition
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/userslist.html
src/ldt/ldt/ldt_utils/urls.py
src/ldt/ldt/ldt_utils/views.py
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html	Tue Nov 29 12:08:11 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html	Tue Nov 29 16:04:28 2011 +0100
@@ -6,8 +6,10 @@
 
 {% block js_import %}
 	{{ block.super }}
-    <script type="text/javascript" src="{{LDT_MEDIA_PREFIX}}/js/jquery.nyroModal.min.js"></script>    
-	{{ content_form.media.js }}
+    <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 }}   
+
 {% endblock %}
 
 {% block css_import %}
@@ -31,7 +33,7 @@
 		var uncheck_all = '{% trans "uncheck all" %}';
 		
 		$("#check_projects").attr('title', uncheck_all);
-		$("#check_projects").change(function () {
+		$("#check_projects").live("change", function () {
 			var members_checkboxes = $("input[name=members_list]");
 			
 			if ($("#check_projects").is(":checked")) {
@@ -50,7 +52,7 @@
 			var is_member = $('input[name=members_list]', line)
 			
 			if ($(this).is(':checked') && !is_member.is(':checked')) {
-				is_member.attr('checked', 'checked');
+				is_member.prop('checked', 'checked');
 			}			
 		});
 		
@@ -63,48 +65,40 @@
 			}	
 		});
 				
+		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);
+						
 	});
 	</script>
 
 {% endblock %}
 
 {% block body %}
+				 
 	<div id="add_contribution" 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>
+	
 	<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 %}>
 	{% csrf_token %} 
 	<input type="hidden" name="form_status" value="{{form_status}}" id="project_form_status" />
+	<input type="hidden" name="id_group" value="{{ group_id }}" id="id_group"/>
 	<label for="name">{% trans "Name" %}:</label>
 	{{form.name}}
 	{% for error in form.errors.name %}
 	<span class="error">{{ error }}</span>
 	{% endfor %}
-	<label>{% trans "List of members" %}:</label>	
-	<div class="span-12 last projectscontentsdiv" id="ldtcreatecontentslistcontainer">
-		<div class="span-12 last projectscontentstablediv" id="ldtcreatecontentstablediv">
-			<table class="projectscontentstable">
-			
-				<tr class="projectscontentsheader last" id="contentslistheader">
-					<td class="cellcheckbox">
-					{% if user_list|length > 1 %}
-						<input class="selectallprojects" id="check_projects" type="checkbox" />	 
-					{% endif %}
-					</td>				
-					<td class="projectcontentsheadertitle">{% trans "name" %}</td>
-					<td class="projectcontentsheadertitle">{% trans "admin" %}</td>
-				</tr>				
-			
-			    <tbody class="projectscontentsbody">
-				{% 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>
-					 </tr>
-				{% endfor %} 			
-					
-				</tbody>
-			</table>			
-		</div>	
+	
+	
+	<div id="userslistcontainer">
+		{% include "ldt/ldt_utils/partial/userslist.html" %}
 	</div>
 		
 	<div id="submitcontent-buttons" class="span-12 last">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/userslist.html	Tue Nov 29 16:04:28 2011 +0100
@@ -0,0 +1,29 @@
+{% load i18n %}
+
+<label>{% trans "List of members" %}:</label>	
+<div class="span-12 last projectscontentsdiv" id="ldtcreatecontentslistcontainer">
+	<div class="span-12 last projectscontentstablediv">
+		<table class="projectscontentstable">
+		
+			<tr class="projectscontentsheader last" id="contentslistheader">
+				<td class="cellcheckbox">
+				{% if user_list|length > 1 %}
+					<input class="selectallprojects" id="check_projects" type="checkbox" />	 
+				{% endif %}
+				</td>				
+				<td class="projectcontentsheadertitle">{% trans "name" %}</td>
+				<td class="projectcontentsheadertitle">{% trans "admin" %}</td>
+			</tr>				
+		
+		    <tbody class="projectscontentsbody">
+			{% 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>
+				 </tr>
+			{% endfor %} 			
+				
+			</tbody>
+		</table>			
+	</div>	
+</div>
--- a/src/ldt/ldt/ldt_utils/urls.py	Tue Nov 29 12:08:11 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/urls.py	Tue Nov 29 16:04:28 2011 +0100
@@ -32,6 +32,7 @@
     url(r'^filterprojects/_(?P<filter>[\w\%\_\-\+]*?)/(?P<is_owner>true|false)/(?P<status>\d)/(?P<id_group>.*)$', "views.projects_filter",),
     url(r'^filtercontents/_(?P<filter>[\w\%\_\-\+]*?)/$', "views.contents_filter",),
     url(r'^filtergroups/_(?P<filter>[\w\%\_\-\+]*?)/$', "views.groups_filter",),
+    url(r'filterusers/_(?P<filter>[\w\%\_\-\+]*?)/(?P<id_group>.*)$', "views.users_filter"),
     (r'^embedpopup/?$', "views.popup_embed"),
     url(r'^segment/(?P<project_id>.*)/(?P<content_id>.*)/(?P<ensemble_id>.*)/(?P<cutting_id>.*)/(?P<segment_id>.*)/$', 'views.index_segment'),
     url(r'^segmentInit/(?P<project_id>.*)/(?P<content_id>.*)/(?P<ensemble_id>.*)/(?P<cutting_id>.*)/(?P<segment_id>.*)/$', 'views.init_segment'),
--- a/src/ldt/ldt/ldt_utils/views.py	Tue Nov 29 12:08:11 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/views.py	Tue Nov 29 16:04:28 2011 +0100
@@ -179,6 +179,26 @@
                               {'projects': project_list, 'show_username':show_username,
                                'is_gecko': is_gecko, 'group_id':id_group},
                               context_instance=RequestContext(request))
+    
+def users_filter(request, filter, id_group=None):
+    if filter and len(filter) > 0 and filter[0] == '_':
+        filter = filter[1:]
+    
+    query = Q(id=settings.ANONYMOUS_USER_ID) | Q(id=request.user.id)    
+    filter_query = Q(username__icontains=filter) if filter else Q()    
+    user_list = User.objects.exclude(query).filter(filter_query)  
+    
+    if id_group:
+        group = Group.objects.get(id=id_group)
+        members_list = group.user_set.all()
+        for u in user_list:
+            if u in members_list:
+                u.member = True
+            if u.has_perm('change_group', group):
+                u.admin = True  
+    
+    return render_to_response("ldt/ldt_utils/partial/userslist.html", {'user_list': user_list},
+                              context_instance=RequestContext(request))
 
 @login_required
 def contents_filter(request, filter): 
@@ -1107,8 +1127,7 @@
                     
                 media.save()
             
-            if form_status != "error":
-                #try:
+            if form_status != "error":     
                 content_defaults = {}
                 content_defaults.update(content_form.cleaned_data)
                 content_defaults['media_obj'] = media