From 8daf6b3407aebff2d7ea3fcfc6e0bc6b259353e5 Mon Sep 17 00:00:00 2001 From: Dave Cranwell Date: Thu, 13 Feb 2014 15:47:19 +0000 Subject: [PATCH] added user searching --- .../static/wagtailadmin/css/core.less | 1 + .../wagtailadmin/css/layouts/login.less | 4 +- .../wagtaildocs/documents/index.html | 5 -- .../templates/wagtailusers/index.html | 75 ++++++++----------- .../templates/wagtailusers/list.html | 40 ++++++++++ .../templates/wagtailusers/results.html | 15 ++++ wagtail/wagtailusers/views/users.py | 40 ++++++++-- 7 files changed, 123 insertions(+), 57 deletions(-) create mode 100644 wagtail/wagtailusers/templates/wagtailusers/list.html create mode 100644 wagtail/wagtailusers/templates/wagtailusers/results.html diff --git a/wagtail/wagtailadmin/static/wagtailadmin/css/core.less b/wagtail/wagtailadmin/static/wagtailadmin/css/core.less index 7980d678b..5e599cc4a 100644 --- a/wagtail/wagtailadmin/static/wagtailadmin/css/core.less +++ b/wagtail/wagtailadmin/static/wagtailadmin/css/core.less @@ -63,6 +63,7 @@ h2{ } } a{ + outline:none; color:@color-link; text-decoration:none; diff --git a/wagtail/wagtailadmin/static/wagtailadmin/css/layouts/login.less b/wagtail/wagtailadmin/static/wagtailadmin/css/layouts/login.less index 3c523631c..cae9fcb24 100644 --- a/wagtail/wagtailadmin/static/wagtailadmin/css/layouts/login.less +++ b/wagtail/wagtailadmin/static/wagtailadmin/css/layouts/login.less @@ -136,7 +136,6 @@ form{ } } - @media screen and (min-width: @breakpoint-mobile){ .content-wrapper{ float:none; @@ -154,10 +153,11 @@ form{ &:before { content: ''; + width:0px; display: inline-block; height: 100%; vertical-align: middle; - margin-left:-0.3em; + margin-left:-0.4em; } } diff --git a/wagtail/wagtaildocs/templates/wagtaildocs/documents/index.html b/wagtail/wagtaildocs/templates/wagtaildocs/documents/index.html index 41668caee..c640db94b 100644 --- a/wagtail/wagtaildocs/templates/wagtaildocs/documents/index.html +++ b/wagtail/wagtaildocs/templates/wagtaildocs/documents/index.html @@ -8,11 +8,6 @@ var wait = setTimeout(search, 200); $(this).data('timer', wait); }); - // $('a.suggested-tag').click(function() { - // $('#id_q').val($(this).text()); - // search(); - // return false; - // }) var search_current_index = 0; var search_next_index = 0; diff --git a/wagtail/wagtailusers/templates/wagtailusers/index.html b/wagtail/wagtailusers/templates/wagtailusers/index.html index 12e7f193d..63acea8e3 100644 --- a/wagtail/wagtailusers/templates/wagtailusers/index.html +++ b/wagtail/wagtailusers/templates/wagtailusers/index.html @@ -2,51 +2,40 @@ {% load gravatar %} {% block titletag %}Users{% endblock %} {% block bodyclass %}menu-users{% endblock %} -{% block content %} +{% block extra_js %} + +{% endblock %} + +{% block content %} + {% include "wagtailadmin/shared/header.html" with title="Users" add_link="wagtailusers_create" add_text="Add a user" search_url="wagtailusers_index" %}
- - - - - - - - - - - {% for user in users %} - - - - - - - {% endfor %} - -
- Name - {% if ordering == "name" %} - - {% else %} - - {% endif %} - - Username - {% if ordering == "username" %} - - {% else %} - - {% endif %} - LevelStatus
-

- - {{ user.get_full_name|default:user.username }} -

-
{{ user.username }}{% if user.is_superuser %}Admin{% endif %}
{% if user.is_active %}Active{% else %}Inactive{% endif %}
- - {% include "wagtailadmin/shared/pagination_nav.html" with items=users linkurl="wagtailusers_index" %} +
+ {% include "wagtailusers/results.html" %} +
{% endblock %} diff --git a/wagtail/wagtailusers/templates/wagtailusers/list.html b/wagtail/wagtailusers/templates/wagtailusers/list.html new file mode 100644 index 000000000..32733b195 --- /dev/null +++ b/wagtail/wagtailusers/templates/wagtailusers/list.html @@ -0,0 +1,40 @@ +{% load gravatar %} + + + + + + + + + + + {% for user in users %} + + + + + + + {% endfor %} + +
+ Name + {% if ordering == "name" %} + + {% else %} + + {% endif %} + + Username + {% if ordering == "username" %} + + {% else %} + + {% endif %} + LevelStatus
+

+ + {{ user.get_full_name|default:user.username }} +

+
{{ user.username }}{% if user.is_superuser %}Admin{% endif %}
{% if user.is_active %}Active{% else %}Inactive{% endif %}
\ No newline at end of file diff --git a/wagtail/wagtailusers/templates/wagtailusers/results.html b/wagtail/wagtailusers/templates/wagtailusers/results.html new file mode 100644 index 000000000..dbd367aca --- /dev/null +++ b/wagtail/wagtailusers/templates/wagtailusers/results.html @@ -0,0 +1,15 @@ +{% if users %} + {% if is_searching %} +

{{ users|length }} match{{ users|pluralize:"es" }}

+ {% endif %} + + {% include "wagtailusers/list.html" %} + + {% include "wagtailadmin/shared/pagination_nav.html" with items=users is_searching=is_searching linkurl="wagtailusers_index" %} +{% else %} + {% if is_searching %} +

Sorry, no users match "{{ search_query }}" + {% else %} +

There are no users configured. Why not add some?

+ {% endif %} +{% endif %} diff --git a/wagtail/wagtailusers/views/users.py b/wagtail/wagtailusers/views/users.py index cc35d249c..b871b14e3 100644 --- a/wagtail/wagtailusers/views/users.py +++ b/wagtail/wagtailusers/views/users.py @@ -3,15 +3,31 @@ from django.contrib.auth.models import User from django.contrib.auth.decorators import permission_required from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.contrib import messages +from django.db.models import Q +from wagtail.wagtailadmin.forms import SearchForm from wagtail.wagtailusers.forms import UserCreationForm, UserEditForm - @permission_required('auth.change_user') def index(request): + q = None p = request.GET.get("p", 1) + is_searching = False - users = User.objects.order_by('last_name', 'first_name') + if 'q' in request.GET: + form = SearchForm(request.GET, placeholder_suffix="users") + if form.is_valid(): + q = form.cleaned_data['q'] + + is_searching = True + users = User.objects.filter(Q(username__icontains=q) | Q(first_name__icontains=q) | Q(last_name__icontains=q) | Q(email__icontains=q)) + else: + form = SearchForm(placeholder_suffix="users") + + if not is_searching: + users = User.objects + + users = users.order_by('last_name', 'first_name') if 'ordering' in request.GET: ordering = request.GET['ordering'] @@ -31,11 +47,21 @@ def index(request): except EmptyPage: users = paginator.page(paginator.num_pages) - return render(request, 'wagtailusers/index.html', { - 'users': users, - 'ordering': ordering, - }) - + if request.is_ajax(): + return render(request, "wagtailusers/results.html", { + 'users': users, + 'is_searching': is_searching, + 'search_query': q, + 'ordering': ordering, + }) + else: + return render(request, "wagtailusers/index.html", { + 'search_form': form, + 'users': users, + 'is_searching': is_searching, + 'ordering': ordering, + 'search_query': q, + }) @permission_required('auth.change_user') def create(request):