Added email filter for users list

This commit is contained in:
Sebastian Henschel 2016-11-27 19:31:54 +01:00
parent ca6811fea0
commit c4fc479620
2 changed files with 27 additions and 4 deletions

View File

@ -8,21 +8,33 @@
<h1>Users</h1>
<div id="filter-role" class="filter">
Role:
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{ active_role_name }} <span class="caret"></span>
{% if active_role_name_all %}All Roles{% else %}{{ active_role_name }}{% endif %} <span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="?role_name=All">All</a></li>
<li><a href="?email={{ active_email }}&role_name=All">All Roles</a></li>
<li role="separator" class="divider"></li>
{% for role_name in role_names %}
<li><a href="?role_name={{ role_name }}">{{ role_name }}</a></li>
<li><a href="?email={{ active_email }}&role_name={{ role_name }}">{{ role_name }}</a></li>
{% endfor %}
</ul>
</div>
</div>
<div id="filter-email" class="filter">
<div class="btn-group">
<form action="" method="get">
<input type="hidden" name="role_name" value="{{ active_role_name }}" />
<div class="input-group">
<span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></span>
<input type="text" class="form-control" size="30" name="email" placeholder="Enter email address ..." value="{% if not active_email_all %}{{ active_email }}{% endif %}" />
</div>
</form>
</div>
</div>
<h2>Statistics</h2>
<ul id="statistics">
<li>Total number of users: {{ statistics.users_num }}

View File

@ -25,6 +25,15 @@ class FilterRoleName(BaseFilter):
class FilterEmail(BaseFilter):
"""Filter users by email address"""
filter_type = 'email'
def _apply(self, data, filter_value):
filtered = [x for x in data if x['email'].find(filter_value) != -1]
return filtered
class IndexView(LoginRequiredMixin, TemplateView):
"""Index view for users"""
template_name = "users/index.html"
@ -43,6 +52,8 @@ class IndexView(LoginRequiredMixin, TemplateView):
role_names.sort()
users = FilterRoleName(context, self.request.GET)\
.apply(users['users'])
users = FilterEmail(context, self.request.GET)\
.apply(users)
except APIError as err:
messages.error(self.request, err)